Skip to content

Commit 03a629c

Browse files
authored
Add release checklist (#170)
2 parents d4a5562 + 5f06a9d commit 03a629c

1 file changed

Lines changed: 126 additions & 0 deletions

File tree

RELEASE_CHECKLIST.md

Lines changed: 126 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,126 @@
1+
# Release Checklist
2+
3+
This checklist covers the common steps for creating a Photofield release.
4+
5+
## Prerequisites
6+
7+
- [ ] You are on the `main` branch
8+
- [ ] Working directory is clean (no uncommitted changes)
9+
- [ ] All planned features/fixes are merged
10+
- [ ] CI is passing on main branch
11+
12+
## Pre-Release
13+
14+
### Documentation & README
15+
16+
- [ ] Update `docs/` with any new features or configuration changes
17+
- [ ] Update `README.md` if there are significant changes
18+
- Features list
19+
- Installation instructions
20+
- Screenshots/demos if UI changed
21+
- [ ] Update `defaults.yaml` documentation comments if config changed
22+
23+
### Testing & Changelog
24+
25+
- [ ] Document all changes using changie
26+
- Use `task added` for new features
27+
- Use `task fixed` for bug fixes
28+
- Use `task breaking` for breaking changes
29+
- Use `task deprecated` for deprecations
30+
- Use `task removed` for removed features
31+
- Use `task security` for security updates
32+
- [ ] Test locally with embedded build: `task run:embed`
33+
- [ ] Run tests: `task test`
34+
- [ ] Run e2e tests: `task e2e:ci`
35+
36+
## Creating the Release
37+
38+
- [ ] Run `task release`
39+
- Batches changelog entries into a version file
40+
- Opens the version file in your editor for review/editing
41+
- Merges changes into CHANGELOG.md
42+
- Commits with "Release vX.Y.Z" message
43+
- Creates git tag
44+
45+
- [ ] Review the release commit: `git show HEAD`
46+
- [ ] Verify the changelog looks good: `task release:changelog`
47+
48+
## Publishing
49+
50+
- [ ] Push the release: `task release:push`
51+
52+
- [ ] **While CI is running**, update external listings:
53+
- [ ] Update feature list at https://github.com/meichthys/foss_photo_libraries (issue #95)
54+
- [ ] Announce on Discord: https://discord.gg/qjMxfCMVqM
55+
56+
- [ ] Wait for CI to complete: https://github.com/SmilyOrg/photofield/actions
57+
58+
- [ ] Review the GitHub Release draft
59+
- Edit release notes if needed
60+
- Add screenshots/GIFs if applicable (for UI changes or new features)
61+
- Check attached artifacts are present
62+
- **Publish the release**
63+
64+
## Post-Release Verification
65+
66+
- [ ] Test Docker image: `docker pull ghcr.io/smilyorg/photofield:latest`
67+
- [ ] Verify Docker tags created at https://github.com/SmilyOrg/photofield/pkgs/container/photofield
68+
- [ ] Monitor for issues
69+
- GitHub issues
70+
- Discord feedback
71+
72+
## If Something Goes Wrong
73+
74+
### Before pushing to GitHub
75+
76+
- [ ] Undo the release locally: `task release:undo`
77+
- Removes the tag and commit
78+
- Make fixes and try again
79+
80+
### After pushing to GitHub
81+
82+
- [ ] Delete the tag locally: `git tag -d vX.Y.Z`
83+
- [ ] Delete the tag remotely: `git push origin :refs/tags/vX.Y.Z`
84+
- [ ] Delete the release commit locally: `git reset --hard HEAD~1`
85+
- [ ] Force push: `git push -f origin main`
86+
- [ ] Delete GitHub Release draft if created
87+
- [ ] Make fixes and create a new release
88+
89+
## Release Types
90+
91+
### Semantic Versioning (at version 0.x)
92+
93+
- **Patch** (0.X.Y+1): Bug fixes, security patches
94+
- Use `task fixed` or `task security`
95+
- **Minor** (0.X+1.0): New features, breaking changes (pre-1.0), removals
96+
- Use `task added`, `task breaking`, `task removed`, or `task deprecated`
97+
- **Major** (1.0.0+): Reserved for 1.0 stable release
98+
99+
Changie automatically determines version bump based on change types.
100+
101+
## Useful Commands
102+
103+
- `task release:version` - Show current/next version
104+
- `task release:changelog` - Preview changelog for latest release
105+
- `task release:title` - Get the release title
106+
- `changie latest` - Get latest version string
107+
- `git describe --tags` - Show current version with git info
108+
- `task check` - Verify dependencies and generated files are up to date
109+
- `task package` - Build all platform binaries locally (for testing)
110+
- `task release:local` - Build and test Docker image locally
111+
112+
## Notes
113+
114+
- Release artifacts include binaries for:
115+
- Linux (amd64, arm, arm64, 386, loong64, ppc64le, riscv64, s390x)
116+
- macOS (amd64, arm64)
117+
- Windows (amd64, arm64, 386)
118+
- OpenBSD (amd64, arm64)
119+
120+
- Docker images are multi-arch (amd64, arm64)
121+
122+
- CI automatically skips duplicate builds on release commits to main branch
123+
124+
- All releases are created as drafts first, allowing final review before publishing
125+
126+
- Build artifacts are attested for supply chain security

0 commit comments

Comments
 (0)