name: build-service on: push: branches: [main] tags: ["v*"] jobs: build: name: Build ${{ matrix.target }} runs-on: ubuntu-latest strategy: matrix: include: - target: x86_64-unknown-linux-gnu use-cross: false - target: aarch64-unknown-linux-gnu use-cross: true steps: - name: Checkout repository uses: actions/checkout@v4 - name: Install Rust toolchain uses: dtolnay/rust-toolchain@stable with: targets: ${{ matrix.target }} - name: Install cross if: matrix.use-cross == true uses: taiki-e/install-action@v2 with: tool: cross - name: Build binary env: CROSS_CONTAINER_IN_CONTAINER: true run: | if [ "${{ matrix.use-cross }}" == "true" ]; then cross build --release --target ${{ matrix.target }} else cargo build --release --target ${{ matrix.target }} fi # Prepare binary for upload mkdir -p staging cp target/${{ matrix.target }}/release/escape_room_server staging/escape_room_server-${{ matrix.target }} - name: Upload artifacts (Internal) uses: actions/upload-artifact@v4 with: name: binary-${{ matrix.target }} path: staging/escape_room_server-${{ matrix.target }} release: name: Gitea Release needs: build # CRITICAL: This ensures the release job ONLY runs when you push a tag if: startsWith(github.ref, 'refs/tags/') runs-on: ubuntu-latest steps: - name: Download all artifacts uses: actions/download-artifact@v4 with: path: release-bins pattern: binary-* merge-multiple: true - name: Create Gitea Release # Using a Gitea-compatible release action uses: https://github.com/softprops/action-gh-release@v2 with: # Gitea uses the same 'GITHUB_TOKEN' secret name by default token: ${{ secrets.GITHUB_TOKEN }} files: release-bins/* draft: false prerelease: false generate_release_notes: true