Files
Test/RELEASES.md
2026-06-29 07:36:04 +02:00

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
```