Skip to content

ci!: keep only the image, deploy and release workflows - #8

Merged
dennis-tra merged 8 commits into
mainfrom
ci/simplify-shared-workflows
Nov 9, 2026
Merged

dennis-tra merged 8 commits into
mainfrom
ci/simplify-shared-workflows

Conversation

@dennis-tra

Copy link
Copy Markdown
Contributor

What and why

The shared workflows carried the needs of single repos as inputs. go.yml and python.yml had 7 ClickHouse inputs that only nebula used, and inputs such as goprivate, smoke-url and gcp-service-account that no repo used. A workflow with 15 inputs is harder to read than 20 lines in the repo.

This is version 2:

  • go.yml, python.yml and terraform.yml are removed. A repo spells out a check job from a template and runs just ci. The needs of one repo, such as a service container, stay in that repo's ci.yml.
  • image.yml, deploy-ecs.yml and release.yml stay shared, because they hold production credentials or set a naming contract. Each lost the inputs that no repo needs.
  • deploy-ecs.yml checks the deploy label by itself when a workflow_run event starts the deploy. A repo has one deploy.yml with the triggers workflow_dispatch and workflow_run, and ci.yml has no deploy job.
  • release.yml fails unless the tagged commit has a passing ci-ok, so a repo does not run its checks again on a tag. It uses goreleaser when the repo has a .goreleaser.yaml.
  • The templates spell out the check job and call @v2. python-service-ci is new.
  • just lint and CI run scripts/lint.sh.

Callers of @v1 keep working.

How I checked it

  • just ci passes locally: actionlint 1.7.12 on the workflows and on the templates against the workflows of this commit.
  • Not tested: deploy-ecs.yml with a workflow_run event, and the ci-ok gate of release.yml. Both need a merged caller. The plan is to test the deploy with boomo first.

Deploy

After the merge, tag the major version: git tag v2.0.0 && git tag v2 && git push origin v2.0.0 v2. Move the ## [Unreleased] section of CHANGELOG.md to ## [2.0.0] first. The pull requests that move the repos to @v2 cannot start their image jobs before this tag exists.

This conflicts with #6 in README.md.

@dennis-tra

Copy link
Copy Markdown
Contributor Author

Pushed 8514790: the deploy is now the last job of the CI run, so deploy-ecs.yml no longer waits for an image (the workflow_run trigger and IMAGE_WAIT_MINUTES are gone). The label check runs when a push calls it. ci-ok is removed from the templates and this repo's CI; the release gate checks Checking the code. Boomo follows in probe-lab/boomo#30.

just lint and CI now run the same script, so a wrong input name in a
template fails on a laptop too.
The shared workflows carried the needs of single repos as inputs, such
as a ClickHouse server for the tests of nebula. A repo now spells out
its check job from a template and runs just ci, and keeps its own needs
in its own ci.yml. Only the workflows that hold production credentials
or set a naming contract stay shared.

deploy-ecs.yml checks the deploy label by itself when a workflow_run
event starts it. release.yml fails unless the tagged commit passed
ci-ok, and uses goreleaser when the repo has a .goreleaser.yaml.

BREAKING CHANGE: go.yml, python.yml and terraform.yml are removed, and
image.yml, deploy-ecs.yml and release.yml lose inputs. Callers of @v1
keep working. Move a repo with the templates and call @v2.
The download script refuses a directory that does not exist.
A deploy no longer waits for an image. The deploy job of ci.yml runs
after the image job of the same push, and deploy-ecs.yml checks the
deploy label of the merged pull request when a push calls it. The
release gate and the required check use the check 'Checking the code'
instead of ci-ok.
just lint stopped when actionlint was missing. It now downloads version
1.7.12 into ~/.cache/actionlint when it is not on the PATH, so a local
run and CI use the same version.
A label event no longer starts the CI of this repo: only opened,
synchronize, reopened and ready_for_review do. A draft pull request skips
the lint. The lint job installs actionlint through scripts/lint.sh now, so
its install step is removed. The fixture image job is removed too.
Before, an image build of a pull request was never pushed. Now a pull
request with the label push-image pushes its image to ECR, and a merge or
a manual run pushes too. Other labels do not start the workflow again.

The push input now defaults to false and forces a push. The commit input
builds a commit other than the one of the event. The service templates
listen for labeled events, skip the image job for drafts and failed checks,
and no longer pass push.
@dennis-tra
dennis-tra force-pushed the ci/simplify-shared-workflows branch from c72b48d to 8eab51d Compare November 9, 2026 13:16
@dennis-tra
dennis-tra merged commit e10c088 into main Nov 9, 2026
1 check passed
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