[VC-59470] Run the e2e suites against master every night - #842
wallrj-cyberark wants to merge 1 commit into
Conversation
Nothing runs the end-to-end suites on master. They are reachable only by labelling a pull request or by pressing Run workflow, so a green master says nothing about whether they pass, and the last three manual runs show why that matters. Add a 02:00 UTC schedule to e2e.yaml. Midnight is already taken by govulncheck, and 02:00 puts the result in before the working day. The job gates keyed on `github.event_name == 'workflow_dispatch'` become `github.event_name != 'pull_request'`. Outside a pull request there are no labels to read, so every suite should run; this covers the schedule and the Run workflow button together, and does not change what happens on a pull request. Each gate also gains the `github.repository` check that govulncheck.yaml uses, so the nightly does not run in forks. Add a notify job for the nightly only. A suite that fails on a labelled pull request is already in front of whoever added the label, so only the schedule posts to Slack, and it posts once for the whole run rather than once per suite. A cancelled suite counts as not passing, since a nightly that never finished is as uninformative as one that failed. SLACK_WEBHOOK is not set on this repository yet. Until it is, the job records the failure in the run summary and warns, so a missing secret cannot turn a passing nightly red. The summary is Markdown and Slack is mrkdwn, so the two carry different link syntax for the same run URL. Expect the first nights to be red. test-e2e has failed on master on every manual run since 2026-09-16, caused by CIS dropping async Kafka messages rather than by anything here. ark-test-e2e and ngts-test-e2e have passed on all three, which is the first real evidence that the "conflicting tagging values" flake behind the TEMPORARY comment on ark-test-e2e has gone. Co-Authored-By: Claude <noreply@anthropic.com> Signed-off-by: Richard Wall <richard.wall@cyberark.com>
df51d5e to
eca2a5b
Compare
|
Self-review of this branch turned up four things worth fixing, now applied in eca2a5b. Two more I have left alone and explained. Fixed1. 2. The notify job had no timeout, and 3. The run link in the job summary was not clickable. I was writing the Slack mrkdwn string verbatim into 4. The Not fixed, deliberately5. This is pre-existing, but this pull request makes it worse — two per night, indefinitely, rather than two per labelled run. Out of scope for a scheduling change, so it is tracked separately with a suggested cleanup step or reaper. 6. The Checked and cleared
|
The end-to-end suites now run against
masterevery night at 02:00 UTC. This is the last substantive piece of the ticket that #833 and #837 began.Why now?
Nothing runs the suites on
master. #833 added a Run workflow button and #837 made the pull request labels work, but both need a person. A greenmastertherefore still says nothing about whether the e2e tests pass.The three manual runs since 2026-09-16 show exactly what we have been missing:
ark-test-e2engts-test-e2etest-e2ePlease expect the first nights to be red
test-e2ehas failed on every run for three days. It is not this repository: the cause is CIS dropping async Kafka messages, which is being worked on separately and is still open. We decided to schedule all three suites anyway rather than holdtest-e2eback, because a suite that is genuinely broken should look broken.Do not read the first red nightly as a regression from this pull request.
The same table is the first real evidence that the flake behind the
TEMPORARYcomment onark-test-e2ehas gone — three for three onmaster. That comment is now stale, but removing the label gate is a separate decision and not part of this change.What changes
scheduletrigger one2e.yaml,0 2 * * *. Midnight is alreadygovulncheck, and 02:00 UTC puts the result in before the working day.github.event_name == 'workflow_dispatch'becomesgithub.event_name != 'pull_request'in the three job gates. Outside a pull request there are no labels to read, so everything should run; this covers the schedule and the button together. Pull request behaviour is untouched.github.repositorycheck on each gate, copyinggovulncheck.yaml, so the nightly does not run in forks.notifyjob, nightly only.About the Slack notification
SLACK_WEBHOOKdoes not exist on this repository yet. Until it is added the job writes the failure to the run summary and raises a warning annotation, so a missing secret cannot turn a passing nightly red. Add the secret and it starts posting with no further change.It deliberately only fires on the schedule. A suite that fails on a labelled pull request is already in front of whoever added the label, and a Slack message for that would be noise. It posts once per run rather than once per suite, so a bad night is one notification, and names which suites failed.
Gate behaviour across every event, including forks and the notify job
test-e2efailsworkflow_dispatchtest-e2etest-e2etest-ngtsaddedngts-test-e2ekind/cleanupaddedHow this was tested
The schedule itself cannot be proved before merge, since
scheduleonly fires from the default branch. What I did check:if:expression contains a stray newline from YAML folding.SLACK_WEBHOOKempty it writes the summary line, emits the warning and exits 0. With it set it builds the payload and posts;jqis used to build the JSON so the colons, angle brackets and em dash in the message cannot break it.keep-e2e-clustergate readsgithub.event.pull_request.labels, which is empty on a schedule, so the negation holds and the nightly still deletes its GKE cluster.After merge I will watch the first nightly and report what it does.
[with Claude]