name: Build Release on: push: branches: [main, "release-*"] pull_request: branches: [ "main" ] env: CARGO_TERM_COLOR: always jobs: build_serial_and_check: strategy: matrix: platform: - name: ubuntu-24 os: ubuntu-latest target: x86_64-unknown-linux-musl - name: ubuntu-24-aarch64 os: ubuntu-24.04-arm target: aarch64-unknown-linux-musl - name: macos-arm os: macos-latest target: aarch64-apple-darwin - name: macos-intel os: macos-13 target: x86_64-apple-darwin - name: windows-x86_64 os: windows-latest target: x86_64-pc-windows-gnu runs-on: ${{ matrix.platform.os }} steps: - uses: actions/checkout@v4 - uses: dtolnay/rust-toolchain@stable with: targets: ${{ matrix.platform.target }} - name: Build serial run: cargo build --bin serial --release --target ${{ matrix.platform.target }} - uses: actions/upload-artifact@v4 with: name: serial-${{ matrix.platform.name }} path: target/${{ matrix.platform.target }}/release/serial${{ matrix.platform.os == 'windows-latest' && '.exe' || '' }} if-no-files-found: error - uses: actions/checkout@v4 - name: Build check run: cargo build --bin rayhunter-check --release - uses: actions/upload-artifact@v4 with: name: rayhunter-check-${{ matrix.platform.name }} path: target/release/rayhunter-check${{ matrix.platform.os == 'windows-latest' && '.exe' || '' }} if-no-files-found: error build_rootshell: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: dtolnay/rust-toolchain@stable with: targets: armv7-unknown-linux-gnueabihf - name: Install cross-compilation dependencies uses: awalsh128/cache-apt-pkgs-action@latest with: packages: build-essential libc6-armhf-cross libc6-dev-armhf-cross gcc-arm-linux-gnueabihf version: 1.0 - name: Build rootshell (arm32) run: cargo build --bin rootshell --target armv7-unknown-linux-gnueabihf --release - uses: actions/upload-artifact@v4 with: name: rootshell path: target/armv7-unknown-linux-gnueabihf/release/rootshell if-no-files-found: error build_rayhunter: strategy: matrix: device: - name: tplink - name: orbic runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: dtolnay/rust-toolchain@stable with: targets: armv7-unknown-linux-gnueabihf - name: Install cross-compilation dependencies uses: awalsh128/cache-apt-pkgs-action@latest with: packages: build-essential libc6-armhf-cross libc6-dev-armhf-cross gcc-arm-linux-gnueabihf version: 1.0 - name: Build rayhunter-daemon (arm32) run: cargo build --bin rayhunter-daemon --target armv7-unknown-linux-gnueabihf --release --no-default-features --features ${{ matrix.device.name }} - uses: actions/upload-artifact@v4 with: name: rayhunter-daemon-${{ matrix.device.name }} path: target/armv7-unknown-linux-gnueabihf/release/rayhunter-daemon if-no-files-found: error build_release_zip: needs: - build_serial_and_check - build_rootshell - build_rayhunter runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: actions/download-artifact@v4 - name: Fix executable permissions on binaries run: chmod +x serial-*/serial rayhunter-check-*/rayhunter-check rayhunter-daemon-*/rayhunter-daemon - name: Setup release directory run: mv rayhunter-daemon-* rootshell/rootshell serial-* dist - name: Archive release directory run: tar -cvf release.tar -C dist . # TODO: have this create a release directly - name: Upload release uses: actions/upload-artifact@v4 with: name: release.tar path: release.tar if-no-files-found: error