release: run smoke checks in a workflow on a self-hosted runner
Maintainers usually reply within 1 day
Nobody has claimed this yet.
Assessment
- Difficulty
- 5/5
- Estimated time
- Over a week
- Newbie friendliness
- 35/100
- Issue type
- Feature
- Clarity
- Mostly clear
- Activity status
- Active
- Tech stack
- github-actions, go
- Domain
- ci-cd, distributed-systems, release
Research direction
Start with the release workflow configuration and doc/release-guide.md, then inspect the Makefile targets for the listed checks and the sweep command for the cluster run. Implement the workflow for workflow_dispatch and release/v* pushes, with commit and runner access safeguards, pass criteria, and uploaded reports. Done means the workflow gates publishing as documented and its checks and cluster smoke run produce the required artifacts and results.
Written by the indexing model from the issue text.
Description
Goal
Add release smoke checks to the release process.
Run them in a GitHub workflow on a self-hosted runner that has access to our cluster.
Why
gorums-release prepare runs make test and make testrace, and CI runs make test and golangci-lint.
Nothing runs these checks before a release:
make integrationtest(real TCP; the default tests use in-memory bufconn)make stresstest(ordering under load)make lint,make modernize,make goplscheck- tests of the
benchkitandexamplesmodules (check thatmake testcovers them) - a multi-host run on the real cluster, which finds connection, reconnect, and clock-sync problems
Proposal
- Add a workflow, triggered by
workflow_dispatchand by a push torelease/v*branches.
It runs on a self-hosted runner on the cluster. - The workflow runs the local checks above, then the cluster smoke run:
sweep -test 9 -sweep stream-dedup-smoke -stream-mode dual,dedup -benchmarks SymmetricQuorumCall,SymmetricMulticast. - The workflow checks the commit it builds: it must be the release candidate commit, not a feature branch.
- Pass criteria:
- every manifest has
"status": "succeeded"; - no degraded reps;
agg.csvhas non-zero throughput and a latency for every row;- clock-offset drift in
sweep.logis small.
The emptySymmetricMulticastlatency time series is a known issue and is not a failure until it is fixed.
- every manifest has
- Upload the sweep report (
report.pdf,agg.csv, logs) as workflow artifacts. - Update
doc/release-guide.md: add a "Smoke Checks" step between "Wait for CI" and "Publish", and require the workflow to pass beforegorums-release publish.
Open questions
- How does the runner reach the cluster, and who maintains it?
- Should
publishrefuse to run unless the smoke workflow passed on the release commit? - Self-hosted runners on a public repository: restrict the workflow to
release/*branches and trusted actors, so that a fork PR cannot run code on the cluster.
- Dominant language
- Go
- Stars
- 149
- Forks
- 15
- Avg merge
- 1d 2h
- Merged PRs (30d)
- 50
Getting set up
This project ships no dev container, Dockerfile or contributing guide, so setting up is up to you: start from its README, and see our first-contribution guide for the general steps.
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from relab/gorums
-
Difficulty 5/5 Over a week Newbie friendliness 15/100
Maintainers usually reply within 1 day
-
cleanup performance
Difficulty 4/5 3-5 days Newbie friendliness 35/100
Maintainers usually reply within 1 day
-
doc
Difficulty 3/5 Half a day Newbie friendliness 45/100
Maintainers usually reply within 1 day
-
Difficulty 4/5 3-5 days Newbie friendliness 35/100
Maintainers usually reply within 1 day
-
enhancement
Difficulty 5/5 Over a week Newbie friendliness 30/100
Maintainers usually reply within 1 day
Similar issues
-
component:obi contribfest go test
Difficulty 2/5 Under an hour Newbie friendliness 83/100
open-telemetry/opentelemetry-ebpf-instrumentation#4143 · 1 comment ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
Maintainers usually reply within 1 day
-
area/ambient
Difficulty 2/5 1-3 hours Newbie friendliness 74/100
Maintainers usually reply within 1 day
-
kind/cleanup
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
kubernetes-sigs/kueue#18324 ·
Maintainers usually reply within 1 day
-
enhancement
Difficulty 2/5 1-3 hours Newbie friendliness 84/100