From 717900e60ed560241e0a971a1be5d75938c889d2 Mon Sep 17 00:00:00 2001 From: Keenan Tims Date: Wed, 26 Aug 2026 14:40:15 -0700 Subject: [PATCH] add gitea workflow --- .gitea/workflows/release.yaml | 62 +++++++++++++++++++++++++++++++++++ firmware/rust-toolchain.toml | 4 +++ 2 files changed, 66 insertions(+) create mode 100644 .gitea/workflows/release.yaml create mode 100644 firmware/rust-toolchain.toml diff --git a/.gitea/workflows/release.yaml b/.gitea/workflows/release.yaml new file mode 100644 index 0000000..8f90deb --- /dev/null +++ b/.gitea/workflows/release.yaml @@ -0,0 +1,62 @@ +name: Build and Release Firmware + +on: + push: + tags: + - "v*" + +env: + TARGET: thumbv8m.main-none-eabihf + +jobs: + build-and-release: + runs-on: ubuntu-latest + container: + image: catthehacker/ubuntu:act-latest + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Install Rust Toolchain + uses: dtolnay/rust-toolchain@stable + + - name: Build Firmware Binaries + run: | + cd firmware + + # Array of "variant_name:features" + VARIANTS=( + "cs4398:cs4398,hid" + "ak4490:ak4490,hid" + "evk:evk,hid" + ) + + mkdir -p ../dist + + for entry in "${VARIANTS[@]}"; do + IFS=":" read -r name features <<< "$entry" + echo "Building variant: $name with features: $features" + + # 1. Compile release binary + cargo build --release --target ${{ env.TARGET }} --no-default-features --features "$features" + + # 2. Paths setup + ELF_PATH="../target/${{ env.TARGET }}/release/guac" + HEX_PATH="../target/${{ env.TARGET }}/release/guac-${name}.hex" + RENAMED_ELF="../target/${{ env.TARGET }}/release/guac-${name}.elf" + + # 3. Create .hex file via rust-objcopy + rust-objcopy -O ihex "$ELF_PATH" "$HEX_PATH" + cp "$ELF_PATH" "$RENAMED_ELF" + + # 4. Package ELF and HEX into target-specific ZIP + ZIP_NAME="guac-firmware-${name}.zip" + zip -j "../dist/${ZIP_NAME}" "$RENAMED_ELF" "$HEX_PATH" + done + + - name: Create Gitea Release + uses: akkuman/gitea-release-action@v1 + with: + files: dist/*.zip + draft: false + prerelease: false diff --git a/firmware/rust-toolchain.toml b/firmware/rust-toolchain.toml new file mode 100644 index 0000000..9a4e100 --- /dev/null +++ b/firmware/rust-toolchain.toml @@ -0,0 +1,4 @@ +[toolchain] +channel = "1.95.0" +targets = ["thumbv8m.main-none-eabihf"] +components = ["llvm-tools-preview"]