Skip to content

ci: use the CLI against the dev platform, weekly and after each release - #79

Merged
achoimet merged 2 commits into
mainfrom
ci/platform-e2e
Sep 29, 2026
Merged

achoimet merged 2 commits into
mainfrom
ci/platform-e2e

Conversation

@achoimet

@achoimet achoimet commented Sep 29, 2026 •

Copy link
Copy Markdown
Member

Nothing checked that the released CLI, installed by the Action, works against a real platform. The unit tests use a fake platform, the container tests run without one, and verify-action only checks --version.

e2e/platform.sh uses the CLI the way a pipeline does, against dev, with the team token of the test team CLI-E2E (key CLI, secret STEADYBIT_E2E_TOKEN). It checks, in order:

  1. experiment apply -f creates the experiments and writes their keys into the files, keeping comments.
  2. diff exits 0 right after apply, and 2 once a file changes; apply then updates it.
  3. run --parallel 2 --report completes both runs, with a JUnit report holding both.
  4. SIGTERM, as a cancelled job sends it, exits 143 and cancels the run.
  5. --no-wait fails (exit 1) on a run the platform accepted and then cancelled because another was running.
  6. execution list --fail-on-match gates on that cancelled run.

Only wait steps. On exit, even after a failure, it deletes every experiment named cli-e2e-ci-* in the team, including ones a crashed earlier run left behind. It first cancels anything still running.

When it runs

  • Weekly: Tuesdays at 17:00 UTC (19:00 in Berlin in summer, 18:00 in winter), with the latest release through the Action. The first run is tonight.
  • After each stable release: from ci.yml, after verify-action, on the binary users now get.
  • By hand: optionally built from the branch (from-source).
  • On pull requests that change the test. Fork PRs get no secret, so it's skipped for them.
  • Nightly smoke: a small job in the existing daily CI run builds the CLI and reads the test team and its latest runs, to spot a broken token or API shape within a day. It also runs when CI is started by hand.

Setup done: the team CLI had no environment, so experiments couldn't be created. I added Global with my admin dev profile. The team can only use wait and service-validation, which suits a test team.

Testing: run locally against dev with a build of main: all 11 checks passed in 25 s, and the three experiments were deleted. With the old 6.0.0 binary the same run failed on --parallel and execution list, so the test does catch a CLI without those features. This PR runs the test itself, with the real team token.

Nothing checked that the released CLI, installed by the action, works against a
real platform: the tests use a fake one, and the container tests run without
one. e2e/platform.sh uses it the way a pipeline does, with the team token of
the test team CLI-E2E: experiments applied from files (keys written back),
drift found by diff, a parallel run with a JUnit report, SIGTERM canceling the
run with exit 143, --no-wait failing on a run the platform refused, and an
execution list gate. Only wait steps, and everything it creates is deleted
afterwards, also what an earlier crashed run left.

The Platform E2E workflow runs it weekly on Tuesday evenings with the latest
release, after each stable release from ci.yml, by hand (optionally from
source), and on pull requests that change it. A nightly job in ci.yml only
reads the test team and its runs, to see early that the token and the API
still work.
Other test suites run experiments on dev in the evening, so every run of the
platform test allows running in parallel, now explicitly, except the one whose
refusal its check is about. The weekly run moves to 17:00 UTC: 19:00 in Berlin
in summer, 18:00 in winter, as cron has no time zone.
@achoimet
achoimet merged commit 6426fca into main Sep 29, 2026
9 checks passed
@achoimet
achoimet deleted the ci/platform-e2e branch September 29, 2026 15:02
@github-actions github-actions Bot locked and limited conversation to collaborators Sep 29, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant