name: Release on: pull_request: paths: - .goreleaser.yaml - .github/workflows/release.yml - go.mod - go.sum - cmd/** - internal/** - integration/** - scripts/** - ui/** push: tags: - "v[0-9]+.[0-9]+.[0-9]+*" permissions: contents: write jobs: codex-windows: runs-on: windows-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-go@v5 with: go-version-file: go.mod cache: true - name: Test Codex Windows credentials run: go test ./internal/harness/codex -count=1 - name: Test full Windows package, launch and PowerShell suite shell: pwsh run: | go test ./... -count=1 if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE } goreleaser: needs: codex-windows runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 with: fetch-depth: 0 - uses: actions/setup-go@v5 with: go-version-file: go.mod cache: true - name: Validate release configuration uses: goreleaser/goreleaser-action@v7 with: distribution: goreleaser version: "~> v2" args: check - uses: oven-sh/setup-bun@v2 with: bun-version: '1.4.4' - name: Build and stage gateway UI run: make ui-stage - name: Test release installers run: go test ./integration -run 'TestRelease(Installer|Description|Builds)' -count=1 - name: Test package and concurrent launches run: go test ./... - name: Snapshot release if: github.event_name == 'pull_request' uses: goreleaser/goreleaser-action@v7 with: distribution: goreleaser version: "~> v2" args: release --snapshot --clean --skip=publish - name: Publish release if: github.event_name == 'push' uses: goreleaser/goreleaser-action@v7 with: distribution: goreleaser version: "~> v2" args: release --clean env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} HOMEBREW_TAP_TOKEN: ${{ secrets.HOMEBREW_TAP_TOKEN }}