Skip to content

Improve e2e CI: comment/dispatch triggers, run summary, script tidy-up#7192

Open
ewels wants to merge 2 commits into
masterfrom
improve-e2e-ci
Open

Improve e2e CI: comment/dispatch triggers, run summary, script tidy-up#7192
ewels wants to merge 2 commits into
masterfrom
improve-e2e-ci

Conversation

@ewels
Copy link
Copy Markdown
Member

@ewels ewels commented May 30, 2026

Fairly minimal actual code changes here, mostly tidying things up a bit (moving things specific to GitHub actions out of the root and into .github) plus the addition of new ways to trigger tests / release.

Why

The Seqera Platform showcase e2e test could only be launched by pushing a commit tagged [e2e prod]/[e2e stage], the logic was buried inside build.yml, and the test it kicks off runs in a separate repo (seqeralabs/showcase-automation) whose run URL is never printed — so you had to dig through logs and that other repo to find out if it worked. Releases were likewise tag-only ([release]). CI-only scripts were also scattered at the repo root.

Usage

Unchanged: pushing a commit tagged [e2e prod] / [e2e stage] still launches e2e after the build passes, and [release] still triggers a release. Same tags, same behaviour.

Launch e2e:

  • PR comment — a maintainer (OWNER/MEMBER/COLLABORATOR) posts a line starting with /e2e-prod or /e2e-stage. The bot reacts 👀, builds the PR head, launches, and posts the showcase run URL back to the PR.
  • Manuallyworkflow_dispatch on Nextflow e2e with an environment choice (standalone, skips build + tests).

Trigger a release:

  • Manuallyworkflow_dispatch on Nextflow CI with the release input. Runs the full build + tests first and then releases, exactly like the [release] tag — just without needing a specially-worded commit. Limited to the same branches the push trigger allows (master, test*, dev*, STABLE-*), so it can't be launched from a feature branch. The same dispatch can also set the e2e input, so one run can release and launch e2e.

Result is now surfaced: an aggregating summary job writes one top-level box per run — pass/fail per job plus the e2e launcher image and the showcase run URL with a note that CI only launches the test (open the link to confirm it passed).

What changed

  • Extracted all e2e logic into a reusable .github/workflows/e2e.yml (workflow_call + workflow_dispatch). build.yml calls it via uses: once the build is green.
  • Added workflow_dispatch inputs to build.ymle2e (none/staging/production) and release (boolean) — so both can be kicked off from the Actions tab, gated on the same build + test success as the commit tags (and, for release, the same branch allowlist).
  • Merged the comment trigger into a single .github/workflows/pr-commands.yml (replaces claude.yml) so each PR comment fires one workflow run, not two — it routes to either Claude (@claude) or e2e (/e2e-*). Note: this renames the workflow/check from "Claude PR Assistant" to "PR commands".
  • Capture the dispatched run URL (gh workflow run returns nothing) by polling gh run list, with a fallback to the workflow runs page.
  • Explicit per-secret passing to the reusable workflow (no secrets: inherit), comment bodies handled via env vars — checked with zizmor + actionlint.

Cleanup

  • release.sh, test-ci.sh and the e2e launch script → .github/scripts/ (the latter renamed to e2e-launch.sh).
  • e2e docker build context (Dockerfile, .gitignore) → .github/test-e2e/; installScratch path in packing.gradle updated to match.

🤖 Generated with Claude Code

…dy-up

Make the Seqera Platform showcase e2e test launchable beyond the
[e2e prod]/[e2e stage] commit tag, surface its result, and consolidate
CI-only scripts under .github/.

- Extract e2e logic into a reusable .github/workflows/e2e.yml
  (workflow_call + workflow_dispatch). build.yml calls it after the
  build is green; standalone dispatch runs it for a chosen environment.
- Add workflow_dispatch inputs to build.yml (e2e, release) so both can
  be triggered manually, mirroring the commit-tag behaviour.
- Merge the comment trigger into a single pr-commands.yml (replacing
  claude.yml) so each PR comment fires one workflow run, not two. A
  maintainer's /e2e-prod or /e2e-stage comment delegates to e2e.yml,
  which reacts, builds the PR head, launches, and posts the run URL back.
- Capture the dispatched showcase-automation run URL (gh workflow run
  returns nothing) and surface it: an aggregating summary job in
  build.yml plus a self-summary in the launch script.
- Move release.sh, test-ci.sh and the e2e launch script into
  .github/scripts/; move the e2e docker build context into
  .github/test-e2e/ (installScratch path updated accordingly).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Signed-off-by: Phil Ewels <phil.ewels@seqera.io>
@netlify
Copy link
Copy Markdown

netlify Bot commented May 30, 2026

Deploy Preview for nextflow-docs-staging canceled.

Name Link
🔨 Latest commit f0f8239
🔍 Latest deploy log https://app.netlify.com/projects/nextflow-docs-staging/deploys/6a1b555c415ac2000809bacd

A dispatched release (release: true) could previously run from any
branch selected in the Actions UI. Gate it to the same branches the
push trigger allows (master, test*, dev*, STABLE-*) so a release can't
be launched from an arbitrary feature branch.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Signed-off-by: Phil Ewels <phil.ewels@seqera.io>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant