Skip to content

docs: document atomic draft release workflow #2006

@botantler

Description

@botantler

Summary

This PR updates the CONTRIBUTING.md documentation to describe the atomic draft release workflow that was introduced in PR #2003.

Changes

  • Added explanation of the draft release strategy in the CD workflow section
  • Documented that GoReleaser creates releases as drafts initially
  • Explained that VSCode extension is uploaded as a release asset
  • Clarified that the release is only published after all artifacts are uploaded
  • This prevents partial releases from being published to users

Context

The recent changes to .github/workflows/cd.yaml and .goreleaser.yaml implemented an atomic publication strategy where:

  1. GoReleaser creates a draft release with binaries and Docker images
  2. VSCode extension job builds and uploads the extension as a release asset
  3. A final publish-release job waits for both jobs to complete, then publishes the draft

This ensures that users never see incomplete releases with missing artifacts.

Testing

  • ✅ Documentation builds successfully with npm run build
  • ✅ No broken links or formatting issues
  • ✅ Changes are consistent with actual workflow implementation

Related

  • Closes #2003 (documentation gap)
  • Related to the atomic release publication feature

AI generated by Update Docs


Note

This was originally intended as a pull request, but the git push operation failed.

Workflow Run: View run details and download patch artifact

The patch file is available in the agent-artifacts artifact in the workflow run linked above.

To apply the patch locally:

# Download the artifact from the workflow run https://github.com/devantler-tech/ksail/actions/runs/21526901878
# (Use GitHub MCP tools if gh CLI is not available)
gh run download 21526901878 -n agent-artifacts

# The patch file will be at agent-artifacts/tmp/gh-aw/aw.patch after download
# Apply the patch
git am agent-artifacts/tmp/gh-aw/aw.patch
Show patch (39 lines)
From 2d188504bcdcbe111b6f99289f8d874255573667 Mon Sep 17 00:00:00 2001
From: "github-actions[bot]" <github-actions[bot]@users.noreply.github.com>
Date: Fri, 30 Jan 2026 18:53:50 +0000
Subject: [PATCH] docs: document atomic draft release workflow

- Add explanation of the draft release strategy in CD workflow
- Document that releases are created as drafts initially
- Explain that release is published only after all artifacts are uploaded
- Clarify that this prevents partial releases from being published

This documents the changes introduced in PR #2003 which implemented
atomic release publication via draft workflow.
---
 CONTRIBUTING.md | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index de23f0e..1f5ecbb 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -212,6 +212,14 @@ The release process for KSail is fully automated and split across two GitHub Act
 1. **Release** (`.github/workflows/release.yaml`) runs on pushes to `main` and creates the next semantic version tag (`vX.Y.Z`) based on Conventional Commits (typically the PR title / squash-merge commit message).
 2. **CD - Go** (`.github/workflows/cd.yaml`) runs on tag pushes (`v*`) and uses **GoReleaser** to build and publish release artifacts.
 
+The CD workflow uses an atomic publication strategy:
+
+- GoReleaser creates a **draft release** with binaries and Docker images
+- VSCode extension is built and uploaded as a release asset
+- Only after **all artifacts are uploaded**, the draft release is automatically published
+
+This ensures releases are never published in a partial state.
+
 Versioning conventions:
 
 - **fix:** Patch release (e.g. 1.0.1)
-- 
2.52.0

Metadata

Metadata

Labels

No labels
No labels

Type

No type

Projects

Status

✅ Done

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions