name: Release # Orchestrates the full release pipeline: # 1. Build and publish pip package to PyPI # 2. Build Homebrew formula after pip # 3. Build Docker images in parallel # # Individual workflows also run on push for CI (see their own triggers). # Manual fallback for the hosted release pipeline. The normal prerelease loop # is run by bin/release.sh locally so published GitHub releases do not launch a # duplicate release job. on: workflow_dispatch: permissions: contents: write packages: write id-token: write concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true jobs: pip: name: Publish to PyPI uses: ./.github/workflows/pip.yml secrets: inherit homebrew: name: Update Homebrew formula needs: pip uses: ./.github/workflows/homebrew.yml secrets: inherit docker: name: Build Docker images needs: pip uses: ./.github/workflows/docker.yml secrets: inherit