name: Release on: push: tags: - "v*" permissions: contents: write jobs: build: strategy: matrix: include: - target: aarch64-apple-darwin os: macos-latest name: ectf-tools-aarch64-apple-darwin - target: x86_64-apple-darwin os: macos-latest name: ectf-tools-x86_64-apple-darwin - target: x86_64-unknown-linux-musl os: ubuntu-latest name: ectf-tools-x86_64-unknown-linux-musl - target: aarch64-unknown-linux-musl os: ubuntu-latest name: ectf-tools-aarch64-unknown-linux-musl runs-on: ${{ matrix.os }} steps: - uses: actions/checkout@v4 - name: Install Rust uses: dtolnay/rust-toolchain@stable with: targets: ${{ matrix.target }} - name: Install cross-compilation tools if: contains(matrix.target, 'linux-musl') run: | sudo apt-get update sudo apt-get install -y musl-tools if [ "${{ matrix.target }}" = "aarch64-unknown-linux-musl" ]; then sudo apt-get install -y gcc-aarch64-linux-gnu fi - name: Build env: CARGO_TARGET_AARCH64_UNKNOWN_LINUX_MUSL_LINKER: aarch64-linux-gnu-gcc CC_aarch64_unknown_linux_musl: aarch64-linux-gnu-gcc run: cargo build --release --target ${{ matrix.target }} - name: Package run: | cd target/${{ matrix.target }}/release tar czf ../../../${{ matrix.name }}.tar.gz ectf-tools cd ../../.. - name: Upload artifact uses: actions/upload-artifact@v4 with: name: ${{ matrix.name }} path: ${{ matrix.name }}.tar.gz release: needs: build runs-on: ubuntu-latest steps: - name: Download artifacts uses: actions/download-artifact@v4 with: merge-multiple: true - name: Create release uses: softprops/action-gh-release@v2 with: generate_release_notes: true files: "*.tar.gz"