microsoft/hve-core

Public

mirrored fromhttps://github.com/microsoft/hve-coreAvailable

CodeCommitsIssuesPull requestsActionsInsightsSecurity
4cd2ef910daa8a968caeaf3327631d7a072d4e3c

Branches

Tags

  • No tags available.
0Branches0Tags
Go to file
Add file
Code

Clone

HTTPS

Download ZIP

docs/contributing/release-process.md

186lines · modecode

1---
2title: Release Process
3description: Trunk-based release workflow using release-please automation and automated VS Code extension publishing
4sidebar_position: 9
5ms.date: 2026-04-17
6ms.topic: how-to
7author: WilliamBerryiii
8---
9
10## Overview
11
12This project uses trunk-based development with automated release management. All changes go directly to `main` via pull requests, and [release-please](https://github.com/googleapis/release-please) handles version bumping, changelog generation, and GitHub releases automatically.
13
14## How Releases Work
15
16```mermaid
17flowchart LR
18 A[Feature PR] -->|merge| B[main branch]
19 B --> C[release-please updates Release PR]
20 C -->|you merge| D[Draft release + tag created]
21 D --> E[CI attaches assets and attestations]
22 E --> F[publish-release promotes to published]
23 F -->|automatically| G[Extension published to marketplace]
24```
25
26When you merge a PR to `main`:
27
281. **release-please analyzes commits** using conventional commit messages
292. **Updates the Release PR** with version bumps and changelog entries
303. **You decide** when to merge the Release PR
314. **Merging creates** a draft GitHub Release with the changelog
325. **CI attaches assets**, then the `publish-release` job promotes the draft to published
336. **Extension publishing** triggers automatically when the release is published
34
35## The Release PR
36
37The Release PR is not a branch cut or deployment. It is a staging mechanism containing only version metadata changes:
38
39* Updated `package.json` version
40* Updated `extension/templates/package.template.json` version
41* Updated `.github/plugin/marketplace.json` (version and plugins[*].version)
42* Updated `plugins/*/.github/plugin/plugin.json` (glob across all plugin directories)
43* Updated `CHANGELOG.md`
44
45Your actual code changes are already on `main` from your feature PRs. The Release PR accumulates version and changelog updates until you are ready to release.
46
47### Version Calculation
48
49Release-please determines the version bump from commit prefixes:
50
51| Commit Prefix | Version Bump | Example |
52|--------------------------------|--------------|----------------------|
53| `feat:` | Minor | 1.0.0 → 1.1.0 |
54| `fix:` | Patch | 1.0.0 → 1.0.1 |
55| `feat!:` or `BREAKING CHANGE:` | Major | 1.0.0 → 2.0.0 |
56| `docs:`, `chore:`, `refactor:` | No bump | Grouped in changelog |
57
58> [!NOTE]
59> Stable releases must have an even minor version number (e.g., `1.0`, `1.2`). Odd minor versions (e.g., `1.1`, `1.3`) are reserved for pre-release or unstable versions. This convention is enforced by CI (`release-stable.yml`).
60
61## For Contributors
62
63Write commits using conventional commit format. This enables automated changelog generation and version bumping.
64
65```bash
66# Features (triggers minor version bump)
67git commit -m "feat: add new prompt for code review"
68
69# Bug fixes (triggers patch version bump)
70git commit -m "fix: resolve parsing error in instruction files"
71
72# Documentation (no version bump, appears in changelog)
73git commit -m "docs: update installation guide"
74
75# Breaking changes (triggers major version bump)
76git commit -m "feat!: redesign configuration schema"
77```
78
79For more details, see the [commit message instructions](https://github.com/microsoft/hve-core/blob/main/.github/instructions/hve-core/commit-message.instructions.md).
80
81## For Maintainers
82
83### Reviewing the Release PR
84
85The Release PR titled "chore(main): release X.Y.Z" updates automatically as PRs merge. When ready to release:
86
871. Review the accumulated changelog in the PR
882. Verify version bump is appropriate for the changes
893. Merge the Release PR (this creates a draft GitHub Release)
904. CI attaches VSIX packages, plugin ZIPs, SBOMs, and attestations to the draft release
915. The `publish-release` job promotes the draft to a published release
926. The `release: published` event triggers the marketplace publish workflow automatically
93
94### Release Cadence
95
96Releases are on-demand. Merge the Release PR when:
97
98* A meaningful set of changes has accumulated
99* A critical fix needs immediate release
100* A scheduled release milestone is reached
101
102There is no requirement to release after every PR merge.
103
104## Extension Publishing
105
106VS Code extension publishing is automated. When the `publish-release` job promotes a draft release to published, the `release: published` event triggers [`release-marketplace-stable.yml`](https://github.com/microsoft/hve-core/blob/main/.github/workflows/release-marketplace-stable.yml), which packages and publishes the extension to the VS Code Marketplace using Azure OIDC authentication.
107
108### Manual Fallback
109
110If the automated publish did not trigger or you need to republish, use the workflow dispatch fallback:
111
1121. Navigate to **Actions → Stable Marketplace Publish** in the repository
1132. Select **Run workflow**
1143. Choose the `main` branch
1154. Optionally specify a version (defaults to `package.json` version)
1165. Optionally enable dry-run mode to package without publishing
1176. Click **Run workflow**
118
119### When to Publish
120
121Publish the extension after merging a Release PR that includes extension-relevant changes:
122
123* New prompts, instructions, or custom agents
124* Bug fixes affecting extension behavior
125* Updated extension metadata or documentation
126
127Documentation-only releases may not require an extension publish.
128
129## Version Quick Reference
130
131| Action | Result |
132|--------------------------|---------------------------------------------------------------|
133| Merge feature PR to main | Release PR updates with new changelog entry |
134| Merge Release PR | Draft GitHub Release created, then auto-promoted to published |
135| Release published | Extension automatically published to marketplace |
136| Merge docs-only PR | Changelog updated, no version bump |
137
138## Extension Channels and Maturity
139
140The VS Code extension is published to two channels with different stability expectations.
141
142### Extension Channels
143
144| Channel | Stability | Included Maturity Levels | Audience |
145|-------------|------------------|-------------------------------------|----------------|
146| Stable | Production-ready | `stable` only | All users |
147| Pre-release | Early access | `stable`, `preview`, `experimental` | Early adopters |
148
149### Maturity Levels
150
151Each prompt, instruction, agent, and skill can set `maturity` in `collections/*.collection.yml` under `items[]`:
152
153| Level | Description | Included In |
154|----------------|-------------------------------------------------|---------------------|
155| `stable` | Production-ready, fully tested | Stable, Pre-release |
156| `preview` | Feature-complete but may have rough edges | Pre-release only |
157| `experimental` | Early development, may change significantly | Pre-release only |
158| `deprecated` | Scheduled for removal, excluded from all builds | Neither |
159
160### Maturity Lifecycle
161
162```mermaid
163stateDiagram-v2
164 [*] --> experimental : New artifact
165 experimental --> preview : Core features complete
166 preview --> stable : Production tested
167 stable --> deprecated : Superseded or obsolete
168 deprecated --> [*] : Removed
169```
170
171### Contributor Guidelines
172
173| Guideline | Action |
174|--------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
175| New contributions | Set `stable` on collection items unless explicitly targeting early adopters |
176| Experimental work | Set `experimental` on collection items for proof-of-concept or rapidly evolving artifacts |
177| Preview promotions | Set `preview` on collection items when core functionality is complete |
178| Stable promotions | Set `stable` on collection items after production validation |
179| Deprecation | Set `deprecated` on collection items before removal to provide transition time. Move the artifact file to `.github/deprecated/{type}/` so the build system excludes it from all downstream surfaces automatically. See [AI Artifacts Architecture](../architecture/ai-artifacts.md#deprecated-artifacts) for the full deprecation policy. |
180
181---
182
183<!-- markdownlint-disable MD036 -->
184*🤖 Crafted with precision by ✨Copilot following brilliant human instruction,
185then carefully refined by our team of discerning human reviewers.*
186<!-- markdownlint-enable MD036 -->
187