184 lines
5.7 KiB
YAML
184 lines
5.7 KiB
YAML
name: 🤖 PR Checks
|
|
|
|
on:
|
|
pull_request:
|
|
types: [opened, synchronize, reopened]
|
|
|
|
concurrency:
|
|
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
|
|
cancel-in-progress: true
|
|
|
|
permissions:
|
|
contents: read
|
|
pull-requests: read
|
|
|
|
jobs:
|
|
changes:
|
|
name: Detect changes
|
|
runs-on: warp-ubuntu-latest-x64-2x
|
|
outputs:
|
|
code: ${{ steps.code_filter.outputs.code }}
|
|
typecheck_self: ${{ steps.filter.outputs.typecheck_self }}
|
|
webapp: ${{ steps.filter.outputs.webapp }}
|
|
packages: ${{ steps.filter.outputs.packages }}
|
|
internal: ${{ steps.filter.outputs.internal }}
|
|
cli: ${{ steps.filter.outputs.cli }}
|
|
sdk: ${{ steps.filter.outputs.sdk }}
|
|
steps:
|
|
# `code` uses `every` semantics so the negation patterns actually subtract.
|
|
# With the default `some` quantifier, `**` matches every file and the
|
|
# subsequent `!...` patterns are no-ops (each pattern is OR'd, not AND'd).
|
|
- uses: dorny/paths-filter@fbd0ab8f3e69293af611ebaee6363fc25e6d187d # v4.0.1
|
|
id: code_filter
|
|
with:
|
|
predicate-quantifier: every
|
|
filters: |
|
|
code:
|
|
- '**'
|
|
- '!docs/**'
|
|
- '!.changeset/**'
|
|
- '!hosting/**'
|
|
- '!.github/**'
|
|
- '!**/*.md'
|
|
- '!**/.env.example'
|
|
- uses: dorny/paths-filter@fbd0ab8f3e69293af611ebaee6363fc25e6d187d # v4.0.1
|
|
id: filter
|
|
with:
|
|
filters: |
|
|
typecheck_self:
|
|
- '.github/workflows/pr_checks.yml'
|
|
- '.github/workflows/typecheck.yml'
|
|
- '.github/workflows/code-quality.yml'
|
|
webapp:
|
|
- 'apps/webapp/**'
|
|
- 'packages/**'
|
|
- 'internal-packages/**'
|
|
- '.github/workflows/pr_checks.yml'
|
|
- '.github/workflows/unit-tests-webapp.yml'
|
|
- '.github/workflows/e2e-webapp.yml'
|
|
- '.configs/**'
|
|
- 'package.json'
|
|
- 'pnpm-lock.yaml'
|
|
- 'pnpm-workspace.yaml'
|
|
- 'turbo.json'
|
|
packages:
|
|
- 'packages/**'
|
|
- '.github/workflows/pr_checks.yml'
|
|
- '.github/workflows/unit-tests-packages.yml'
|
|
- '.configs/**'
|
|
- 'package.json'
|
|
- 'pnpm-lock.yaml'
|
|
- 'pnpm-workspace.yaml'
|
|
- 'turbo.json'
|
|
internal:
|
|
- 'internal-packages/**'
|
|
- 'packages/**'
|
|
- '.github/workflows/pr_checks.yml'
|
|
- '.github/workflows/unit-tests-internal.yml'
|
|
- '.configs/**'
|
|
- 'package.json'
|
|
- 'pnpm-lock.yaml'
|
|
- 'pnpm-workspace.yaml'
|
|
- 'turbo.json'
|
|
cli:
|
|
- 'packages/cli-v3/**'
|
|
- 'packages/build/**'
|
|
- 'packages/core/**'
|
|
- 'packages/schema-to-json/**'
|
|
- '.github/workflows/pr_checks.yml'
|
|
- '.github/workflows/e2e.yml'
|
|
- '.configs/**'
|
|
- 'package.json'
|
|
- 'pnpm-lock.yaml'
|
|
- 'pnpm-workspace.yaml'
|
|
- 'turbo.json'
|
|
sdk:
|
|
- 'packages/trigger-sdk/**'
|
|
- 'packages/core/**'
|
|
- '.github/workflows/pr_checks.yml'
|
|
- '.github/workflows/sdk-compat.yml'
|
|
- '.configs/**'
|
|
- 'package.json'
|
|
- 'pnpm-lock.yaml'
|
|
- 'pnpm-workspace.yaml'
|
|
- 'turbo.json'
|
|
|
|
code-quality:
|
|
uses: ./.github/workflows/code-quality.yml
|
|
|
|
typecheck:
|
|
needs: changes
|
|
if: needs.changes.outputs.code == 'true' || needs.changes.outputs.typecheck_self == 'true'
|
|
uses: ./.github/workflows/typecheck.yml
|
|
|
|
webapp:
|
|
needs: changes
|
|
if: needs.changes.outputs.webapp == 'true'
|
|
uses: ./.github/workflows/unit-tests-webapp.yml
|
|
secrets:
|
|
DOCKERHUB_USERNAME: ${{ secrets.DOCKERHUB_USERNAME }}
|
|
DOCKERHUB_TOKEN: ${{ secrets.DOCKERHUB_TOKEN }}
|
|
|
|
e2e-webapp:
|
|
needs: changes
|
|
if: needs.changes.outputs.webapp == 'true'
|
|
uses: ./.github/workflows/e2e-webapp.yml
|
|
secrets:
|
|
DOCKERHUB_USERNAME: ${{ secrets.DOCKERHUB_USERNAME }}
|
|
DOCKERHUB_TOKEN: ${{ secrets.DOCKERHUB_TOKEN }}
|
|
|
|
packages:
|
|
needs: changes
|
|
if: needs.changes.outputs.packages == 'true'
|
|
uses: ./.github/workflows/unit-tests-packages.yml
|
|
secrets:
|
|
DOCKERHUB_USERNAME: ${{ secrets.DOCKERHUB_USERNAME }}
|
|
DOCKERHUB_TOKEN: ${{ secrets.DOCKERHUB_TOKEN }}
|
|
|
|
internal:
|
|
needs: changes
|
|
if: needs.changes.outputs.internal == 'true'
|
|
uses: ./.github/workflows/unit-tests-internal.yml
|
|
secrets:
|
|
DOCKERHUB_USERNAME: ${{ secrets.DOCKERHUB_USERNAME }}
|
|
DOCKERHUB_TOKEN: ${{ secrets.DOCKERHUB_TOKEN }}
|
|
|
|
e2e:
|
|
needs: changes
|
|
if: needs.changes.outputs.cli == 'true'
|
|
uses: ./.github/workflows/e2e.yml
|
|
with:
|
|
package: cli-v3
|
|
|
|
sdk-compat:
|
|
needs: changes
|
|
if: needs.changes.outputs.sdk == 'true'
|
|
uses: ./.github/workflows/sdk-compat.yml
|
|
|
|
all-checks:
|
|
name: All PR Checks
|
|
needs:
|
|
- changes
|
|
- code-quality
|
|
- typecheck
|
|
- webapp
|
|
- e2e-webapp
|
|
- packages
|
|
- internal
|
|
- e2e
|
|
- sdk-compat
|
|
if: always()
|
|
runs-on: warp-ubuntu-latest-x64-2x
|
|
steps:
|
|
- name: Verify all checks
|
|
run: |
|
|
if [[ "${{ contains(needs.*.result, 'failure') }}" == "true" ]]; then
|
|
echo "One or more checks failed"
|
|
exit 1
|
|
fi
|
|
if [[ "${{ contains(needs.*.result, 'cancelled') }}" == "true" ]]; then
|
|
echo "One or more checks were cancelled"
|
|
exit 1
|
|
fi
|
|
echo "All checks passed or were skipped due to path filters"
|