chore: automate release process #5943
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: Pull Request | |
| on: | |
| pull_request: | |
| workflow_dispatch: | |
| concurrency: | |
| group: ${{ github.head_ref }} | |
| cancel-in-progress: true | |
| jobs: | |
| # Detect if any code files changed (to skip CI for docs-only PRs) | |
| detect-changes: | |
| runs-on: ubuntu-latest | |
| outputs: | |
| # has-code is true if ANY non-doc file changed | |
| has-code: ${{ steps.filter.outputs.code }} | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - uses: dorny/paths-filter@v3 | |
| id: filter | |
| with: | |
| # Detect code changes - if none, we can skip tests | |
| # Using negated patterns: match anything NOT in the docs list | |
| filters: | | |
| code: | |
| - '**' | |
| - '!**/*.md' | |
| - '!LICENSE' | |
| - '!.gitignore' | |
| - '!.gitattributes' | |
| # Linting and formatting - always runs | |
| lint: | |
| uses: ./.github/workflows/lint.yaml | |
| # Unit Tests - skip if no code changes | |
| home-view-unit-tests: | |
| needs: detect-changes | |
| if: needs.detect-changes.outputs.has-code == 'true' | |
| uses: ./.github/workflows/home-view-unit-test.yaml | |
| agent: | |
| needs: detect-changes | |
| if: needs.detect-changes.outputs.has-code == 'true' | |
| uses: ./.github/workflows/agent.yaml | |
| vscode: | |
| needs: detect-changes | |
| if: needs.detect-changes.outputs.has-code == 'true' | |
| uses: ./.github/workflows/vscode.yaml | |
| # Build - skip if no code changes | |
| build: | |
| needs: detect-changes | |
| if: needs.detect-changes.outputs.has-code == 'true' | |
| uses: ./.github/workflows/build.yaml | |
| package: | |
| needs: [detect-changes, build] | |
| if: needs.detect-changes.outputs.has-code == 'true' | |
| uses: ./.github/workflows/package.yaml | |
| archive: | |
| needs: [detect-changes, build] | |
| if: needs.detect-changes.outputs.has-code == 'true' | |
| uses: ./.github/workflows/archive.yaml | |
| # E2E Tests - skip if no code changes | |
| e2e: | |
| needs: [detect-changes, home-view-unit-tests, agent, vscode, package] | |
| if: | | |
| always() && | |
| needs.detect-changes.outputs.has-code == 'true' && | |
| !contains(needs.*.result, 'failure') && | |
| !contains(needs.*.result, 'cancelled') | |
| uses: ./.github/workflows/e2e.yaml | |
| secrets: inherit | |
| upload: | |
| needs: [detect-changes, archive, package] | |
| if: | | |
| always() && | |
| github.actor != 'dependabot[bot]' && | |
| needs.detect-changes.outputs.has-code == 'true' && | |
| !contains(needs.*.result, 'failure') && | |
| !contains(needs.*.result, 'cancelled') | |
| uses: ./.github/workflows/upload.yaml | |
| secrets: inherit | |
| # License generation - skip if no code changes | |
| generate-licenses: | |
| needs: detect-changes | |
| if: needs.detect-changes.outputs.has-code == 'true' | |
| uses: ./.github/workflows/generate-licenses.yaml | |
| with: | |
| pr_changes: false # No PRs on PRs, infinite loop | |
| fail_on_forbidden: true | |
| secrets: inherit |