From 83222791eb49629687453813e895bc68682a350b 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 | 67 +++++++++++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100644 .gitea/workflows/release.yaml diff --git a/.gitea/workflows/release.yaml b/.gitea/workflows/release.yaml new file mode 100644 index 0000000..b2af00c --- /dev/null +++ b/.gitea/workflows/release.yaml @@ -0,0 +1,67 @@ +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 + with: + targets: ${{ env.TARGET }} + + - name: Install llvm-tools / objcopy + run: rustup component add llvm-tools-preview + + - name: Build Firmware Binaries + run: | + cd firmware + + # Define the target features for each variant + declare -A VARIANTS=( + ["cs4398"]="cs4398,hid" + ["ak4490"]="ak4490,hid" + ["evk"]="evk,hid" + ) + + mkdir -p ../dist + + for name in "${!VARIANTS[@]}"; do + features="${VARIANTS[$name]}" + echo "Building variant: $name with features: $features" + + # 1. Compile release binary + cargo build --release --target ${{ env.TARGET }} --no-default-features --features "$features" + + # 2. Extract paths + 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 using llvm-objcopy from Rust tools + rust-objcopy -O ihex "$ELF_PATH" "$HEX_PATH" + cp "$ELF_PATH" "$RENAMED_ELF" + + # 4. Package ELF and HEX into a 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