Release¶
We use Github Action to release using semantic-release and goreleaser.
Strategy¶
We release as needed, for example if we have added some rules or fixes any bug.
The release is currently manually and gets triggered by admins.
If you need to get a release, simply create an Issue or mention it in your pr.
ReleaseFlow¶
sequenceDiagram
autonumber
participant Dev as Developer
participant DeployWF as release.yml (orchestrator)
participant ReleaseEnvironment as Environment
participant ReleaseGate as release-actions.yml (reusable)
participant SR as semantic-release
participant GH as GitHub (Tags/Releases, GHCR)
participant GR as GoReleaser
Dev->>DeployWF: manual dispatch Release-Gate
DeployWF->>ReleaseEnvironment: wait for approval
Dev->>ReleaseEnvironment: Approve Deployment
ReleaseEnvironment->>DeployWF: Start deployment
DeployWF->>Release: uses: ./.github/action/action.yml
Release->>SR: analyze commits (conventional commits)
SR-->>ReleaseGate: decision (release? yes/no)
alt New release
SR->>GH: generate changelog + create tag + release
ReleaseGate-->>DeployWF: outputs {released:true, tag:vX.Y.Z, version:X.Y.Z}
DeployWF->>GH: checkout ref = tag
DeployWF->>GR: build artifacts (binaries)
DeployWF->>GH: publish release assets
DeployWF->>GH: buildx + push Docker images to GHCR
else No release
ReleaseGate-->>DeployWF: outputs {released:false}
DeployWF--x GH: skip build & push
end
Artifacts¶
We release multiple artifacts:
Type | Arc | Link |
---|---|---|
Docker Container | arm64 and amd64 for linux | https://github.com/Marcel2603/tfcoach/pkgs/container/tfcoach%2Ftfcoach |
Executable | arm64 and amd64 for linux/darwin/windows | https://github.com/Marcel2603/tfcoach/releases |