From 688c6655dcfa014f9f4fd9f7fb62974146d5c61a Mon Sep 17 00:00:00 2001 From: Claude Date: Mon, 18 May 2026 11:25:41 +0000 Subject: [PATCH] ci(e2e): trigger e2e from supabase/cli beta releases Adds a workflow_dispatch input and a `cli-released` repository_dispatch listener so supabase/cli can run this e2e against a freshly published beta build before the same bytes flow to the stable channel. The CLI v2.99 archive layout change (CLI-1475) was only caught after the stable release; with this in place a packaging-incompatibility regression on develop fails this workflow and surfaces in the cli release run that dispatched it. When a version is supplied, the matrix narrows to that single CLI version across all supported Postgres majors instead of the default multi-version sweep. --- .github/workflows/e2e.yml | 67 +++++++++++++++++++++++++++++++-------- 1 file changed, 53 insertions(+), 14 deletions(-) diff --git a/.github/workflows/e2e.yml b/.github/workflows/e2e.yml index 0cc3d57..cc17465 100644 --- a/.github/workflows/e2e.yml +++ b/.github/workflows/e2e.yml @@ -16,9 +16,22 @@ on: # * is a special character in YAML so you have to quote this string - cron: "30 1,9 * * *" workflow_dispatch: + inputs: + cli_version: + description: Specific Supabase CLI version to test. When set, the matrix runs only this version across all supported Postgres majors. Leave empty to run the full version matrix. + required: false + type: string + default: "" + # Triggered from supabase/cli after a successful beta release so the + # symmetric e2e runs before a stale archive layout (or any other + # packaging change) reaches the stable channel. The dispatcher sends + # `client_payload.version` (e.g. "2.99.0") and `client_payload.channel`. + repository_dispatch: + types: + - cli-released concurrency: - group: ${{ github.workflow }}-${{ github.ref }} + group: ${{ github.workflow }}-${{ github.ref }}-${{ github.event.inputs.cli_version || github.event.client_payload.version }} cancel-in-progress: true defaults: @@ -29,24 +42,50 @@ permissions: contents: read jobs: - e2e: # make sure the action works on a clean machine without building + plan: if: ${{ github.event_name != 'pull_request' || !github.event.pull_request.draft }} runs-on: ubuntu-latest + timeout-minutes: 5 + outputs: + matrix: ${{ steps.compute.outputs.matrix }} + cli_version: ${{ steps.compute.outputs.cli_version }} + source: ${{ steps.compute.outputs.source }} + steps: + - id: compute + env: + DISPATCH_VERSION: ${{ github.event.inputs.cli_version }} + PAYLOAD_VERSION: ${{ github.event.client_payload.version }} + PAYLOAD_CHANNEL: ${{ github.event.client_payload.channel }} + EVENT_NAME: ${{ github.event_name }} + run: | + set -euo pipefail + version="" + source="default" + if [[ "$EVENT_NAME" == "repository_dispatch" && -n "$PAYLOAD_VERSION" ]]; then + version="${PAYLOAD_VERSION#v}" + source="cli-${PAYLOAD_CHANNEL:-release}" + elif [[ -n "$DISPATCH_VERSION" ]]; then + version="${DISPATCH_VERSION#v}" + source="workflow_dispatch" + fi + if [[ -n "$version" ]]; then + matrix='{"version":["'"$version"'"],"pg_major":[14,15,17]}' + else + matrix='{"version":["1.178.2","2.33.0","latest"],"pg_major":[14,15,17],"exclude":[{"version":"1.178.2","pg_major":17}]}' + fi + { + echo "cli_version=$version" + echo "source=$source" + echo "matrix=$matrix" + } >> "$GITHUB_OUTPUT" + + e2e: # make sure the action works on a clean machine without building + needs: plan + runs-on: ubuntu-latest timeout-minutes: 45 strategy: fail-fast: false - matrix: - version: - - 1.178.2 - - 2.33.0 - - latest - pg_major: - - 14 - - 15 - - 17 - exclude: - - version: 1.178.2 - pg_major: 17 + matrix: ${{ fromJSON(needs.plan.outputs.matrix) }} steps: - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 with: