name: Release on: push: tags: - "v*" workflow_dispatch: jobs: build_release: name: Build ${{ matrix.asset_name }} runs-on: ${{ matrix.runner }} permissions: contents: write strategy: fail-fast: false matrix: include: - runner: ubuntu-latest asset_name: omnigraph-linux-x86_64 - runner: macos-15-intel asset_name: omnigraph-macos-x86_64 - runner: macos-14 asset_name: omnigraph-macos-arm64 env: CARGO_TERM_COLOR: always steps: - name: Checkout source uses: actions/checkout@v5.0.1 - name: Install Linux dependencies if: runner.os == 'Linux' run: | sudo apt-get update sudo apt-get install -y protobuf-compiler libprotobuf-dev - name: Install macOS dependencies if: runner.os == 'macOS' run: brew install protobuf - name: Install Rust stable uses: dtolnay/rust-toolchain@stable with: toolchain: stable - name: Cache Rust build data uses: Swatinem/rust-cache@v2 with: workspaces: | . -> target - name: Build release binaries run: cargo build --release --locked -p omnigraph-cli -p omnigraph-server - name: Package release archive run: | mkdir -p release install -m 0755 target/release/omnigraph release/omnigraph install -m 0755 target/release/omnigraph-server release/omnigraph-server tar -C release -czf "${{ matrix.asset_name }}.tar.gz" omnigraph omnigraph-server shasum -a 256 "${{ matrix.asset_name }}.tar.gz" > "${{ matrix.asset_name }}.sha256" - name: Publish GitHub release assets uses: softprops/action-gh-release@v2.5.0 with: files: | ${{ matrix.asset_name }}.tar.gz ${{ matrix.asset_name }}.sha256 update_homebrew_tap: name: Update Homebrew tap needs: build_release runs-on: ubuntu-latest permissions: contents: read env: HOMEBREW_TAP_TOKEN: ${{ secrets.HOMEBREW_TAP_TOKEN }} steps: - name: Skip if HOMEBREW_TAP_TOKEN is not configured if: env.HOMEBREW_TAP_TOKEN == '' run: | echo "HOMEBREW_TAP_TOKEN is not set; skipping Homebrew tap update." echo "HOMEBREW_TAP_SKIP=1" >> "$GITHUB_ENV" - name: Checkout source if: env.HOMEBREW_TAP_SKIP != '1' uses: actions/checkout@v5.0.1 - name: Checkout Homebrew tap if: env.HOMEBREW_TAP_SKIP != '1' uses: actions/checkout@v5.0.1 with: repository: ModernRelay/homebrew-tap token: ${{ secrets.HOMEBREW_TAP_TOKEN }} path: homebrew-tap - name: Update formula from release assets if: env.HOMEBREW_TAP_SKIP != '1' env: GH_TOKEN: ${{ github.token }} run: | ./scripts/update-homebrew-formula.sh "${GITHUB_REF_NAME}" homebrew-tap/Formula/omnigraph.rb - name: Commit and push formula update if: env.HOMEBREW_TAP_SKIP != '1' working-directory: homebrew-tap run: | if git diff --quiet -- Formula/omnigraph.rb; then echo "Formula already up to date" exit 0 fi git config user.name "github-actions[bot]" git config user.email "41898282+github-actions[bot]@users.noreply.github.com" git add Formula/omnigraph.rb git commit -m "Update Omnigraph formula to ${GITHUB_REF_NAME}" git push origin HEAD:main