bump version #5
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: Release fault Binaries | |
| permissions: | |
| contents: write | |
| on: | |
| push: | |
| branches: | |
| - release | |
| paths: | |
| - 'Cargo.toml' | |
| - '.github/workflows/release.yaml' | |
| jobs: | |
| extract-version: | |
| runs-on: ubuntu-24.04 | |
| outputs: | |
| version: ${{ steps.extract.outputs.version }} | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| fetch-depth: 0 | |
| - name: Create fault release | |
| id: extract | |
| run: | | |
| v=$(sed -n 's/^version\s*=\s*"\([^"]*\)".*/\1/p' Cargo.toml) | |
| echo "version=$v" >> "$GITHUB_OUTPUT" | |
| create-the-release: | |
| needs: | |
| - extract-version | |
| runs-on: ubuntu-24.04 | |
| outputs: | |
| rel_tag: ${{ steps.create.outputs.reltag }} | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| fetch-depth: 0 | |
| - name: Create fault release | |
| id: create | |
| run: | | |
| rel_url=$(gh release create ${FAULT_VERSION} -d --notes-file CHANGELOG.md --latest=false --generate-notes) | |
| tag="${rel_url##*/}" | |
| echo "reltag=$tag" >> "$GITHUB_OUTPUT" | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| FAULT_VERSION: ${{needs.extract-version.outputs.version}} | |
| tag-release: | |
| needs: | |
| - extract-version | |
| - build-and-upload-docker-images | |
| - build-and-upload-docker-ebpf-images | |
| runs-on: ubuntu-24.04 | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| fetch-depth: 0 | |
| - name: Release -> tag ${{needs.extract-version.outputs.version}} | |
| env: | |
| VERSION: ${{needs.extract-version.outputs.version}} | |
| run: | | |
| git config user.name 'github-actions[bot]' | |
| git config user.email 'github-actions[bot]@users.noreply.github.com' | |
| git tag -f -a ${VERSION} -F CHANGELOG.md | |
| git push -f origin ${VERSION} | |
| promote-the-release: | |
| needs: | |
| - extract-version | |
| - publish-crates | |
| - publish-ebpf-crates | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| fetch-depth: 0 | |
| - name: Promote fault release | |
| run: | | |
| gh release edit "$VERSION" --latest=true --draft=false --tag="$VERSION" | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| VERSION: ${{needs.extract-version.outputs.version}} | |
| build-and-upload-assets: | |
| needs: | |
| - extract-version | |
| - create-the-release | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| include: | |
| - target: aarch64-apple-darwin | |
| os: macos-latest | |
| artifact_name: fault | |
| asset_name: fault-cli | |
| - target: x86_64-apple-darwin | |
| os: macos-latest | |
| artifact_name: fault | |
| asset_name: fault-cli | |
| - target: x86_64-unknown-linux-gnu | |
| os: ubuntu-24.04 | |
| artifact_name: fault | |
| asset_name: fault-cli | |
| - target: x86_64-unknown-linux-musl | |
| os: ubuntu-24.04 | |
| artifact_name: fault | |
| asset_name: fault-cli | |
| - target: aarch64-unknown-linux-musl | |
| os: ubuntu-24.04 | |
| artifact_name: fault | |
| asset_name: fault-cli | |
| - target: aarch64-unknown-linux-gnu | |
| os: ubuntu-24.04 | |
| artifact_name: fault | |
| asset_name: fault-cli | |
| - target: x86_64-pc-windows-msvc | |
| os: windows-latest | |
| artifact_name: fault.exe | |
| asset_name: fault-cli | |
| name: Build workspace on ${{ matrix.os }} / ${{ matrix.target }} | |
| runs-on: ${{ matrix.os }} | |
| env: | |
| CARGO_TERM_COLOR: always | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| fetch-depth: 0 | |
| - run: | | |
| rustup target add ${{ matrix.target }} | |
| rustup toolchain install nightly --component rust-src -t ${{ matrix.target }} | |
| rustup update nightly | |
| rustup override set nightly | |
| - uses: Swatinem/rust-cache@v2 | |
| with: | |
| prefix-key: fault | |
| shared-key: ${{ github.job }}-${{ matrix.target }} | |
| workspaces: | | |
| fault | |
| - name: Install musl dependencies (Linux) | |
| if: matrix.target == 'x86_64-unknown-linux-musl' || matrix.target == 'aarch64-unknown-linux-musl' | |
| run: | | |
| sudo apt update | |
| sudo apt install -y musl-dev musl-tools | |
| - name: Install aarch64 dependencies (Linux) | |
| if: matrix.target == 'aarch64-unknown-linux-gnu' | |
| run: | | |
| sudo apt update | |
| sudo apt install -y g++-aarch64-linux-gnu gcc-aarch64-linux-gnu lld | |
| - name: Install gRPC build dependencies (Linux) | |
| if: matrix.os == 'ubuntu-24.04' | |
| run: | | |
| sudo apt update | |
| sudo apt install -y protobuf-compiler libssl-dev | |
| - name: Install gRPC build dependencies (Windows) | |
| if: matrix.os == 'windows-latest' | |
| run: | | |
| choco install protoc --pre -y | |
| - name: Install gRPC build dependencies (MacOSX) | |
| if: matrix.os == 'macos-latest' | |
| run: | | |
| brew install protobuf | |
| - name: Install zig | |
| if: matrix.target == 'x86_64-unknown-linux-musl' || matrix.target == 'aarch64-unknown-linux-musl' | |
| uses: mlugg/setup-zig@v2 | |
| - name: Install cargo zigbuild | |
| if: matrix.target == 'x86_64-unknown-linux-musl' || matrix.target == 'aarch64-unknown-linux-musl' | |
| run: cargo install --locked cargo-zigbuild | |
| - name: Build Linux/MacOSX (shared) | |
| if: matrix.os != 'windows-latest' && matrix.target != 'x86_64-unknown-linux-musl' && matrix.target != 'aarch64-unknown-linux-musl' | |
| run: cargo +nightly build --release --features agent --target ${{ matrix.target }} | |
| working-directory: ./fault-cli | |
| - name: Build Windows (shared) | |
| if: matrix.os == 'windows-latest' | |
| run: cargo +nightly build --release --target ${{ matrix.target }} | |
| working-directory: ./fault-cli | |
| - name: Build (static) | |
| if: matrix.target == 'x86_64-unknown-linux-musl' || matrix.target == 'aarch64-unknown-linux-musl' | |
| run: cargo +nightly zigbuild --release --target ${{ matrix.target }} | |
| working-directory: ./fault-cli | |
| - name: Upload binaries to release | |
| if: matrix.os != 'windows-latest' | |
| uses: svenstaro/upload-release-action@v2 | |
| with: | |
| promote: false | |
| repo_token: ${{ secrets.GITHUB_TOKEN }} | |
| file: target/${{ matrix.target }}/release/${{ matrix.artifact_name }} | |
| asset_name: ${{ matrix.asset_name }}-${{needs.extract-version.outputs.version}}-${{ matrix.target }} | |
| tag: ${{needs.create-the-release.outputs.rel_tag}} | |
| - name: Upload binaries to release | |
| if: matrix.os == 'windows-latest' | |
| uses: svenstaro/upload-release-action@v2 | |
| env: | |
| RELEASE_TAG: ${{needs.create-the-release.outputs.rel_tag}} | |
| with: | |
| promote: false | |
| repo_token: ${{ secrets.GITHUB_TOKEN }} | |
| file: target/${{ matrix.target }}/release/${{ matrix.artifact_name }} | |
| asset_name: ${{ matrix.asset_name }}-${{needs.extract-version.outputs.version}}-${{ matrix.target }}.exe | |
| tag: ${{needs.create-the-release.outputs.rel_tag}} | |
| - name: Prepare assets (x86_64) | |
| if: matrix.os == 'ubuntu-24.04' && matrix.target == 'x86_64-unknown-linux-musl' | |
| run: | | |
| mkdir -p ${TARGET_DIR} | |
| cp target/${{ matrix.target }}/release/${{ matrix.artifact_name }} ${TARGET_DIR} | |
| env: | |
| TARGET_DIR: fault-cli-${{needs.extract-version.outputs.version}}-amd64 | |
| - name: Prepare assets (aarch64) | |
| if: matrix.os == 'ubuntu-24.04' && matrix.target == 'aarch64-unknown-linux-musl' | |
| run: | | |
| mkdir -p ${TARGET_DIR} | |
| cp target/${{ matrix.target }}/release/${{ matrix.artifact_name }} ${TARGET_DIR} | |
| env: | |
| TARGET_DIR: fault-cli-${{needs.extract-version.outputs.version}}-arm64 | |
| - name: Archive fault CLI (x86_64) | |
| if: matrix.os == 'ubuntu-24.04' && matrix.target == 'x86_64-unknown-linux-musl' | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: fault-cli-${{needs.extract-version.outputs.version}}-amd64 | |
| path: fault-cli-${{needs.extract-version.outputs.version}}-amd64 | |
| - name: Archive fault CLI (aarch64) | |
| if: matrix.os == 'ubuntu-24.04' && matrix.target == 'aarch64-unknown-linux-musl' | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: fault-cli-${{needs.extract-version.outputs.version}}-arm64 | |
| path: fault-cli-${{needs.extract-version.outputs.version}}-arm64 | |
| build-and-upload-ebpf-assets: | |
| needs: | |
| - extract-version | |
| - create-the-release | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| include: | |
| - target: x86_64-unknown-linux-gnu | |
| os: ubuntu-24.04 | |
| artifact_name: fault | |
| - target: aarch64-unknown-linux-gnu | |
| os: ubuntu-24.04 | |
| artifact_name: fault | |
| - target: x86_64-unknown-linux-musl | |
| os: ubuntu-24.04 | |
| artifact_name: fault | |
| - target: aarch64-unknown-linux-musl | |
| os: ubuntu-24.04 | |
| artifact_name: fault | |
| name: Build ebpf workspace on ${{ matrix.os }} / ${{ matrix.target }} | |
| runs-on: ${{ matrix.os }} | |
| env: | |
| CARGO_TERM_COLOR: always | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| fetch-depth: 0 | |
| - run: | | |
| rustup target add ${{ matrix.target }} | |
| rustup toolchain install nightly --component rust-src -t ${{ matrix.target }} | |
| rustup update nightly | |
| rustup override set nightly | |
| - uses: Swatinem/rust-cache@v2 | |
| with: | |
| prefix-key: fault | |
| shared-key: ${{ github.job }}-${{ matrix.target }} | |
| workspaces: | | |
| fault | |
| - name: Install aarch64 dependencies (Linux) | |
| if: matrix.target == 'aarch64-unknown-linux-gnu' | |
| run: | | |
| sudo apt-get update | |
| sudo apt install -y gcc-aarch64-linux-gnu lld | |
| - name: Install gRPC build dependencies (Linux) | |
| if: matrix.os == 'ubuntu-24.04' | |
| run: | | |
| sudo apt-get update | |
| sudo apt install -y protobuf-compiler libssl-dev | |
| - name: Install zig | |
| if: matrix.target == 'x86_64-unknown-linux-musl' || matrix.target == 'aarch64-unknown-linux-musl' | |
| uses: mlugg/setup-zig@v2 | |
| - name: Install cargo zigbuild | |
| if: matrix.target == 'x86_64-unknown-linux-musl' || matrix.target == 'aarch64-unknown-linux-musl' | |
| run: cargo install --locked cargo-zigbuild | |
| - name: Build (shared) | |
| if: matrix.target != 'x86_64-unknown-linux-musl' && matrix.target != 'aarch64-unknown-linux-musl' | |
| run: | | |
| cargo install bpf-linker --git https://github.com/aya-rs/bpf-linker.git | |
| cargo +nightly build --release --features stealth --target ${{ matrix.target }} | |
| cargo +nightly build \ | |
| --release \ | |
| -p fault-ebpf-programs \ | |
| --target=bpfel-unknown-none \ | |
| -Z build-std=core | |
| working-directory: ./fault-cli | |
| - name: Build (static) | |
| if: matrix.target == 'x86_64-unknown-linux-musl' || matrix.target == 'aarch64-unknown-linux-musl' | |
| run: | | |
| cargo install bpf-linker --git https://github.com/aya-rs/bpf-linker.git | |
| cargo +nightly zigbuild --release --features stealth --target ${{ matrix.target }} | |
| cargo +nightly build \ | |
| --release \ | |
| -p fault-ebpf-programs \ | |
| --target=bpfel-unknown-none \ | |
| -Z build-std=core | |
| working-directory: ./fault-cli | |
| - name: Upload fault CLI with ebpf support to release | |
| uses: svenstaro/upload-release-action@v2 | |
| with: | |
| promote: false | |
| repo_token: ${{ secrets.GITHUB_TOKEN }} | |
| file: target/${{ matrix.target }}/release/${{ matrix.artifact_name }} | |
| asset_name: fault-cli-ebpf-${{needs.extract-version.outputs.version}}-${{ matrix.target }} | |
| tag: ${{needs.create-the-release.outputs.rel_tag}} | |
| - name: Upload ebpf programs to release | |
| if: matrix.os == 'ubuntu-24.04' | |
| uses: svenstaro/upload-release-action@v2 | |
| with: | |
| promote: false | |
| repo_token: ${{ secrets.GITHUB_TOKEN }} | |
| file: target/bpfel-unknown-none/release/fault-ebpf | |
| asset_name: fault-ebpf-programs-${{needs.extract-version.outputs.version}}-${{ matrix.target }} | |
| tag: ${{needs.create-the-release.outputs.rel_tag}} | |
| - name: Prepare assets (x86_64) | |
| if: matrix.os == 'ubuntu-24.04' && matrix.target == 'x86_64-unknown-linux-musl' | |
| run: | | |
| mkdir -p ${TARGET_DIR} | |
| cp target/${{ matrix.target }}/release/${{ matrix.artifact_name }} ${TARGET_DIR} | |
| cp target/bpfel-unknown-none/release/fault-ebpf ${TARGET_DIR} | |
| env: | |
| TARGET_DIR: fault-ebpf-${{needs.extract-version.outputs.version}}-amd64 | |
| - name: Prepare assets (aarch64) | |
| if: matrix.os == 'ubuntu-24.04' && matrix.target == 'aarch64-unknown-linux-musl' | |
| run: | | |
| mkdir -p ${TARGET_DIR} | |
| cp target/${{ matrix.target }}/release/${{ matrix.artifact_name }} ${TARGET_DIR} | |
| cp target/bpfel-unknown-none/release/fault-ebpf ${TARGET_DIR} | |
| env: | |
| TARGET_DIR: fault-ebpf-${{needs.extract-version.outputs.version}}-arm64 | |
| - name: Archive fault CLI (x86_64) | |
| if: matrix.os == 'ubuntu-24.04' && matrix.target == 'x86_64-unknown-linux-musl' | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: fault-ebpf-${{needs.extract-version.outputs.version}}-amd64 | |
| path: fault-ebpf-${{needs.extract-version.outputs.version}}-amd64 | |
| - name: Archive fault CLI (aarch64) | |
| if: matrix.os == 'ubuntu-24.04' && matrix.target == 'aarch64-unknown-linux-musl' | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: fault-ebpf-${{needs.extract-version.outputs.version}}-arm64 | |
| path: fault-ebpf-${{needs.extract-version.outputs.version}}-arm64 | |
| build-and-upload-docker-images: | |
| needs: | |
| - extract-version | |
| - build-and-upload-assets | |
| runs-on: ubuntu-24.04 | |
| permissions: | |
| contents: read | |
| packages: write | |
| attestations: write | |
| id-token: write | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| with: | |
| fetch-depth: 0 | |
| - name: Set up QEMU | |
| uses: docker/setup-qemu-action@v3 | |
| - name: Set up Docker Buildx | |
| uses: docker/setup-buildx-action@v3 | |
| - name: Login to GitHub Container Registry | |
| uses: docker/login-action@v3 | |
| with: | |
| registry: ghcr.io | |
| username: ${{ github.repository_owner }} | |
| password: ${{ secrets.GITHUB_TOKEN }} | |
| - name: Set up Docker meta | |
| id: meta | |
| uses: docker/metadata-action@v5 | |
| with: | |
| images: ghcr.io/fault-project/fault-cli | |
| tags: | | |
| type=semver,pattern={{version}},value=${{needs.extract-version.outputs.version}} | |
| - name: Download fault built assets | |
| uses: actions/download-artifact@v4 | |
| with: | |
| path: fault-assets | |
| pattern: fault-cli-${{needs.extract-version.outputs.version}}-* | |
| - name: Display structure of downloaded files | |
| run: ls -R fault-assets | |
| - name: Build and push fault CLI | |
| uses: docker/build-push-action@v6 | |
| with: | |
| context: "." | |
| file: "./deploy/docker/Dockerfile_from_release" | |
| push: ${{ github.event_name != 'pull_request' }} | |
| tags: ${{ steps.meta.outputs.tags }} | |
| labels: ${{ steps.meta.outputs.labels }} | |
| sbom: true | |
| github-token: ${{ secrets.GITHUB_TOKEN }} | |
| platforms: linux/amd64, linux/arm64 | |
| build-args: | | |
| CLI_PREFIX_PATH=fault-assets/fault-cli-${{needs.extract-version.outputs.version}} | |
| build-and-upload-docker-ebpf-images: | |
| needs: | |
| - extract-version | |
| - build-and-upload-ebpf-assets | |
| runs-on: ubuntu-24.04 | |
| permissions: | |
| contents: read | |
| packages: write | |
| attestations: write | |
| id-token: write | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| with: | |
| fetch-depth: 0 | |
| - name: Set up QEMU | |
| uses: docker/setup-qemu-action@v3 | |
| - name: Set up Docker Buildx | |
| uses: docker/setup-buildx-action@v3 | |
| - name: Login to GitHub Container Registry | |
| uses: docker/login-action@v3 | |
| with: | |
| registry: ghcr.io | |
| username: ${{ github.repository_owner }} | |
| password: ${{ secrets.GITHUB_TOKEN }} | |
| - name: Set up Docker meta | |
| id: meta | |
| uses: docker/metadata-action@v5 | |
| with: | |
| images: ghcr.io/fault-project/fault-cli | |
| flavor: | | |
| latest=false | |
| suffix=-stealth | |
| tags: | | |
| type=semver,pattern={{version}},value=${{needs.extract-version.outputs.version}} | |
| - name: Download fault built assets | |
| uses: actions/download-artifact@v4 | |
| with: | |
| path: fault-assets | |
| pattern: fault-ebpf-${{needs.extract-version.outputs.version}}-* | |
| - name: Display structure of downloaded files | |
| run: ls -R fault-assets | |
| - name: Build and push fault CLI | |
| uses: docker/build-push-action@v6 | |
| with: | |
| context: "." | |
| file: "./deploy/docker/Dockerfile_from_release_ebpf" | |
| push: ${{ github.event_name != 'pull_request' }} | |
| tags: ${{ steps.meta.outputs.tags }} | |
| labels: ${{ steps.meta.outputs.labels }} | |
| provenance: true | |
| sbom: true | |
| github-token: ${{ secrets.GITHUB_TOKEN }} | |
| platforms: linux/amd64, linux/arm64 | |
| build-args: | | |
| CLI_PREFIX_PATH=fault-assets/fault-ebpf-${{needs.extract-version.outputs.version}} | |
| EBPF_PREFIX_PATH=fault-assets/fault-ebpf-${{needs.extract-version.outputs.version}} | |
| publish-crates: | |
| environment: release | |
| needs: | |
| - tag-release | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| include: | |
| - target: x86_64-unknown-linux-gnu | |
| os: ubuntu-24.04 | |
| artifact_name: fault | |
| asset_name: fault-cli | |
| name: Publish workspace on ${{ matrix.os }} / ${{ matrix.target }} | |
| runs-on: ${{ matrix.os }} | |
| env: | |
| CARGO_TERM_COLOR: always | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| fetch-depth: 0 | |
| - run: | | |
| rustup target add ${{ matrix.target }} | |
| rustup toolchain install nightly --component rust-src -t ${{ matrix.target }} | |
| rustup update nightly | |
| rustup override set nightly | |
| - uses: Swatinem/rust-cache@v2 | |
| with: | |
| prefix-key: fault | |
| shared-key: ${{ github.job }}-${{ matrix.target }} | |
| workspaces: | | |
| fault | |
| - name: Publish fault CLI | |
| if: matrix.os == 'ubuntu-24.04' && matrix.target == 'x86_64-unknown-linux-gnu' | |
| working-directory: ./fault-cli | |
| run: | | |
| cargo publish --allow-dirty --no-verify --package fault-cli --token ${CRATES_TOKEN} | |
| env: | |
| CRATES_TOKEN: ${{ secrets.CARGO_REGISTRY_TOKEN }} | |
| publish-ebpf-crates: | |
| environment: release | |
| needs: | |
| - tag-release | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| include: | |
| - target: x86_64-unknown-linux-gnu | |
| os: ubuntu-24.04 | |
| name: Publish ebpf workspace on ${{ matrix.os }} / ${{ matrix.target }} | |
| runs-on: ${{ matrix.os }} | |
| env: | |
| CARGO_TERM_COLOR: always | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| fetch-depth: 0 | |
| - run: | | |
| rustup target add ${{ matrix.target }} | |
| rustup toolchain install nightly --component rust-src -t ${{ matrix.target }} | |
| rustup update nightly | |
| rustup override set nightly | |
| - uses: Swatinem/rust-cache@v2 | |
| with: | |
| prefix-key: fault | |
| shared-key: ${{ github.job }}-${{ matrix.target }} | |
| workspaces: | | |
| fault | |
| - name: Publish fault ebpf-programs | |
| if: matrix.os == 'ubuntu-24.04' && matrix.target == 'x86_64-unknown-linux-gnu' | |
| working-directory: ./fault-ebpf-programs | |
| run: | | |
| cargo publish --allow-dirty --no-verify --package fault-ebpf-programs --token ${CRATES_TOKEN} | |
| env: | |
| CRATES_TOKEN: ${{ secrets.CARGO_REGISTRY_TOKEN }} |