Shared groundwork: - paths.rs: folders for data, settings and downloads per system (Linux XDG unchanged, Windows %APPDATA%/%LOCALAPPDATA%, Android app folder) - Linux-only parts behind cfg: Wayland on-screen keyboard (osk/wayland.rs), display backend and app id, the vendored winit touch extensions - run_with(event_loop) so that other entry points can start the app Windows (#48): - cross-compiled with MinGW into a portable ink-notes_<version>_x86_64.exe (system DLLs only), no console window in release builds - file picker: user folders and drives; held notebook locks are detected (ERROR_LOCK_VIOLATION) - updater: replaces the running .exe via rename, active at the next start - octotablet panicking without the Tablet PC components no longer crashes the app - release: .exe built in CI and part of the signed checksums - all library tests pass under wine Android (#42): - android_main entry point, winit with android-native-activity, android_logger; octotablet and arboard left out there - cargo check and the cdylib build for aarch64-linux-android pass; the window surface does not follow the activity lifecycle yet Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
82 lines
2.7 KiB
YAML
82 lines
2.7 KiB
YAML
name: Build & Publish Release
|
|
|
|
on:
|
|
push:
|
|
tags:
|
|
- 'v*'
|
|
workflow_dispatch:
|
|
|
|
jobs:
|
|
release:
|
|
name: Build Packages & Publish to Gitea
|
|
# Hinweis zum Gitea act_runner:
|
|
# Standardmäßig 'ubuntu-latest'. Falls Ihr Runner unter einem anderen Label registriert ist
|
|
# (z. B. 'linux', 'ubuntu-24.04' oder 'host'), passen Sie dieses Label an.
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Checkout Repository
|
|
uses: actions/checkout@v4.2.2
|
|
|
|
- name: Install System Packaging Tools
|
|
run: |
|
|
export DEBIAN_FRONTEND=noninteractive
|
|
SUDO=""
|
|
if [ "$(id -u)" -ne 0 ]; then
|
|
if command -v sudo >/dev/null 2>&1; then
|
|
SUDO="sudo"
|
|
fi
|
|
fi
|
|
$SUDO apt-get update -y
|
|
$SUDO apt-get install -y --no-install-recommends \
|
|
build-essential \
|
|
pkg-config \
|
|
libx11-dev \
|
|
libxcursor-dev \
|
|
libxrandr-dev \
|
|
libxi-dev \
|
|
libxkbcommon-dev \
|
|
gcc-mingw-w64-x86-64 \
|
|
squashfs-tools \
|
|
dpkg-dev \
|
|
curl \
|
|
python3
|
|
|
|
- name: Setup Rust Toolchain
|
|
uses: actions-rust-lang/setup-rust-toolchain@v1.11.0
|
|
with:
|
|
toolchain: stable
|
|
# Die Action installiert mit --profile minimal; ohne diese Komponenten
|
|
# schlagen cargo fmt und cargo clippy in den Quality Gates sofort fehl
|
|
components: rustfmt, clippy
|
|
cache: true
|
|
# No global -D warnings: it would also apply to the vendored winit (vendor/winit),
|
|
# which is built as a path dependency. The quality gates run clippy with -D warnings.
|
|
rustflags: ""
|
|
|
|
- name: Install rsign2 (Release-Signatur)
|
|
# RUSTFLAGS leeren: die Toolchain-Action setzt -D warnings, das soll nicht für rsign2 gelten
|
|
run: RUSTFLAGS="" cargo install rsign2 --locked --version 0.6.7
|
|
|
|
- name: Code Quality & Testing (Quality Gates)
|
|
run: |
|
|
cargo fmt --check
|
|
cargo clippy --all-targets -- -D warnings
|
|
cargo test
|
|
|
|
- name: Build Release Artifacts (.deb, .AppImage, .exe, SHA256SUMS.txt + .minisig)
|
|
run: |
|
|
chmod +x scripts/*.sh
|
|
./scripts/build-release.sh
|
|
env:
|
|
MINISIGN_SECRET_KEY: ${{ secrets.MINISIGN_SECRET_KEY }}
|
|
INK_NOTES_REQUIRE_SIGNATURE: "1"
|
|
|
|
- name: Publish Release to Gitea
|
|
run: |
|
|
./scripts/publish-gitea-release.sh
|
|
env:
|
|
GITEA_TOKEN: ${{ secrets.GITEA_TOKEN || secrets.GITHUB_TOKEN }}
|
|
GITEA_SERVER: ${{ github.server_url }}
|
|
REPO_OWNER: ${{ github.repository_owner }}
|
|
REPO_NAME: ${{ github.event.repository.name }}
|