fix(deps): update dependency pg to v8.23.0 #650
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: E2E Cluster-free | |
| # Runs the cluster-free local E2E harness (RHIDP-13501 / RHIDP-15075): boots the | |
| # backend and the legacy app dev server in-process and drives Playwright against | |
| # them, with dynamic plugins installed from the public OCI registry (ghcr) via | |
| # the install-dynamic-plugins CLI (skopeo). No OpenShift/Kubernetes cluster or | |
| # image. See docs/e2e-tests/local-e2e-harness.md. | |
| on: | |
| pull_request: | |
| paths: | |
| - "e2e-tests/**" | |
| - "app-config*.yaml" | |
| # the harness relies on the app dev-server proxy defined here | |
| - "packages/app/package.json" | |
| - ".github/workflows/e2e-cluster-free.yaml" | |
| - ".github/actions/setup-cluster-free-harness/**" | |
| push: | |
| branches: | |
| - 'main' | |
| - 'release-[0-9]+.[0-9]+' | |
| paths: | |
| - "e2e-tests/**" | |
| - "app-config*.yaml" | |
| # the harness relies on the app dev-server proxy defined here | |
| - "packages/app/package.json" | |
| - ".github/workflows/e2e-cluster-free.yaml" | |
| - ".github/actions/setup-cluster-free-harness/**" | |
| # The catalog index is built outside this repo and changes on its own, so the | |
| # plugin sanity job needs a trigger that is not tied to a commit here. GitHub | |
| # only runs `schedule` from the default branch, so this covers the `next` | |
| # index; use the dispatch input below to check a release branch's index. | |
| schedule: | |
| - cron: "0 5 * * *" | |
| workflow_dispatch: | |
| inputs: | |
| catalog_index_image: | |
| description: "Catalog index image for the plugin sanity job (default: quay.io/rhdh/plugin-catalog-index:<branch version>). Use this for RC verification." | |
| required: false | |
| type: string | |
| concurrency: | |
| group: ${{ github.workflow }}-${{ github.event_name }}-${{ github.event.number || github.ref }} | |
| cancel-in-progress: true | |
| permissions: | |
| contents: read | |
| # Both jobs run inside a container, where steps default to `sh -e {0}` rather | |
| # than the runner host's bash, so `[[ ]]` and `=~` are syntax errors. Requesting | |
| # bash also brings `-o pipefail`, which the tee'd test step relies on. | |
| defaults: | |
| run: | |
| shell: bash | |
| jobs: | |
| e2e: | |
| name: e2e | |
| runs-on: ubuntu-latest | |
| # The new schedule/dispatch triggers exist for plugin-sanity; paths filters | |
| # do not gate those events, so keep this job on its original triggers. | |
| if: ${{ github.event_name == 'pull_request' || github.event_name == 'push' }} | |
| timeout-minutes: 45 | |
| # Playwright image: browsers + OS deps preinstalled, so no browser-install step | |
| # (which hung on plain ubuntu runners). Keep the tag in sync with the | |
| # @playwright/test version in e2e-tests/package.json (currently 1.61.1) — a | |
| # mismatch fails with "Executable doesn't exist at /ms-playwright/...". | |
| container: | |
| image: mcr.microsoft.com/playwright:v1.61.1-noble@sha256:5b8f294aff9041b7191c34a4bab3ac270157a28774d4b0660e9743297b697e48 | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 | |
| with: | |
| persist-credentials: false | |
| - name: Set up the cluster-free harness | |
| uses: ./.github/actions/setup-cluster-free-harness | |
| - name: Populate dynamic-plugins-root (OCI, no source build) | |
| # install-dynamic-plugins pulls the harness plugin set from the public OCI | |
| # registry (ghcr) via skopeo — the core plugins in the catalog index's | |
| # default.yaml reference local ./dynamic-plugins/dist paths that only exist | |
| # after a source build, so we install the OCI-published builds instead. | |
| run: ./e2e-tests/local-harness/populate.sh | |
| - name: Run cluster-free E2E (legacy app) | |
| working-directory: ./e2e-tests | |
| run: yarn e2e:legacy-local | |
| - name: Upload Playwright report | |
| if: ${{ !cancelled() }} | |
| uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2 | |
| with: | |
| name: playwright-report-legacy-local | |
| path: e2e-tests/playwright-report-legacy-local | |
| retention-days: 7 | |
| plugin-sanity: | |
| name: plugin-sanity | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 20 | |
| # Request-only (no browser), but the image also carries the OS deps the | |
| # backend boot needs, and reusing it keeps both jobs on one base. | |
| container: | |
| image: mcr.microsoft.com/playwright:v1.61.1-noble@sha256:5b8f294aff9041b7191c34a4bab3ac270157a28774d4b0660e9743297b697e48 | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 | |
| with: | |
| persist-credentials: false | |
| - name: Set up the cluster-free harness | |
| uses: ./.github/actions/setup-cluster-free-harness | |
| - name: Resolve the catalog index image | |
| id: index | |
| env: | |
| # `next` tracks main; release branches carry their own version tag. | |
| BRANCH: ${{ github.event.pull_request.base.ref || github.ref_name }} | |
| OVERRIDE: ${{ inputs.catalog_index_image }} | |
| run: | | |
| if [[ -n "${OVERRIDE}" ]]; then | |
| # Shape-check the dispatch input: it reaches GITHUB_OUTPUT, and a | |
| # multi-line value there can forge additional step outputs. | |
| if [[ ! "${OVERRIDE}" =~ ^[A-Za-z0-9._/-]+(:[A-Za-z0-9._-]+)?(@sha256:[a-f0-9]{64})?$ ]]; then | |
| echo "invalid catalog_index_image: ${OVERRIDE}" >&2 | |
| exit 1 | |
| fi | |
| image="${OVERRIDE}" | |
| elif [[ "${BRANCH}" == release-* ]]; then | |
| image="quay.io/rhdh/plugin-catalog-index:${BRANCH#release-}" | |
| else | |
| image="quay.io/rhdh/plugin-catalog-index:next" | |
| fi | |
| echo "image=${image}" >> "$GITHUB_OUTPUT" | |
| # The tag is a moving target; record the digest it resolved to so a | |
| # later run can be traced back to the exact index it validated. | |
| digest=$(skopeo inspect --no-creds --override-os linux --override-arch amd64 \ | |
| --format '{{.Digest}}' "docker://${image}" 2> /dev/null || echo "unresolved") | |
| echo "Catalog index: ${image} (${digest})" | |
| echo "Catalog index: \`${image}\` @ \`${digest}\`" >> "$GITHUB_STEP_SUMMARY" | |
| - name: Populate dynamic-plugins-root from the catalog index | |
| env: | |
| CATALOG_INDEX_IMAGE: ${{ steps.index.outputs.image }} | |
| run: ./e2e-tests/local-harness/populate-catalog-index.sh | |
| - name: Run the plugin sanity check | |
| id: sanity | |
| working-directory: ./e2e-tests | |
| env: | |
| CATALOG_INDEX_IMAGE: ${{ steps.index.outputs.image }} | |
| run: | | |
| set -o pipefail | |
| yarn e2e:plugin-sanity 2>&1 | tee plugin-sanity.log | |
| - name: Report plugin startup failures | |
| # A plugin that throws during init aborts the whole backend; the cause is | |
| # in the backend log Playwright pipes into the run above, so pull the | |
| # culprits onto the run summary instead of leaving them mid-log. | |
| if: ${{ failure() && steps.sanity.conclusion == 'failure' }} | |
| run: | | |
| ./e2e-tests/local-harness/filter-plugin-startup-failures.sh \ | |
| < e2e-tests/plugin-sanity.log > /tmp/plugin-startup-failures.txt || true | |
| if [[ -s /tmp/plugin-startup-failures.txt ]]; then | |
| { | |
| echo "### Plugin startup failures" | |
| echo '```' | |
| cat /tmp/plugin-startup-failures.txt | |
| echo '```' | |
| } >> "$GITHUB_STEP_SUMMARY" | |
| cat /tmp/plugin-startup-failures.txt | |
| else | |
| echo "No dynamic-plugin startup failures found in the backend log." | |
| fi | |
| - name: Upload Playwright report | |
| if: ${{ !cancelled() }} | |
| uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2 | |
| with: | |
| name: playwright-report-plugin-sanity | |
| path: | | |
| e2e-tests/playwright-report-plugin-sanity | |
| e2e-tests/plugin-sanity.log | |
| retention-days: 7 |