name: PR Update on: pull_request_target: branches: - main workflow_dispatch: concurrency: group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} cancel-in-progress: true jobs: changes: name: Detect changes runs-on: buildjet-2vcpu-ubuntu-2204 permissions: pull-requests: read outputs: has-files-requiring-all-checks: ${{ steps.filter.outputs.has-files-requiring-all-checks }} steps: - uses: actions/checkout@v4 - uses: ./.github/actions/dangerous-git-checkout - uses: dorny/paths-filter@v3 id: filter with: filters: | has-files-requiring-all-checks: - "!(**.md|.github/CODEOWNERS)" type-check: name: Type check needs: [changes] if: ${{ needs.changes.outputs.has-files-requiring-all-checks == 'true' }} uses: ./.github/workflows/check-types.yml secrets: inherit lint: name: Linters needs: [changes] if: ${{ needs.changes.outputs.has-files-requiring-all-checks == 'true' }} uses: ./.github/workflows/lint.yml secrets: inherit unit-test: name: Tests needs: [changes] if: ${{ needs.changes.outputs.has-files-requiring-all-checks == 'true' }} uses: ./.github/workflows/unit-tests.yml secrets: inherit integration-test: name: Tests needs: [changes] if: ${{ needs.changes.outputs.has-files-requiring-all-checks == 'true' }} uses: ./.github/workflows/integration-tests.yml secrets: inherit required: needs: [changes, lint, type-check, unit-test, integration-test] if: always() runs-on: buildjet-2vcpu-ubuntu-2204 steps: - name: fail if conditional jobs failed if: needs.changes.outputs.has-files-requiring-all-checks == 'true' && (contains(needs.*.result, 'failure') || contains(needs.*.result, 'skipped') || contains(needs.*.result, 'cancelled')) run: exit 1