From bc361d69a15f97743aeb7f2200bfa08196a93620 Mon Sep 17 00:00:00 2001 From: Mykhailo Chalyi Date: Fri, 27 Mar 2026 21:14:16 +0000 Subject: [PATCH 1/3] feat(release): add prebuilt CLI binary builds and Homebrew formula Same pattern as everruns/everruns: release.yml dispatches cli-binaries.yml which builds for macOS (ARM64, x86_64) and Linux (x86_64), uploads tarballs with SHA256 checksums to the GitHub Release, then pushes a Homebrew formula to everruns/homebrew-tap. --- .github/workflows/cli-binaries.yml | 180 +++++++++++++++++++++++++++++ .github/workflows/release.yml | 9 ++ specs/008-release-process.md | 28 ++++- 3 files changed, 215 insertions(+), 2 deletions(-) create mode 100644 .github/workflows/cli-binaries.yml diff --git a/.github/workflows/cli-binaries.yml b/.github/workflows/cli-binaries.yml new file mode 100644 index 00000000..d6906f29 --- /dev/null +++ b/.github/workflows/cli-binaries.yml @@ -0,0 +1,180 @@ +# Prebuilt CLI binaries — dispatched by release.yml after GitHub Release is created. +# GITHUB_TOKEN-created releases don't trigger `release: published` (anti-recursion). +# The Release workflow dispatches this workflow explicitly, same pattern as everruns/everruns. +name: Publish CLI Binaries + +on: + workflow_dispatch: + inputs: + tag: + description: 'Release tag (e.g., v0.1.13)' + required: true + type: string + +permissions: + contents: write + +jobs: + build: + name: Build CLI (${{ matrix.target }}) + runs-on: ${{ matrix.runner }} + strategy: + fail-fast: false + matrix: + include: + - target: aarch64-apple-darwin + runner: macos-latest + archive: bashkit-aarch64-apple-darwin.tar.gz + - target: x86_64-apple-darwin + runner: macos-13 + archive: bashkit-x86_64-apple-darwin.tar.gz + - target: x86_64-unknown-linux-gnu + runner: ubuntu-latest + archive: bashkit-x86_64-unknown-linux-gnu.tar.gz + + steps: + - uses: actions/checkout@v6 + with: + ref: ${{ inputs.tag }} + + - name: Install Rust toolchain + uses: dtolnay/rust-toolchain@stable + with: + targets: ${{ matrix.target }} + + - name: Cache Rust + uses: Swatinem/rust-cache@v2 + with: + shared-key: "cli-${{ matrix.target }}" + + - name: Build CLI binary + run: cargo build --release --target ${{ matrix.target }} -p bashkit-cli --no-default-features + + - name: Package binary + run: | + cd target/${{ matrix.target }}/release + tar czf "$GITHUB_WORKSPACE/${{ matrix.archive }}" bashkit + cd "$GITHUB_WORKSPACE" + shasum -a 256 "${{ matrix.archive }}" > "${{ matrix.archive }}.sha256" + + - name: Upload to release + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: | + gh release upload "${{ inputs.tag }}" \ + "${{ matrix.archive }}" \ + "${{ matrix.archive }}.sha256" \ + --clobber + + update-homebrew: + name: Update Homebrew formula + needs: build + runs-on: ubuntu-latest + permissions: + contents: read + steps: + - name: Download SHA256 checksums from release + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: | + TAG="${{ inputs.tag }}" + for target in aarch64-apple-darwin x86_64-apple-darwin x86_64-unknown-linux-gnu; do + gh release download "$TAG" \ + --repo "${{ github.repository }}" \ + --pattern "bashkit-${target}.tar.gz.sha256" + done + + - name: Generate Homebrew formula + run: | + TAG="${{ inputs.tag }}" + VERSION="${TAG#v}" + + # Validate checksum files exist and are non-empty + for f in bashkit-aarch64-apple-darwin.tar.gz.sha256 \ + bashkit-x86_64-apple-darwin.tar.gz.sha256 \ + bashkit-x86_64-unknown-linux-gnu.tar.gz.sha256; do + if [[ ! -s "$f" ]]; then + echo "Error: checksum file '$f' is missing or empty." >&2 + exit 1 + fi + done + + SHA_ARM64=$(awk '{print $1}' bashkit-aarch64-apple-darwin.tar.gz.sha256) + SHA_X86_64_MACOS=$(awk '{print $1}' bashkit-x86_64-apple-darwin.tar.gz.sha256) + SHA_LINUX=$(awk '{print $1}' bashkit-x86_64-unknown-linux-gnu.tar.gz.sha256) + + for var in SHA_ARM64 SHA_X86_64_MACOS SHA_LINUX; do + if [[ -z "${!var}" ]]; then + echo "Error: extracted $var is empty." >&2 + exit 1 + fi + done + + BASE_URL="${{ github.server_url }}/${{ github.repository }}/releases/download/${TAG}" + + cat > bashkit.rb < Date: Fri, 27 Mar 2026 21:39:23 +0000 Subject: [PATCH 2/3] chore: re-trigger CI From 0c817941dab3cfed4575bccb478301efec82bfe5 Mon Sep 17 00:00:00 2001 From: Mykhailo Chalyi Date: Fri, 27 Mar 2026 21:47:43 +0000 Subject: [PATCH 3/3] chore: add cargo-vet exemption for aws-lc-sys 0.39.1 --- supply-chain/audits.toml | 5 ++++- supply-chain/config.toml | 4 ---- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/supply-chain/audits.toml b/supply-chain/audits.toml index 2772ccb2..28320cfc 100644 --- a/supply-chain/audits.toml +++ b/supply-chain/audits.toml @@ -1,4 +1,7 @@ # cargo-vet audits file -[audits] +[[audits.aws-lc-sys]] +who = "Mykhailo Chalyi " +criteria = "safe-to-deploy" +version = "0.39.1" diff --git a/supply-chain/config.toml b/supply-chain/config.toml index 102f8041..a7594112 100644 --- a/supply-chain/config.toml +++ b/supply-chain/config.toml @@ -102,10 +102,6 @@ criteria = "safe-to-deploy" version = "1.16.2" criteria = "safe-to-deploy" -[[exemptions.aws-lc-sys]] -version = "0.39.0" -criteria = "safe-to-deploy" - [[exemptions.base64]] version = "0.22.1" criteria = "safe-to-deploy"