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.yamldefaults andvalues.schema.jsonentries 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:
- Commit messages determine the next semver (fix β patch, feat β minor,
!/BREAKING CHANGEβ major). - The pipeline tags, generates the changelog, builds the multi-arch image and Helm chart, and publishes both to
ghcr.io. - 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.