nodeget-agent-build #136
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: nodeget-agent-build | |
| on: | |
| workflow_dispatch: | |
| merge_group: | |
| pull_request: | |
| paths-ignore: | |
| - "docs/**" | |
| - "README.md" | |
| push: | |
| branches: | |
| - main | |
| - dev | |
| paths-ignore: | |
| - "docs/**" | |
| - "README.md" | |
| jobs: | |
| agent-release: | |
| name: Build - ${{ matrix.platform.release_for }} | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| platform: | |
| # x86_64 | |
| - release_for: linux_x86_64_musl | |
| target: x86_64-unknown-linux-musl | |
| binary_name: nodeget-agent-linux-x86_64-musl | |
| - release_for: linux_x86_64_gnu | |
| target: x86_64-unknown-linux-gnu | |
| binary_name: nodeget-agent-linux-x86_64-gnu | |
| # i686 | |
| - release_for: linux_i686_gnu | |
| target: i686-unknown-linux-gnu | |
| binary_name: nodeget-agent-linux-i686-gnu | |
| - release_for: linux_i686_musl | |
| target: i686-unknown-linux-musl | |
| binary_name: nodeget-agent-linux-i686-musl | |
| # aarch64 | |
| - release_for: linux_aarch64_gnu | |
| target: aarch64-unknown-linux-gnu | |
| binary_name: nodeget-agent-linux-aarch64-gnu | |
| - release_for: linux_aarch64_musl | |
| target: aarch64-unknown-linux-musl | |
| binary_name: nodeget-agent-linux-aarch64-musl | |
| # arm (generic) | |
| - release_for: linux_arm_gnueabi | |
| target: arm-unknown-linux-gnueabi | |
| binary_name: nodeget-agent-linux-arm-gnueabi | |
| - release_for: linux_arm_gnueabihf | |
| target: arm-unknown-linux-gnueabihf | |
| binary_name: nodeget-agent-linux-arm-gnueabihf | |
| - release_for: linux_arm_musleabi | |
| target: arm-unknown-linux-musleabi | |
| binary_name: nodeget-agent-linux-arm-musleabi | |
| - release_for: linux_arm_musleabihf | |
| target: arm-unknown-linux-musleabihf | |
| binary_name: nodeget-agent-linux-arm-musleabihf | |
| # armv7 | |
| - release_for: linux_armv7_gnueabi | |
| target: armv7-unknown-linux-gnueabi | |
| binary_name: nodeget-agent-linux-armv7-gnueabi | |
| - release_for: linux_armv7_gnueabihf | |
| target: armv7-unknown-linux-gnueabihf | |
| binary_name: nodeget-agent-linux-armv7-gnueabihf | |
| - release_for: linux_armv7_musleabi | |
| target: armv7-unknown-linux-musleabi | |
| binary_name: nodeget-agent-linux-armv7-musleabi | |
| - release_for: linux_armv7_musleabihf | |
| target: armv7-unknown-linux-musleabihf | |
| binary_name: nodeget-agent-linux-armv7-musleabihf | |
| # thumbv7neon (ARMv7 with NEON SIMD) | |
| - release_for: linux_thumbv7neon_gnueabihf | |
| target: thumbv7neon-unknown-linux-gnueabihf | |
| binary_name: nodeget-agent-linux-thumbv7neon-gnueabihf | |
| # riscv64 | |
| - release_for: linux_riscv64gc_gnu | |
| target: riscv64gc-unknown-linux-gnu | |
| binary_name: nodeget-agent-linux-riscv64gc-gnu | |
| no_upx: true | |
| # powerpc | |
| - release_for: linux_powerpc64_gnu | |
| target: powerpc64-unknown-linux-gnu | |
| binary_name: nodeget-agent-linux-powerpc64-gnu | |
| no_upx: true | |
| - release_for: linux_powerpc64le_gnu | |
| target: powerpc64le-unknown-linux-gnu | |
| binary_name: nodeget-agent-linux-powerpc64le-gnu | |
| no_upx: true | |
| # s390x (IBM Z) | |
| - release_for: linux_s390x_gnu | |
| target: s390x-unknown-linux-gnu | |
| binary_name: nodeget-agent-linux-s390x-gnu | |
| no_upx: true | |
| # sparc64 | |
| - release_for: linux_sparc64_gnu | |
| target: sparc64-unknown-linux-gnu | |
| binary_name: nodeget-agent-linux-sparc64-gnu | |
| no_upx: true | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| - name: Setup Rust | |
| uses: ./.github/actions/setup-system | |
| with: | |
| toolchain: stable | |
| components: clippy | |
| - name: Install Cross | |
| run: cargo install cross --git https://github.com/cross-rs/cross | |
| - name: Build binary | |
| working-directory: ./agent | |
| run: cargo clean && cross build --target ${{ matrix.platform.target }} --profile minimal --jobs 32 | |
| env: | |
| CROSS_NO_WARNINGS: 0 | |
| - name: Compress binary | |
| if: ${{ !matrix.platform.no_upx }} | |
| run: upx --brute ./target/${{ matrix.platform.target }}/minimal/nodeget-agent | |
| - name: Rename binary | |
| run: cp ./target/${{ matrix.platform.target }}/minimal/nodeget-agent ./target/${{ matrix.platform.target }}/minimal/${{ matrix.platform.binary_name }} | |
| - name: Upload binary | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: agent-${{ matrix.platform.target }} | |
| path: target/${{ matrix.platform.target }}/minimal/${{ matrix.platform.binary_name }} | |
| if-no-files-found: error | |
| release-dev: | |
| name: Release Dev | |
| needs: [ agent-release, agent-windows, agent-macos ] | |
| if: github.event_name == 'push' && github.ref == 'refs/heads/dev' | |
| runs-on: ubuntu-latest | |
| permissions: | |
| contents: write | |
| steps: | |
| - name: Download all artifacts | |
| uses: actions/download-artifact@v4 | |
| with: | |
| pattern: agent-* | |
| path: artifacts | |
| merge-multiple: true | |
| - name: Upload to dev release | |
| uses: softprops/action-gh-release@v2 | |
| with: | |
| tag_name: dev | |
| name: "Dev Build (Latest)" | |
| prerelease: true | |
| make_latest: false | |
| body: "Automated dev build from `${{ github.sha }}`" | |
| files: artifacts/* | |
| release-main: | |
| name: Release Main | |
| needs: [ agent-release, agent-windows, agent-macos ] | |
| if: github.event_name == 'push' && github.ref == 'refs/heads/main' | |
| runs-on: ubuntu-latest | |
| permissions: | |
| contents: write | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| - name: Get version from nodeget-lib | |
| id: version | |
| run: | | |
| VERSION=$(grep '^version' nodeget-lib/Cargo.toml | head -1 | sed 's/.*"\(.*\)"/\1/') | |
| echo "version=$VERSION" >> "$GITHUB_OUTPUT" | |
| echo "tag=v$VERSION" >> "$GITHUB_OUTPUT" | |
| - name: Download all artifacts | |
| uses: actions/download-artifact@v4 | |
| with: | |
| pattern: agent-* | |
| path: artifacts | |
| merge-multiple: true | |
| - name: Upload to release | |
| uses: softprops/action-gh-release@v2 | |
| with: | |
| tag_name: ${{ steps.version.outputs.tag }} | |
| name: "NodeGet ${{ steps.version.outputs.tag }}" | |
| make_latest: true | |
| files: artifacts/* | |
| agent-windows: | |
| name: Build - ${{ matrix.platform.release_for }} | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| platform: | |
| - release_for: windows_x86_64 | |
| target: x86_64-pc-windows-msvc | |
| binary_name: nodeget-agent-windows-x86_64.exe | |
| - release_for: windows_i686 | |
| target: i686-pc-windows-msvc | |
| binary_name: nodeget-agent-windows-i686.exe | |
| - release_for: windows_aarch64 | |
| target: aarch64-pc-windows-msvc | |
| binary_name: nodeget-agent-windows-aarch64.exe | |
| runs-on: windows-latest | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| - name: Setup Rust | |
| uses: dtolnay/rust-toolchain@master | |
| with: | |
| toolchain: stable | |
| targets: ${{ matrix.platform.target }} | |
| - name: Build binary | |
| working-directory: ./agent | |
| run: cargo build --target ${{ matrix.platform.target }} --profile minimal | |
| - name: Rename binary | |
| run: copy target\${{ matrix.platform.target }}\minimal\nodeget-agent.exe target\${{ matrix.platform.target }}\minimal\${{ matrix.platform.binary_name }} | |
| - name: Upload binary | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: agent-${{ matrix.platform.target }} | |
| path: target/${{ matrix.platform.target }}/minimal/${{ matrix.platform.binary_name }} | |
| if-no-files-found: error | |
| agent-macos: | |
| name: Build - ${{ matrix.platform.release_for }} | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| platform: | |
| - release_for: macos_aarch64 | |
| target: aarch64-apple-darwin | |
| binary_name: nodeget-agent-macos-aarch64 | |
| runner: macos-latest | |
| runs-on: ${{ matrix.platform.runner }} | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| - name: Setup Rust | |
| uses: dtolnay/rust-toolchain@master | |
| with: | |
| toolchain: stable | |
| targets: ${{ matrix.platform.target }} | |
| - name: Build binary | |
| working-directory: ./agent | |
| run: cargo build --target ${{ matrix.platform.target }} --profile minimal | |
| - name: Rename binary | |
| run: cp target/${{ matrix.platform.target }}/minimal/nodeget-agent target/${{ matrix.platform.target }}/minimal/${{ matrix.platform.binary_name }} | |
| - name: Upload binary | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: agent-${{ matrix.platform.target }} | |
| path: target/${{ matrix.platform.target }}/minimal/${{ matrix.platform.binary_name }} | |
| if-no-files-found: error |