RELEASE_NOTES.md
Rama main · réplica de lectura del repositorio original.
# Release Notes Guide
This document outlines the best practices for creating release notes in the Yundera AppStore.
## Tag Naming Convention
We use **app-specific tags** to track updates for individual applications.
### Format
```
{app-name}-v{version}
```
### Examples
| App | Upstream Version | Tag |
|-----|------------------|-----|
| Immich | 2.3.1 | `immich-v2.3.1` |
| Nextcloud | 28.0.1 | `nextcloud-v28.0.1` |
| Seafile | 11.0.5 | `seafile-v11.0.5` |
| Mastodon | 4.2.0 | `mastodon-v4.2.0` |
### Rules
1. **Lowercase app name**: Use lowercase for the app name (e.g., `immich`, not `Immich`)
2. **Match upstream version**: Use the same version number as the upstream project
3. **Semantic versioning**: Follow the upstream's versioning scheme (usually semver)
4. **No prefix duplication**: Use `immich-v2.3.1`, not `immich-version-2.3.1`
## Release Note Structure
Each release note should follow this template:
```markdown
## {App Name} v{Version}
**{Brief summary of the update}**
### New Features
- Feature 1 description
- Feature 2 description
### Updated Components
| Component | Old Version | New Version |
|-----------|-------------|-------------|
| component-1 | x.x.x | y.y.y |
| component-2 | x.x.x | y.y.y |
### Breaking Changes
- Description of any breaking changes (if applicable)
### Migration Notes
- Step-by-step migration instructions (if needed)
- Configuration changes required
### Links
- [Official Release Notes](https://...)
- [Documentation](https://...)
```
### Section Guidelines
| Section | Required | Description |
|---------|----------|-------------|
| Title | Yes | App name and version |
| Summary | Yes | One-line description of the update |
| New Features | Yes | List of new features (use "Bug fixes" if patch release) |
| Updated Components | Yes | Table of updated Docker images/dependencies |
| Breaking Changes | No | Only if there are breaking changes |
| Migration Notes | No | Only if special steps are required |
| Links | Recommended | Links to upstream docs and release notes |
## Creating Releases via Command Line
### Prerequisites
1. Install GitHub CLI:
```bash
# Ubuntu/Debian
curl -fsSL https://cli.github.com/packages/githubcli-archive-keyring.gpg | sudo dd of=/usr/share/keyrings/githubcli-archive-keyring.gpg
sudo chmod go+r /usr/share/keyrings/githubcli-archive-keyring.gpg
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/githubcli-archive-keyring.gpg] https://cli.github.com/packages stable main" | sudo tee /etc/apt/sources.list.d/github-cli.list > /dev/null
sudo apt update && sudo apt install gh -y
# macOS
brew install gh
```
2. Authenticate with GitHub:
```bash
gh auth login
```
### Creating a Release
#### Basic Command
```bash
gh release create {tag} --title "{Title}" --notes "{Release notes}"
```
#### Using a HEREDOC for Multi-line Notes
```bash
gh release create immich-v2.3.1 --title "Immich v2.3.1" --notes "$(cat <<'EOF'
## Immich v2.3.1
**Major upgrade from v1.143.1 to v2.3.1**
### New Features
- OCR (Optical Character Recognition) - Search for text within photos
- Improved web performance via Rust/WebAssembly
### Updated Components
| Component | Old Version | New Version |
|-----------|-------------|-------------|
| immich-server | v1.143.1 | v2.3.1 |
| immich-machine-learning | v1.143.1 | v2.3.1 |
### Migration Notes
- No special migration steps required
- To enable OCR for existing photos, run the OCR job in Administration > Job Settings
### Links
- [Official Release Notes](https://github.com/immich-app/immich/releases/tag/v2.3.1)
EOF
)"
```
#### Using a Release Notes File
```bash
# Create release notes file
cat > /tmp/release-notes.md << 'EOF'
## App Name vX.Y.Z
Release notes content here...
EOF
# Create release from file
gh release create app-vX.Y.Z --title "App Name vX.Y.Z" --notes-file /tmp/release-notes.md
```
### Additional Options
```bash
# Create a draft release (not published immediately)
gh release create tag --draft --title "Title" --notes "Notes"
# Create a pre-release
gh release create tag --prerelease --title "Title" --notes "Notes"
# Target a specific commit (instead of latest)
gh release create tag --target abc1234 --title "Title" --notes "Notes"
# Upload assets with the release
gh release create tag --title "Title" --notes "Notes" ./file1.zip ./file2.tar.gz
```
### Viewing Existing Releases
```bash
# List all releases
gh release list
# View a specific release
gh release view immich-v2.3.1
# Download release assets
gh release download immich-v2.3.1
```
### Editing an Existing Release
```bash
# Edit release notes
gh release edit immich-v2.3.1 --notes "Updated notes"
# Edit title
gh release edit immich-v2.3.1 --title "New Title"
# Edit from file
gh release edit immich-v2.3.1 --notes-file /tmp/updated-notes.md
```
### Deleting a Release
```bash
# Delete release (keeps the tag)
gh release delete immich-v2.3.1
# Delete release and its tag
gh release delete immich-v2.3.1 --yes --cleanup-tag
```
## Workflow Summary
1. **Make changes** to the app's `docker-compose.yml`
2. **Commit and push** the changes to main branch
3. **Create release** with appropriate tag and notes:
```bash
gh release create {app}-v{version} --title "{App} v{version}" --notes "$(cat <<'EOF'
Release notes here...
EOF
)"
```
4. **Verify** the release on GitHub: `https://github.com/Yundera/AppStore/releases`
## Example: Full Release Workflow
```bash
# 1. Navigate to repository
cd /path/to/YunderaAppStore
# 2. Make changes to app config
# (edit Apps/Immich/docker-compose.yml)
# 3. Commit changes
git add Apps/Immich/docker-compose.yml
git commit -m "update immich to version 2.3.1"
git push origin main
# 4. Create release
gh release create immich-v2.3.1 --title "Immich v2.3.1" --notes "$(cat <<'EOF'
## Immich v2.3.1
**Major upgrade to stable v2.x series**
### New Features
- OCR support for text search in photos
- Improved performance
### Updated Components
| Component | Old | New |
|-----------|-----|-----|
| immich-server | v1.143.1 | v2.3.1 |
### Links
- [Release Notes](https://github.com/immich-app/immich/releases/tag/v2.3.1)
EOF
)"
# 5. Verify
gh release view immich-v2.3.1
```