Skip to content

Commit 5ea19d1

Browse files
authored
Merge pull request #554 from nanotaboada/release/v2.0.0-corner
chore(release): v2.0.0-corner
2 parents 33bf567 + a2f6c26 commit 5ea19d1

File tree

2 files changed

+107
-32
lines changed

2 files changed

+107
-32
lines changed

CHANGELOG.md

Lines changed: 49 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,22 @@ This project uses football/soccer terminology for release names:
4444

4545
### Added
4646

47+
### Changed
48+
49+
### Deprecated
50+
51+
### Removed
52+
53+
### Fixed
54+
55+
### Security
56+
57+
---
58+
59+
## [2.0.0 - corner] - 2026-03-29
60+
61+
### Added
62+
4763
- `.envrc` for [direnv](https://direnv.net/) to automatically switch to the required Node.js version via `.nvmrc` on directory entry
4864
- `rest/players.rest` HTTP file with health check, POST, GET (all, by ID, by squad number), PUT, and DELETE requests for VS Code REST Client (`humao.rest-client`)
4965
- `humao.rest-client` added to `.vscode/extensions.json` recommended extensions
@@ -57,16 +73,10 @@ This project uses football/soccer terminology for release names:
5773
- `IPlayer.id` type changed from `number` to `string` to reflect UUID
5874
- `updateAsync` and `deleteAsync` in service and database layers refactored to operate on `squadNumber`
5975

60-
### Deprecated
61-
6276
### Removed
6377

6478
- `postman-collections/` directory and Postman JSON collection replaced by `rest/players.rest`
6579

66-
### Fixed
67-
68-
### Security
69-
7080
---
7181

7282
## [1.0.1 - bicyclekick] - 2026-03-08
@@ -100,40 +110,57 @@ Initial release. See [README.md](README.md) for complete feature list and docume
100110

101111
### Pre-Release Checklist
102112

103-
Before creating any release:
104-
105-
1.**Update CHANGELOG.md first**: Move all items from `[Unreleased]` to a new versioned section with today's date
106-
2.**Verify tests pass**: Run `npm run coverage` - all tests must pass
107-
3.**Build successfully**: Run `npm run build` - TypeScript must compile without errors
108-
4.**Lint passes**: Run `npm run lint` - ESLint must pass with no warnings
109-
5.**Update Swagger docs**: Run `npm run swagger:docs` if API endpoints changed
110-
6.**Commit CHANGELOG**: Push the CHANGELOG update before tagging
113+
- [ ] Release branch created from `master`
114+
- [ ] `CHANGELOG.md` updated with release notes
115+
- [ ] Changes committed and pushed on the release branch
116+
- [ ] Release PR merged into `master`
117+
- [ ] Tag created with correct format: `vX.Y.Z-term`
118+
- [ ] Term is valid (A-Z from the football terminology list above)
119+
- [ ] Tag pushed to trigger CD workflow
111120

112121
### Creating a Release
113122

114-
1. **Update CHANGELOG.md**
123+
1. **Create a release branch**
124+
125+
```bash
126+
git checkout master && git pull
127+
git checkout -b release/vX.Y.Z-term
128+
```
129+
130+
2. **Update CHANGELOG.md**
115131

116132
Move items from `[Unreleased]` to a new version section:
117133

118134
```markdown
119-
## [1.1.0 - bicyclekick] - YYYY-MM-DD
135+
## [X.Y.Z - term] - YYYY-MM-DD
120136
```
121137

122-
Commit and push this change.
138+
Commit and push:
139+
140+
```bash
141+
git add CHANGELOG.md
142+
git commit -m "chore(release): vX.Y.Z-term"
143+
git push origin release/vX.Y.Z-term
144+
```
145+
146+
3. **Merge the release PR**
147+
148+
Open a pull request from `release/vX.Y.Z-term` into `master` and merge it. The tag must be created **after** the merge so it points to the correct commit on `master`.
123149

124-
2. **Create and push tag**
150+
4. **Create and push tag**
125151

126152
```bash
127-
git tag -a v1.1.0-bicyclekick -m "Release 1.1.0 - Bicycle-kick"
128-
git push origin v1.1.0-bicyclekick
153+
git checkout master && git pull
154+
git tag -a vX.Y.Z-term -m "Release X.Y.Z - Term"
155+
git push origin vX.Y.Z-term
129156
```
130157

131-
3. **CD pipeline runs automatically**
158+
5. **CD pipeline runs automatically**
132159

133160
GitHub Actions will:
134161
- Run full test suite with coverage
135162
- Build Docker image
136-
- Publish to GHCR with tags: `:1.1.0`, `:bicyclekick`, `:latest`
163+
- Publish to GHCR with tags: `:X.Y.Z`, `:term`, `:latest`
137164
- Create GitHub Release with auto-generated notes
138165

139166
### Release Naming Convention

README.md

Lines changed: 58 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -320,21 +320,69 @@ Releases follow the pattern: `v{SEMVER}-{TERM}` (e.g., `v1.0.0-assist`)
320320
- **Semantic Version**: Standard versioning (MAJOR.MINOR.PATCH)
321321
- **Term Name**: Alphabetically ordered codename from the [football terminology list](CHANGELOG.md#football-terminology-names-️)
322322

323-
### Creating a Release
323+
### Create a Release
324324

325-
💡 **Important**: Update [CHANGELOG.md](CHANGELOG.md) continuously as you work, not just before releases!
325+
To create a new release, follow this workflow:
326326

327-
1. **Update CHANGELOG.md**: Move items from `[Unreleased]` to new version section
328-
2. **Create and push tag**:
327+
#### 1. Create a Release Branch
329328

330-
```bash
331-
git tag -a v1.1.0-bicyclekick -m "Release 1.1.0 - Bicycle-kick"
332-
git push origin v1.1.0-bicyclekick
333-
```
329+
Branch protection prevents direct pushes to `master`, so all release prep goes through a PR:
334330

335-
3. **CD pipeline runs automatically** to build and publish
331+
```bash
332+
git checkout master && git pull
333+
git checkout -b release/vX.Y.Z-term
334+
```
335+
336+
#### 2. Update CHANGELOG.md
337+
338+
Move items from `[Unreleased]` to a new release section in [CHANGELOG.md](CHANGELOG.md), then commit and push the branch:
339+
340+
```bash
341+
# Move items from [Unreleased] to new release section
342+
# Example: [2.0.0 - corner] - 2026-03-29
343+
git add CHANGELOG.md
344+
git commit -m "chore(release): vX.Y.Z-term"
345+
git push origin release/vX.Y.Z-term
346+
```
347+
348+
#### 3. Merge the Release PR
349+
350+
Open a pull request from `release/vX.Y.Z-term` into `master` and merge it. The tag must be created **after** the merge so it points to the correct commit on `master`.
351+
352+
#### 4. Create and Push Tag
353+
354+
After the PR is merged, pull `master` and create the annotated tag:
355+
356+
```bash
357+
git checkout master && git pull
358+
git tag -a vX.Y.Z-term -m "Release X.Y.Z - Term"
359+
git push origin vX.Y.Z-term
360+
```
361+
362+
Example:
363+
364+
```bash
365+
git tag -a v2.0.0-corner -m "Release 2.0.0 - Corner"
366+
git push origin v2.0.0-corner
367+
```
368+
369+
#### 5. Automated CD Workflow
370+
371+
Pushing the tag triggers the CD pipeline which automatically:
372+
373+
1. Builds and tests the project
374+
2. Publishes Docker images to GitHub Container Registry
375+
3. Creates a GitHub Release with auto-generated changelog from commits
376+
377+
#### Pre-Release Checklist
336378

337-
See [CHANGELOG.md](CHANGELOG.md#how-to-release) for complete release workflow.
379+
- [ ] Release branch created from `master`
380+
- [ ] `CHANGELOG.md` updated with release notes
381+
- [ ] Changes committed and pushed on the release branch
382+
- [ ] Release PR merged into `master`
383+
- [ ] Tag created with correct format: `vX.Y.Z-term`
384+
- [ ] Term is valid (A-Z from the [football terminology list](CHANGELOG.md#football-terminology-names-️))
385+
- [ ] Tag pushed to trigger CD workflow
338386

339387
### Pull Docker Images
340388

0 commit comments

Comments
 (0)