Skip to content

Release router, TEI, models, whisper and chart as relctl components - #24

Merged
eksrha merged 5 commits into
mainfrom
feat/relctl-components
Nov 3, 2026
Merged

eksrha merged 5 commits into
mainfrom
feat/relctl-components

Conversation

@eksrha

@eksrha eksrha commented Nov 3, 2026 •

Copy link
Copy Markdown
Contributor

What changes

Every independently releasable part becomes a relctl 2.11.0 component (.relctl.yaml) with its own tag (<component>/YYYYMM.D.N), latest release and CalVer counter. A merge to main now releases and builds only the components whose paths changed (relctl release changed).

Component Artifacts Image tag
router inference-router <version>
tei tei-base, tei-runtime (share one version) <version>
embedding-model tei-model-init bge-m3-<version>, latest
reranker-model tei-reranker-model-init (matrix kept, one version for the component) <slug>-<version>; latest only for the default model
whisper whisper <whisper-model>-<version>, latest
chart Helm chart (OCI) chart version <version>
  • release.yml now contains all jobs (release-models.yml is removed). A changes job computes the changed components; per component a release job (draft via new component-release.yml) is followed by build, push, cosign signing and publish. Build jobs are guarded with release-id != '' (relctl exports the id only for a draft).
  • release-models.yml is folded in: the manual run now takes components (comma list or all) to force a release without changes.
  • relctl-action's create-release.yml has no component input, so component-release.yml calls relctl directly through layer87-labs/relctl-action@v1 with relctl-version: 2.11.0.
  • Hand-made date +%Y.%m model tags are gone. Cosign signing and the Helm push are unchanged.
  • Makefile: per-component version variables, model tags follow the workflow, VERSION default strips the <component>/ prefix, the broken versions target (space indentation) is fixed. AGENTS.md and README describe the new scheme (relctl CalVer is YYYYMM.D.N, no leading zero on the day).

Decisions

  • Chart is its own component (not tied to the router): chart changes (templates, values) should be releasable without a router build. Because it pins the router and tei images, it is also released after every router or tei release (its paths include theirs).
  • Chart image tags: router, tei-base and tei-runtime no longer share one version, so .Chart.AppVersion cannot be the default tag for all of them. When packaging, the workflow writes the latest released router and tei versions into a copy of values.yaml (yq) and sets appVersion to the router version. values.yaml in git keeps tag: ""; only comments changed there.
  • Model/whisper tags in values.yaml are not changed (bge-m3-2026.06, mmarco-...-2026.10, large-v3-turbo-2026.10): those images still exist, existing consumers are unaffected. Bump them by hand to the new <slug>-<version> tags when wanted.
  • Embedding/whisper/reranker latest behaviour is unchanged.
  • MODEL_DATE build args in the model Containerfiles now receive the component version.

How to verify

Locally done: actionlint, yamllint, go build ./..., make test, make -n docker versions with a sample VERSION. The pipeline itself could not be run.
After merge: check the Release run, then gh release list and the GHCR tags.

Risks / what the maintainer must check after merge

  • First release of every component: no <component>/... tag exists yet, so relctl reports all six as changed and the first run releases and builds everything (router and tei first, then the chart). Old plain tags (202610.20.1) are not seen by components.
  • Verify that relctl release changed step outputs (RELCTL_CHANGED, RELCTL_LATEST_VERSION) are visible in the plain run: steps, and that the chart job finds the just-published router/tei tags.
  • The chart job needs the runner's yq (mikefarah v4, preinstalled on ubuntu-latest) and helm.
  • New image tags use <slug>-202611.3.1 instead of <slug>-2026.10; anything that selects model images by the old format must be updated.
  • The first release of a component that fails after the draft was created leaves a draft; re-run via manual dispatch with components.
  • A concurrency group serialises releases so CalVer counters cannot collide.

@github-actions

github-actions Bot commented Nov 3, 2026

Copy link
Copy Markdown
Possible relctl commands for this Pull Request

Version scheme: calver. The version of the release is the date of the release (YYYYMM.D.N, N counts the releases of that day). Branch prefixes and comment commands have no effect.

Need more help?

Have a look at my repo

This message was created by relctl and can be disabled by the env variable RELCTL_SILENT=true

@eksrha
eksrha merged commit e1d179d into main Nov 3, 2026
3 checks passed
@eksrha
eksrha deleted the feat/relctl-components branch November 3, 2026 08:57
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