Skip to content

Contributing Release Flow

Fábio Luciano edited this page Jun 11, 2026 · 2 revisions

Contributing & Release Flow

Development

git clone --recurse-submodules https://github.com/fabioluciano/tekton-events-relay
cd tekton-events-relay
go build ./...
go test ./... -short      # full suite needs the wiki submodule (example-config tests)

Tooling is pinned via .mise.toml; pre-commit hooks (.pre-commit-config.yaml) run gofmt, golangci-lint, yamllint, kubeconform and kube-linter.

Conventions:

  • Conventional Commits (feat:, fix:, chore:…) — they drive versioning; a commit template lives in .gitmessage.
  • Tests are mandatory and must pass with -race; external APIs are always mocked (httptest / miniredis) — no test may call a real service.
  • New config keys ship with values.yaml defaults and values.schema.json entries in the same PR.
  • New behavior goes behind a flag whose default preserves current behavior.

CI

Every PR runs Go build/test/lint (ci-go), Docker build (ci-docker), Helm lint + kubeconform (ci-helm) and CodeQL.

Releases

Releases are fully automated with semantic-release on merges to main:

  1. Commit messages determine the next semver (fix → patch, feat → minor, !/BREAKING CHANGE → major).
  2. The pipeline tags, generates the changelog, builds the multi-arch image and Helm chart, and publishes both to ghcr.io.
  3. Artifacts are Cosign-signed (keyless OIDC, logged in Rekor) — verification commands are in the README.

Nothing manual: no version bumps in PRs, no hand-written changelog entries.

Wiki

This wiki is a git submodule (wiki/) of the main repo. The repo's test suite parses examples/config.yaml — keep it valid (tekton-events-relay --validate --config wiki/examples/config.yaml) when editing.

Clone this wiki locally