74 lines
2.4 KiB
Markdown
74 lines
2.4 KiB
Markdown
# Releases
|
|
|
|
Releases follow the pattern `v{SEMVER}-{STADIUM}` (e.g., `v1.0.0-azteca`). Codenames are drawn alphabetically from the [stadium list](CHANGELOG.md#stadium-release-names) of famous football stadiums that hosted FIFA World Cup matches.
|
|
|
|
## Workflow
|
|
|
|
### 1. Create a Release Branch
|
|
|
|
Branch protection prevents direct pushes to `master`, so all release prep goes through a PR:
|
|
|
|
```bash
|
|
git checkout master && git pull
|
|
git checkout -b release/v1.0.0-azteca
|
|
```
|
|
|
|
### 2. Update CHANGELOG.md
|
|
|
|
Move items from `[Unreleased]` to a new release section in [CHANGELOG.md](CHANGELOG.md):
|
|
|
|
```bash
|
|
# Move items from [Unreleased] to new release section
|
|
# Example: [1.0.0 - azteca] - 2026-01-22
|
|
git add CHANGELOG.md
|
|
git commit -m "docs: prepare changelog for v1.0.0-azteca release"
|
|
git push origin release/v1.0.0-azteca
|
|
# Open a PR, get it reviewed, and merge into master
|
|
```
|
|
|
|
### Pre-release Checklist
|
|
|
|
Before creating the tag, verify all of the following:
|
|
|
|
- [ ] `CHANGELOG.md` `[Unreleased]` section is moved to a new versioned release entry
|
|
- [ ] `dotnet build --configuration Release` passes
|
|
- [ ] `dotnet test --settings .runsettings` passes
|
|
- [ ] Stadium name is valid and follows alphabetical order (see [stadium list](CHANGELOG.md#stadium-release-names))
|
|
- [ ] All CI checks on `master` are green
|
|
|
|
### 3. Create and Push Tag
|
|
|
|
After the PR is merged, create and push the version tag from `master`:
|
|
|
|
```bash
|
|
git checkout master && git pull
|
|
git tag -a v1.0.0-azteca -m "Release 1.0.0 - Azteca"
|
|
git push origin v1.0.0-azteca
|
|
```
|
|
|
|
### 4. Automated CD Workflow
|
|
|
|
Pushing the tag triggers the CD workflow which automatically:
|
|
|
|
1. Validates the stadium name
|
|
2. Builds and tests the project in Release configuration
|
|
3. Publishes Docker images to GitHub Container Registry with three tags
|
|
4. Creates a GitHub Release with auto-generated changelog from commits
|
|
|
|
> 💡 Always update CHANGELOG.md before creating the tag. See [CHANGELOG.md](CHANGELOG.md) for the complete stadium list (A-Z) and release history.
|
|
|
|
## Docker Pull
|
|
|
|
Each release publishes multiple tags for flexibility:
|
|
|
|
```bash
|
|
# By semantic version (recommended for production)
|
|
docker pull ghcr.io/nanotaboada/dotnet-samples-aspnetcore-webapi:1.0.0
|
|
|
|
# By stadium name (memorable alternative)
|
|
docker pull ghcr.io/nanotaboada/dotnet-samples-aspnetcore-webapi:azteca
|
|
|
|
# Latest release
|
|
docker pull ghcr.io/nanotaboada/dotnet-samples-aspnetcore-webapi:latest
|
|
```
|