|
| 1 | +# Release Command |
| 2 | + |
| 3 | +Create a release PR with summarized changes from merged pull requests. |
| 4 | + |
| 5 | +## Steps |
| 6 | + |
| 7 | +0. Switch to the main branch if not already |
| 8 | +1. Run the upgrade.bash script to get the list of merged PRs and upgrade dependencies |
| 9 | +2. Fetch all merged PRs from openapi-generation repo since the last release |
| 10 | +3. **IMPORTANT: Filter out PRs with titles starting with "chore:" - these MUST be excluded from both the PR title and description** |
| 11 | +4. Group changes by programming language (python, typescript, java, go, csharp, php, ruby, terraform) |
| 12 | +5. Ignore "v2" suffixes when categorizing (pythonv2 → python, typescriptv2 → typescript) |
| 13 | +6. Create a user-facing summary for each language with relevant changes |
| 14 | +7. You should use `gh` to go and read the descriptions of each and every PR to workout if this is a public facing change or internal change. This PR should only include public changes. |
| 15 | +8. **Create a PR title that includes**: |
| 16 | + - Which languages have been updated |
| 17 | + - Whether changes are features or fixes |
| 18 | + - Brief description of what was changed |
| 19 | + - Format: `feat/fix(lang1,lang2): brief description of changes` |
| 20 | +9. Create a new branch off main with format: `release/vX.Y.Z` or `release/YYYY-MM-DD` |
| 21 | +10. Commit the changes with the summarized message |
| 22 | +11. Push the branch and create a PR with the full changelog |
| 23 | + |
| 24 | +## PR Title Format |
| 25 | + |
| 26 | +The PR title should follow this format with semicolons separating each language-specific change: |
| 27 | +- `fix(python): remove template hack; feat(csharp): add cancellation tokens; fix(core): resolve security crashes` |
| 28 | +- `feat(typescript): add retry logic; fix(go): resolve memory leaks` |
| 29 | +- `fix(core): fix overlays and security; feat(python,csharp): add new features` |
| 30 | + |
| 31 | +**Format Rules:** |
| 32 | +- Separate each language's changes with semicolons (`;`) |
| 33 | +- Each section should have its own type prefix (`feat` or `fix`) |
| 34 | +- Group languages together only if they have the same type and similar changes |
| 35 | +- Use "core" for changes which affect all languages |
| 36 | +- Order: features first, then fixes |
| 37 | +- Be specific about what was fixed or added for each language |
| 38 | + |
| 39 | +## Output Format |
| 40 | + |
| 41 | +The PR description should be formatted as: |
| 42 | + |
| 43 | +```markdown |
| 44 | +## Release Summary |
| 45 | + |
| 46 | +### Python |
| 47 | +- [Brief user-facing summary of changes] |
| 48 | + |
| 49 | +### TypeScript |
| 50 | +- [Brief user-facing summary of changes] |
| 51 | + |
| 52 | +### [Other Languages] |
| 53 | +- [Brief user-facing summary of changes] |
| 54 | + |
| 55 | +## Detailed Changes |
| 56 | + |
| 57 | +[Full list of PR titles and links, excluding chore PRs] |
| 58 | +``` |
| 59 | + |
| 60 | +## Important Notes |
| 61 | + |
| 62 | +- **CRITICAL: Exclude any PRs with titles starting with "chore:" from BOTH the PR title and description** |
| 63 | +- **Never added this footer**: 🤖 Generated with [Claude Code](https://claude.com/claude-code) |
| 64 | +- Focus on user-facing changes and improvements |
| 65 | +- Group by language, ignoring v2 suffixes |
| 66 | +- The branch should be created off main |
| 67 | +- The PR should target main branch |
| 68 | +- PR title must clearly indicate which languages were updated and what kind of changes (feat/fix) |
0 commit comments