diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 71615ac02..a86a6bd33 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -24,122 +24,12 @@ jobs: uses: ./.github/workflows/docs.yaml - Lint-Style: - name: Lint & check code style - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - name: Setup Nix Environment - uses: ./.github/actions/setup-nix - with: - authToken: '${{ secrets.CACHIX_AUTH_TOKEN }}' - tools: style - - name: Run linter (check locally with `nix-shell --run postgrest-lint`) - run: postgrest-lint - - name: Run style check (auto-format with `nix-shell --run postgrest-style`) - run: postgrest-style-check - - - Test-Nix: - name: Test (Nix) - runs-on: ubuntu-latest - defaults: - run: - # Hack for enabling color output, see: - # https://github.com/actions/runner/issues/241#issuecomment-842566950 - shell: script -qec "bash --noprofile --norc -eo pipefail {0}" - steps: - - uses: actions/checkout@v4 - - name: Setup Nix Environment - uses: ./.github/actions/setup-nix - with: - authToken: '${{ secrets.CACHIX_AUTH_TOKEN }}' - tools: tests - - - name: Run coverage (IO tests and Spec tests against PostgreSQL 15) - run: postgrest-coverage - - name: Upload coverage to codecov - uses: codecov/codecov-action@v3.1.5 - with: - files: ./coverage/codecov.json - - - name: Run doctests - if: always() - run: nix-shell --run postgrest-test-doctests - - - name: Check the spec tests for idempotence - if: always() - run: postgrest-test-spec-idempotence - - - Test-Pg-Nix: - strategy: - fail-fast: false - matrix: - pgVersion: [9.6, 10, 11, 12, 13, 14, 15, 16] - name: Test PG ${{ matrix.pgVersion }} (Nix) - runs-on: ubuntu-latest - defaults: - run: - # Hack for enabling color output, see: - # https://github.com/actions/runner/issues/241#issuecomment-842566950 - shell: script -qec "bash --noprofile --norc -eo pipefail {0}" - steps: - - uses: actions/checkout@v4 - - name: Setup Nix Environment - uses: ./.github/actions/setup-nix - with: - authToken: '${{ secrets.CACHIX_AUTH_TOKEN }}' - tools: tests withTools - - - name: Run spec tests - if: always() - run: postgrest-with-postgresql-${{ matrix.pgVersion }} postgrest-test-spec - - - name: Run IO tests - if: always() - run: postgrest-with-postgresql-${{ matrix.pgVersion }} postgrest-test-io -vv - - - Test-Memory-Nix: - name: Test memory (Nix) - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - name: Setup Nix Environment - uses: ./.github/actions/setup-nix - with: - authToken: '${{ secrets.CACHIX_AUTH_TOKEN }}' - tools: memory - - name: Run memory tests - run: postgrest-test-memory - - - Loadtest-Nix: - name: Loadtest (Nix) - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - with: - fetch-depth: 0 - - name: Setup Nix Environment - uses: ./.github/actions/setup-nix - with: - tools: loadtest - - uses: actions-ecosystem/action-get-latest-tag@v1 - id: get-latest-tag - with: - semver_only: true - - name: Run loadtest - run: | - postgrest-loadtest-against main ${{ steps.get-latest-tag.outputs.tag }} - postgrest-loadtest-report > loadtest/loadtest.md - - name: Upload report - uses: actions/upload-artifact@v4 - with: - name: loadtest.md - path: loadtest/loadtest.md - if-no-files-found: error + test: + name: Test + if: github.event_name == 'push' + uses: ./.github/workflows/test.yaml + secrets: + CACHIX_AUTH_TOKEN: ${{ secrets.CACHIX_AUTH_TOKEN }} Build-Static-Nix: @@ -372,10 +262,7 @@ jobs: runs-on: ubuntu-latest needs: - docs - - Lint-Style - - Test-Nix - - Test-Pg-Nix - - Test-Memory-Nix + - test - Build-Static-Nix - Build-Stack #- Get-FreeBSD-CirrusCI diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml new file mode 100644 index 000000000..4dde2ac00 --- /dev/null +++ b/.github/workflows/test.yaml @@ -0,0 +1,130 @@ +name: Test + +on: + workflow_call: + secrets: + CACHIX_AUTH_TOKEN: + required: false + +concurrency: + # Terminate all previous runs of the same workflow for pull requests + group: test-${{ github.head_ref || github.run_id }} + cancel-in-progress: true + +jobs: + lint-style: + name: Lint & Style + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: Setup Nix Environment + uses: ./.github/actions/setup-nix + with: + authToken: '${{ secrets.CACHIX_AUTH_TOKEN }}' + tools: style + - name: Run linter (check locally with `nix-shell --run postgrest-lint`) + run: postgrest-lint + - name: Run style check (auto-format with `nix-shell --run postgrest-style`) + run: postgrest-style-check + + + coverage: + name: Coverage + runs-on: ubuntu-latest + defaults: + run: + # Hack for enabling color output, see: + # https://github.com/actions/runner/issues/241#issuecomment-842566950 + shell: script -qec "bash --noprofile --norc -eo pipefail {0}" + steps: + - uses: actions/checkout@v4 + - name: Setup Nix Environment + uses: ./.github/actions/setup-nix + with: + authToken: '${{ secrets.CACHIX_AUTH_TOKEN }}' + tools: tests + + - name: Run coverage (IO tests and Spec tests against PostgreSQL 15) + run: postgrest-coverage + - name: Upload coverage to codecov + uses: codecov/codecov-action@v3.1.5 + with: + files: ./coverage/codecov.json + + - name: Run doctests + if: always() + run: nix-shell --run postgrest-test-doctests + + - name: Check the spec tests for idempotence + if: always() + run: postgrest-test-spec-idempotence + + + postgres: + strategy: + fail-fast: false + matrix: + pgVersion: [9.6, 10, 11, 12, 13, 14, 15, 16] + name: PG ${{ matrix.pgVersion }} + runs-on: ubuntu-latest + defaults: + run: + # Hack for enabling color output, see: + # https://github.com/actions/runner/issues/241#issuecomment-842566950 + shell: script -qec "bash --noprofile --norc -eo pipefail {0}" + steps: + - uses: actions/checkout@v4 + - name: Setup Nix Environment + uses: ./.github/actions/setup-nix + with: + authToken: '${{ secrets.CACHIX_AUTH_TOKEN }}' + tools: tests withTools + + - name: Run spec tests + if: always() + run: postgrest-with-postgresql-${{ matrix.pgVersion }} postgrest-test-spec + + - name: Run IO tests + if: always() + run: postgrest-with-postgresql-${{ matrix.pgVersion }} postgrest-test-io -vv + + + memory: + name: Memory + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: Setup Nix Environment + uses: ./.github/actions/setup-nix + with: + authToken: '${{ secrets.CACHIX_AUTH_TOKEN }}' + tools: memory + - name: Run memory tests + run: postgrest-test-memory + + + loadtest: + name: Loadtest + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + with: + fetch-depth: 0 + - name: Setup Nix Environment + uses: ./.github/actions/setup-nix + with: + tools: loadtest + - uses: actions-ecosystem/action-get-latest-tag@v1 + id: get-latest-tag + with: + semver_only: true + - name: Run loadtest + run: | + postgrest-loadtest-against main ${{ steps.get-latest-tag.outputs.tag }} + postgrest-loadtest-report > loadtest/loadtest.md + - name: Upload report + uses: actions/upload-artifact@v4 + with: + name: loadtest.md + path: loadtest/loadtest.md + if-no-files-found: error