diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 00000000..44d5ff6e --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,198 @@ +name: CI + +on: + pull_request: + merge_group: + push: + branches: + - main + workflow_dispatch: + +permissions: + contents: read + +concurrency: + group: ${{ github.workflow }}-${{ github.event_name }}-${{ github.ref }} + cancel-in-progress: ${{ github.event_name != 'push' }} + +jobs: + changes: + runs-on: ubuntu-24.04 + timeout-minutes: 5 + permissions: + pull-requests: read + outputs: + lint: ${{ steps.filter.outputs.lint }} + typecheck: ${{ steps.filter.outputs.typecheck }} + test: ${{ steps.filter.outputs.test }} + e2e: ${{ steps.filter.outputs.e2e }} + pins: ${{ steps.filter.outputs.pins }} + vendor: ${{ steps.filter.outputs.vendor }} + steps: + - id: filter + if: github.event_name == 'pull_request' + uses: dorny/paths-filter@ceb8a2b8f2d89434be7ff52d3de7ec3738c5cc9d # v4.0.3 + with: + filters: | + shared: &shared + - "bun.lock" + - "patches/**" + - "package.json" + - "tsconfig.json" + - ".github/**" + lint: + - *shared + - "apps/**" + - "packages/**" + - "workflows/**" + - "test/**" + - "scripts/**" + - "vendor/**" + - ".oxlintrc.json" + typecheck: + - *shared + - "apps/**" + - "packages/**" + - "workflows/**" + - "test/**" + - "scripts/**" + - "vendor/**" + test: + - *shared + - "apps/**" + - "packages/**" + - "workflows/**" + - "test/integration/**" + - "vendor/**" + e2e: + - *shared + - "apps/hub/**" + - "packages/**" + - "workflows/**" + - "test/e2e/**" + - "vendor/**" + pins: + - *shared + - "**/package.json" + - "scripts/verify-pins.ts" + vendor: + - *shared + - "vendor/**" + - "scripts/verify-vendor.ts" + + format-check: + name: format:check + runs-on: ubuntu-24.04 + timeout-minutes: 20 + steps: + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 + with: + persist-credentials: false + - uses: ./.github/actions/setup + - run: bun run format:check + + # The jobs below always report so their required checks are satisfied; on a pull request the steps run only when their paths changed. + lint: + needs: changes + runs-on: ubuntu-24.04 + timeout-minutes: 20 + env: + RUN: ${{ github.event_name != 'pull_request' || needs.changes.outputs.lint == 'true' }} + steps: + - if: env.RUN == 'true' + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 + with: + persist-credentials: false + - if: env.RUN == 'true' + uses: ./.github/actions/setup + - if: env.RUN == 'true' + run: bun run lint + + typecheck: + needs: changes + runs-on: ubuntu-24.04 + timeout-minutes: 20 + env: + RUN: ${{ github.event_name != 'pull_request' || needs.changes.outputs.typecheck == 'true' }} + steps: + - if: env.RUN == 'true' + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 + with: + persist-credentials: false + - if: env.RUN == 'true' + uses: ./.github/actions/setup + - if: env.RUN == 'true' + run: bun run typecheck + + test: + needs: changes + runs-on: ubuntu-24.04 + timeout-minutes: 20 + env: + RUN: ${{ github.event_name != 'pull_request' || needs.changes.outputs.test == 'true' }} + steps: + - if: env.RUN == 'true' + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 + with: + persist-credentials: false + - if: env.RUN == 'true' + uses: ./.github/actions/setup + - if: env.RUN == 'true' + run: bun run test + + e2e: + needs: changes + runs-on: ubuntu-24.04 + timeout-minutes: 20 + env: + RUN: ${{ github.event_name != 'pull_request' || needs.changes.outputs.e2e == 'true' }} + steps: + - if: env.RUN == 'true' + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 + with: + persist-credentials: false + - if: env.RUN == 'true' + uses: ./.github/actions/postgres + - if: env.RUN == 'true' + uses: ./.github/actions/setup + - if: env.RUN == 'true' + run: bun run test:e2e + env: + E2E_DB_HOST: 127.0.0.1 + E2E_DB_PORT: 5432 + E2E_DB_USER: postgres + E2E_DB_PASSWORD: postgres + + pins-verify: + name: pins:verify + needs: changes + runs-on: ubuntu-24.04 + timeout-minutes: 20 + env: + RUN: ${{ github.event_name != 'pull_request' || needs.changes.outputs.pins == 'true' }} + steps: + - if: env.RUN == 'true' + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 + with: + persist-credentials: false + - if: env.RUN == 'true' + uses: ./.github/actions/setup + - if: env.RUN == 'true' + run: bun run pins:verify + + vendor-verify: + name: vendor:verify + needs: changes + runs-on: ubuntu-24.04 + timeout-minutes: 20 + env: + RUN: ${{ github.event_name != 'pull_request' || needs.changes.outputs.vendor == 'true' }} + steps: + - if: env.RUN == 'true' + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 + with: + persist-credentials: false + - if: env.RUN == 'true' + uses: ./.github/actions/setup + - if: env.RUN == 'true' + run: bun run vendor:verify diff --git a/.github/workflows/e2e.yml b/.github/workflows/e2e.yml deleted file mode 100644 index 8a6501e2..00000000 --- a/.github/workflows/e2e.yml +++ /dev/null @@ -1,44 +0,0 @@ -name: E2E - -on: - pull_request: - paths: - - "apps/hub/**" - - "packages/**" - - "workflows/**" - - "test/e2e/**" - - "vendor/**" - - "bun.lock" - - "patches/**" - - "package.json" - - "tsconfig.json" - - ".github/**" - merge_group: - push: - branches: - - main - workflow_dispatch: - -permissions: - contents: read - -concurrency: - group: ${{ github.workflow }}-${{ github.event_name }}-${{ github.ref }} - cancel-in-progress: ${{ github.event_name != 'push' }} - -jobs: - e2e: - runs-on: ubuntu-24.04 - timeout-minutes: 20 - steps: - - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - with: - persist-credentials: false - - uses: ./.github/actions/postgres - - uses: ./.github/actions/setup - - run: bun run test:e2e - env: - E2E_DB_HOST: 127.0.0.1 - E2E_DB_PORT: 5432 - E2E_DB_USER: postgres - E2E_DB_PASSWORD: postgres diff --git a/.github/workflows/format.yml b/.github/workflows/format.yml deleted file mode 100644 index afa10198..00000000 --- a/.github/workflows/format.yml +++ /dev/null @@ -1,28 +0,0 @@ -name: Format - -on: - pull_request: - merge_group: - push: - branches: - - main - workflow_dispatch: - -permissions: - contents: read - -concurrency: - group: ${{ github.workflow }}-${{ github.event_name }}-${{ github.ref }} - cancel-in-progress: ${{ github.event_name != 'push' }} - -jobs: - format-check: - name: format:check - runs-on: ubuntu-24.04 - timeout-minutes: 20 - steps: - - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - with: - persist-credentials: false - - uses: ./.github/actions/setup - - run: bun run format:check diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml deleted file mode 100644 index 64bfb282..00000000 --- a/.github/workflows/lint.yml +++ /dev/null @@ -1,40 +0,0 @@ -name: Lint - -on: - pull_request: - paths: - - "apps/**" - - "packages/**" - - "workflows/**" - - "test/**" - - "scripts/**" - - "vendor/**" - - ".oxlintrc.json" - - "bun.lock" - - "patches/**" - - "package.json" - - "tsconfig.json" - - ".github/**" - merge_group: - push: - branches: - - main - workflow_dispatch: - -permissions: - contents: read - -concurrency: - group: ${{ github.workflow }}-${{ github.event_name }}-${{ github.ref }} - cancel-in-progress: ${{ github.event_name != 'push' }} - -jobs: - lint: - runs-on: ubuntu-24.04 - timeout-minutes: 20 - steps: - - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - with: - persist-credentials: false - - uses: ./.github/actions/setup - - run: bun run lint diff --git a/.github/workflows/pins.yml b/.github/workflows/pins.yml deleted file mode 100644 index 38995c2c..00000000 --- a/.github/workflows/pins.yml +++ /dev/null @@ -1,36 +0,0 @@ -name: Pins - -on: - pull_request: - paths: - - "**/package.json" - - "scripts/verify-pins.ts" - - "bun.lock" - - "patches/**" - - "package.json" - - "tsconfig.json" - - ".github/**" - merge_group: - push: - branches: - - main - workflow_dispatch: - -permissions: - contents: read - -concurrency: - group: ${{ github.workflow }}-${{ github.event_name }}-${{ github.ref }} - cancel-in-progress: ${{ github.event_name != 'push' }} - -jobs: - pins-verify: - name: pins:verify - runs-on: ubuntu-24.04 - timeout-minutes: 20 - steps: - - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - with: - persist-credentials: false - - uses: ./.github/actions/setup - - run: bun run pins:verify diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml deleted file mode 100644 index 0e336abd..00000000 --- a/.github/workflows/test.yml +++ /dev/null @@ -1,38 +0,0 @@ -name: Test - -on: - pull_request: - paths: - - "apps/**" - - "packages/**" - - "workflows/**" - - "test/integration/**" - - "vendor/**" - - "bun.lock" - - "patches/**" - - "package.json" - - "tsconfig.json" - - ".github/**" - merge_group: - push: - branches: - - main - workflow_dispatch: - -permissions: - contents: read - -concurrency: - group: ${{ github.workflow }}-${{ github.event_name }}-${{ github.ref }} - cancel-in-progress: ${{ github.event_name != 'push' }} - -jobs: - test: - runs-on: ubuntu-24.04 - timeout-minutes: 20 - steps: - - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - with: - persist-credentials: false - - uses: ./.github/actions/setup - - run: bun run test diff --git a/.github/workflows/typecheck.yml b/.github/workflows/typecheck.yml deleted file mode 100644 index 852763a3..00000000 --- a/.github/workflows/typecheck.yml +++ /dev/null @@ -1,39 +0,0 @@ -name: Typecheck - -on: - pull_request: - paths: - - "apps/**" - - "packages/**" - - "workflows/**" - - "test/**" - - "scripts/**" - - "vendor/**" - - "bun.lock" - - "patches/**" - - "package.json" - - "tsconfig.json" - - ".github/**" - merge_group: - push: - branches: - - main - workflow_dispatch: - -permissions: - contents: read - -concurrency: - group: ${{ github.workflow }}-${{ github.event_name }}-${{ github.ref }} - cancel-in-progress: ${{ github.event_name != 'push' }} - -jobs: - typecheck: - runs-on: ubuntu-24.04 - timeout-minutes: 20 - steps: - - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - with: - persist-credentials: false - - uses: ./.github/actions/setup - - run: bun run typecheck diff --git a/.github/workflows/vendor.yml b/.github/workflows/vendor.yml deleted file mode 100644 index 720ce01b..00000000 --- a/.github/workflows/vendor.yml +++ /dev/null @@ -1,36 +0,0 @@ -name: Vendor - -on: - pull_request: - paths: - - "vendor/**" - - "scripts/verify-vendor.ts" - - "bun.lock" - - "patches/**" - - "package.json" - - "tsconfig.json" - - ".github/**" - merge_group: - push: - branches: - - main - workflow_dispatch: - -permissions: - contents: read - -concurrency: - group: ${{ github.workflow }}-${{ github.event_name }}-${{ github.ref }} - cancel-in-progress: ${{ github.event_name != 'push' }} - -jobs: - vendor-verify: - name: vendor:verify - runs-on: ubuntu-24.04 - timeout-minutes: 20 - steps: - - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - with: - persist-credentials: false - - uses: ./.github/actions/setup - - run: bun run vendor:verify diff --git a/README.md b/README.md index 15e0170f..792e3857 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@
Turn a half-baked idea into a working application, without being a developer.
User manual ยท