Skip to content

chore: automate release process #5943

chore: automate release process

chore: automate release process #5943

Workflow file for this run

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