Files
GithubRepoRemover/scripts/README.md

131 lines
4.2 KiB
Markdown

# Release Process Guide
**First time setup:** Make sure you have the nbgv tool installed before doing anything else:
```bash
dotnet tool install -g nbgv
```
## Quick Reference
### Check current version
To see what version you’re currently on, just run:
```bash
nbgv get-version
```
### Patch release (1.0.0 → 1.0.1)
Want to create a quick patch release? Simply commit and push to main - the version bumps up automatically!
### Minor release (1.0.x → 1.1.0)
If you’re looking to add some new features but don’t want to change the major version, do this:
```bash
nbgv prepare-release
git checkout main
git merge release/v1.1
git push
```
### Major release (1.x.x → 2.0.0)
Ready to make some breaking changes? Here’s how to bump up the major version:
1. Open up `version.json` and change `"version": "1.0"` to `"version": "2.0"`
2. Commit and push those changes to main
### Manual release (if things break)
In case of emergencies, you can manually run the GitHub Action:
1. Head over to the [Actions tab](https://github.com/mtfarkas/GithubRepoRemover/actions)
2. Hit "Build and Release"
3. Click "Run workflow"
4. Make sure "Create a GitHub release" is checked
5. Click "Run workflow" again
## How this works
### Version numbers
Here's the lowdown on versioning:
- **Patch versions** (1.0.0 → 1.0.1): These tick up automatically with each commit to main
- **Minor versions** (1.0.x → 1.1.0): You’ll use `nbgv prepare-release` for these
- **Major versions** (1.x.x → 2.0.0): A quick edit in `version.json` is all you need
### When releases happen automatically
The magic happens and releases are created when:
- You push a non-prerelease version to the main branch
- OR you give it a nudge manually with the "create release" option
### What gets built
Wondering what gets bundled up in each release? You’ll find executables for:
- Windows x64 (`github-repo-remover-win-x64.exe`)
- macOS Intel (`github-repo-remover-osx-x64`)
- macOS Apple Silicon (`github-repo-remover-osx-arm64`)
- Linux x64 (`github-repo-remover-linux-x64`)
## Step-by-step workflows
### Hotfix/patch (most common)
If you’re making a quick fix, here’s what to do:
1. Make your changes
2. Commit them: `git commit -m "Fix: whatever you fixed"`
3. Push your changes: `git push`
4. And you’re done! Release is created automatically
### Feature release
Got a new feature ready? Follow these steps:
1. Make your changes
2. Commit them: `git commit -m "Add: new feature"`
3. Prepare the release with:
```bash
nbgv prepare-release
```
4. Merge the changes back to main:
```bash
git checkout main
git merge release/v1.1 # (replace with the version it created)
```
5. Push it all up: `git push`
6. Done deal! Release gets created automatically
### Breaking change
Making a breaking change? Here’s the process:
1. Update `version.json` to bump the major version:
```json
{
"version": "2.0",
// ... rest stays the same
}
```
2. Commit your changes: `git commit -m "BREAKING: what changed"`
3. Push it all: `git push`
4. That’s it! Release is created automatically
## Manual release script
Need to create a tag manually? Maybe testing or automation hiccuped? Here’s how:
```powershell
# First, see what would happen without actually doing it
.\scripts\create-release.ps1 -WhatIf
# If all looks good, go ahead and create the tag
.\scripts\create-release.ps1
```
## When things go wrong
### "Tag already exists" error
If you hit a "Tag already exists" error, it means the GitHub Action is trying to avoid duplicate releases. To sort this out:
1. Delete the problematic tag: `git tag -d v1.0.1 && git push origin :v1.0.1`
2. Manually delete the GitHub release
3. Either push your changes again or rerun the action manually
### Version not incrementing
Not seeing the version increment? Check if you have new commits since the last release. Remember, each commit to main should bump up the patch version.
### Check what version will be built
Curious about what version is up next? Run:
```bash
nbgv get-version --format json
```
## Useful links
- [GitHub Releases](https://github.com/mtfarkas/GithubRepoRemover/releases)
- [GitHub Actions](https://github.com/mtfarkas/GithubRepoRemover/actions)
- [Nerdbank.GitVersioning docs](https://github.com/dotnet/Nerdbank.GitVersioning)