Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 3 additions & 19 deletions .github/workflows/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -48,31 +48,15 @@ The repository uses multiple GitHub Actions workflows. What runs and when:
3. Runs IntegrationTests with diagnostic output
4. Uploads logs per-OS

### 4) Create Release (`.github/workflows/release.yml`)

- **Triggers**: `workflow_dispatch` (manual trigger from GitHub Actions UI)
- **Inputs**:
- `release_type`: Choose from `beta`, `rc`, or `stable`
- `version_override`: (Optional) Specify exact version number, otherwise GitVersion calculates it
- **Process**:
1. Checks out `main` branch
2. Determines version using GitVersion or override
3. Creates annotated git tag (e.g., `v2.0.1-rc.1` or `v2.1.0`)
4. Creates release commit with message
5. Pushes tag and commit to repository
6. Creates GitHub Release (marked as pre-release if not stable)
7. Automatically triggers publish workflow (see below)
- **Purpose**: Automates the release process to prevent manual errors

### 5) Publish to NuGet (`.github/workflows/publish.yml`)
### 4) Publish to NuGet (`.github/workflows/publish.yml`)

- **Triggers**: push to `develop` and tags `v*` (ignores `**.md`)
- Uses GitVersion to compute SemVer, builds Release, packs Terminal.Gui and Terminal.Gui.Interop.Spectre with symbols, and pushes both to NuGet.org using `NUGET_API_KEY`
- **Automatically triggered** by the Create Release workflow when a new tag is pushed
- **Automatically triggered** when a `v*` tag is pushed — typically by the **Finalize Release** workflow after a release PR (from **Prepare Release**) is merged into `main`
- **Additional actions on tag push** (`v*`):
- Triggers Terminal.Gui.templates repository update via repository_dispatch (requires `TEMPLATE_REPO_TOKEN` secret)

### 6) Build and publish API docs (`.github/workflows/api-docs.yml`)
### 5) Build and publish API docs (`.github/workflows/api-docs.yml`)

- **Triggers**: push to `main`
- Builds DocFX site on Windows and deploys to GitHub Pages
Comment on lines +59 to 62
Expand Down
144 changes: 0 additions & 144 deletions .github/workflows/release.yml

This file was deleted.

22 changes: 10 additions & 12 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -336,23 +336,21 @@ foreach (Rune rune in text.EnumerateRunes ())

### Automated Release Workflow

Releases are now automated using GitHub Actions to prevent manual errors. To create a release:
Releases are automated using GitHub Actions to prevent manual errors. The flow is PR-based: **Prepare Release** opens a release PR from `develop` → `main`, and merging it runs **Finalize Release**. To create a release:

1. **Navigate to Actions tab** in the GitHub repository
2. **Select "Create Release" workflow** from the left sidebar
2. **Select "Prepare Release" workflow** from the left sidebar
3. **Click "Run workflow"** button
4. **Configure release parameters:**
- **Branch:** Ensure `main` is selected
- **Release type:** Choose from `prealpha`, `alpha`, `beta`, `rc`, or `stable`
- **Release type:** Choose from `beta`, `rc`, or `stable`
- **Version override:** (Optional) Specify exact version (e.g., `2.0.0`), otherwise GitVersion calculates it automatically
5. **Click "Run workflow"** to start the automated release process

The workflow will:
- Create an annotated git tag (e.g., `v2.0.0-prealpha` or `v2.0.0`)
- Create a release commit on `main`
- Push the tag and commit to the repository
- Create a GitHub Release
- Automatically trigger the publish workflow to push the package to NuGet.org
5. **Click "Run workflow"** to create the release PR

Prepare Release creates a `release/vX.Y.Z` branch (with the GitVersion label updated for the release type) and opens a PR into `main`. After CI passes, **review and merge that PR**. Merging triggers **Finalize Release**, which:
- Creates an annotated git tag (e.g., `v2.0.0-beta.1` or `v2.0.0`)
- Creates a GitHub Release with auto-generated notes
- Opens a back-merge PR from `main` → `develop`
- Triggers the publish workflow (via the `v*` tag) to push the package to NuGet.org

## What NOT to Do

Expand Down
1 change: 0 additions & 1 deletion Terminal.Gui/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -111,7 +111,6 @@ All workflows are in [`.github/workflows/`](../.github/workflows/):
| **[prepare-release.yml](../.github/workflows/prepare-release.yml)** | Manual dispatch | Creates a release PR from `develop` → `main` with label updates |
| **[finalize-release.yml](../.github/workflows/finalize-release.yml)** | Release PR merged to `main` | Creates tag, GitHub Release, back-merge PR to `develop` |
| **[publish.yml](../.github/workflows/publish.yml)** | Push to `main` or `develop`, version tags | Builds Release config, packs, and publishes to NuGet.org |
| **[release.yml](../.github/workflows/release.yml)** | Manual dispatch | **(Legacy)** Direct tag-and-release on `main`; superseded by prepare/finalize |
| **[build-validation.yml](../.github/workflows/build-validation.yml)** | Push/PR to `main` or `develop` | Builds all configurations to validate compilation |
| **[unit-tests.yml](../.github/workflows/unit-tests.yml)** | Push/PR to `main` or `develop` | Runs all unit tests |
| **[api-docs.yml](../.github/workflows/api-docs.yml)** | Push to `develop` | Builds and deploys API docs to GitHub Pages |
Expand Down
1 change: 0 additions & 1 deletion Terminal.slnx
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,6 @@
<File Path=".github/workflows/publish.yml" />
<File Path=".github/workflows/quick-build.yml" />
<File Path=".github/workflows/README.md" />
<File Path=".github/workflows/release.yml" />
<File Path=".github/workflows/stress-tests.yml" />
<File Path=".github/workflows/unit-tests.yml" />
<File Path="copilot-instructions.md" />
Expand Down
Loading