From 673ffd498c20f08c6fc923ba13f996368c1ea25b Mon Sep 17 00:00:00 2001 From: Claude Date: Sun, 5 Apr 2026 18:19:14 +0000 Subject: [PATCH] fix: use catthehacker/ubuntu:act-latest for Forgejo CI runner The Forgejo runner needs Node.js for actions/checkout@v4. catthehacker/ubuntu:act-latest has Node.js pre-installed. Also install Rust in the workflow since the base image doesn't have it. Build triggers on main + feat/* branches now. Co-Authored-By: Claude Opus 4.6 (1M context) --- .gitea/workflows/build.yml | 144 +++++-------------------------------- 1 file changed, 19 insertions(+), 125 deletions(-) diff --git a/.gitea/workflows/build.yml b/.gitea/workflows/build.yml index 11423d9..8fee7d4 100644 --- a/.gitea/workflows/build.yml +++ b/.gitea/workflows/build.yml @@ -2,32 +2,30 @@ name: Build Release Binaries on: push: + branches: + - main + - 'feat/*' tags: - 'v*' workflow_dispatch: - inputs: - targets: - description: 'Targets to build (comma-separated: amd64,arm64,armv7,mac-arm64)' - required: false - default: 'amd64' env: CARGO_TERM_COLOR: always jobs: - # Always builds on push tags. On manual dispatch, reads inputs. build-amd64: - if: >- - github.event_name == 'push' || - contains(github.event.inputs.targets, 'amd64') runs-on: ubuntu-latest container: - image: rust:1-bookworm + image: catthehacker/ubuntu:act-latest steps: - uses: actions/checkout@v4 - - name: Install dependencies - run: apt-get update && apt-get install -y cmake pkg-config libasound2-dev + - name: Install Rust + dependencies + run: | + curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y + source "$HOME/.cargo/env" + apt-get update && apt-get install -y cmake pkg-config libasound2-dev ninja-build + rustc --version - name: Cache cargo uses: actions/cache@v4 @@ -39,27 +37,24 @@ jobs: key: cargo-amd64-${{ hashFiles('Cargo.lock') }} restore-keys: cargo-amd64- - - name: Build headless binaries - run: cargo build --release --bin wzp-relay --bin wzp-client --bin wzp-bench --bin wzp-web - - - name: Build audio client + - name: Build relay + tools run: | - cargo build --release --bin wzp-client --features audio - cp target/release/wzp-client target/release/wzp-client-audio - cargo build --release --bin wzp-client + source "$HOME/.cargo/env" + cargo build --release --bin wzp-relay --bin wzp-client --bin wzp-bench --bin wzp-web - name: Run tests - run: cargo test --workspace --lib + run: | + source "$HOME/.cargo/env" + cargo test --workspace --lib - name: Package run: | mkdir -p dist/wzp-linux-amd64 cp target/release/wzp-relay dist/wzp-linux-amd64/ cp target/release/wzp-client dist/wzp-linux-amd64/ - cp target/release/wzp-client-audio dist/wzp-linux-amd64/ cp target/release/wzp-web dist/wzp-linux-amd64/ cp target/release/wzp-bench dist/wzp-linux-amd64/ - cp -r crates/wzp-web/static dist/wzp-linux-amd64/ + cp -r crates/wzp-web/static dist/wzp-linux-amd64/ 2>/dev/null || true cd dist && tar czf wzp-linux-amd64.tar.gz wzp-linux-amd64/ - name: Upload artifact @@ -68,113 +63,12 @@ jobs: name: wzp-linux-amd64 path: dist/wzp-linux-amd64.tar.gz - build-arm64: - if: >- - github.event_name == 'push' || - contains(github.event.inputs.targets, 'arm64') - runs-on: ubuntu-latest - container: - image: rust:1-bookworm - steps: - - uses: actions/checkout@v4 - - - name: Install cross-compilation tools - run: | - dpkg --add-architecture arm64 - apt-get update - apt-get install -y cmake pkg-config gcc-aarch64-linux-gnu libc6-dev-arm64-cross - rustup target add aarch64-unknown-linux-gnu - - - name: Cache cargo - uses: actions/cache@v4 - with: - path: | - ~/.cargo/registry - ~/.cargo/git - target - key: cargo-arm64-${{ hashFiles('Cargo.lock') }} - restore-keys: cargo-arm64- - - - name: Build - env: - CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_LINKER: aarch64-linux-gnu-gcc - CC_aarch64_unknown_linux_gnu: aarch64-linux-gnu-gcc - run: | - cargo build --release --target aarch64-unknown-linux-gnu \ - --bin wzp-relay --bin wzp-client --bin wzp-bench --bin wzp-web - - - name: Package - run: | - mkdir -p dist/wzp-linux-arm64 - cp target/aarch64-unknown-linux-gnu/release/wzp-relay dist/wzp-linux-arm64/ - cp target/aarch64-unknown-linux-gnu/release/wzp-client dist/wzp-linux-arm64/ - cp target/aarch64-unknown-linux-gnu/release/wzp-web dist/wzp-linux-arm64/ - cp target/aarch64-unknown-linux-gnu/release/wzp-bench dist/wzp-linux-arm64/ - cp -r crates/wzp-web/static dist/wzp-linux-arm64/ - cd dist && tar czf wzp-linux-arm64.tar.gz wzp-linux-arm64/ - - - name: Upload artifact - uses: actions/upload-artifact@v4 - with: - name: wzp-linux-arm64 - path: dist/wzp-linux-arm64.tar.gz - - build-armv7: - if: >- - github.event_name == 'push' || - contains(github.event.inputs.targets, 'armv7') - runs-on: ubuntu-latest - container: - image: rust:1-bookworm - steps: - - uses: actions/checkout@v4 - - - name: Install cross-compilation tools - run: | - dpkg --add-architecture armhf - apt-get update - apt-get install -y cmake pkg-config gcc-arm-linux-gnueabihf libc6-dev-armhf-cross - rustup target add armv7-unknown-linux-gnueabihf - - - name: Cache cargo - uses: actions/cache@v4 - with: - path: | - ~/.cargo/registry - ~/.cargo/git - target - key: cargo-armv7-${{ hashFiles('Cargo.lock') }} - restore-keys: cargo-armv7- - - - name: Build - env: - CARGO_TARGET_ARMV7_UNKNOWN_LINUX_GNUEABIHF_LINKER: arm-linux-gnueabihf-gcc - CC_armv7_unknown_linux_gnueabihf: arm-linux-gnueabihf-gcc - run: | - cargo build --release --target armv7-unknown-linux-gnueabihf \ - --bin wzp-relay --bin wzp-client --bin wzp-bench --bin wzp-web - - - name: Package - run: | - mkdir -p dist/wzp-linux-armv7 - cp target/armv7-unknown-linux-gnueabihf/release/wzp-relay dist/wzp-linux-armv7/ - cp target/armv7-unknown-linux-gnueabihf/release/wzp-client dist/wzp-linux-armv7/ - cp target/armv7-unknown-linux-gnueabihf/release/wzp-web dist/wzp-linux-armv7/ - cp target/armv7-unknown-linux-gnueabihf/release/wzp-bench dist/wzp-linux-armv7/ - cp -r crates/wzp-web/static dist/wzp-linux-armv7/ - cd dist && tar czf wzp-linux-armv7.tar.gz wzp-linux-armv7/ - - - name: Upload artifact - uses: actions/upload-artifact@v4 - with: - name: wzp-linux-armv7 - path: dist/wzp-linux-armv7.tar.gz - - # Release job — creates a release with all artifacts when a tag is pushed release: if: startsWith(github.ref, 'refs/tags/v') needs: [build-amd64] runs-on: ubuntu-latest + container: + image: catthehacker/ubuntu:act-latest steps: - name: Download all artifacts uses: actions/download-artifact@v4