# semantic-release-base

Maggioli Semantic Release Shareable Configuration: Base

* [https://semantic-release.gitbook.io/semantic-release/](https://semantic-release.gitbook.io/semantic-release/)
* [https://semantic-release.gitbook.io/semantic-release/usage/shareable-configurations](https://semantic-release.gitbook.io/semantic-release/usage/shareable-configurations)
* [https://semantic-release.gitbook.io/semantic-release/usage/configuration#extends](https://semantic-release.gitbook.io/semantic-release/usage/configuration#extends)

## Beta/Prerelease Support

All configurations support beta releases via the `beta` branch.

### Supported Branches

| Branch | Version Format | Example |
|--------|---------------|---------|
| `main` | Stable releases | `1.21.0` |
| `beta` | Prerelease versions | `1.21.0-beta.1` |

### How It Works

1. Create a `beta` branch from `main`
2. Push commits with conventional commit messages
3. Semantic-release creates versions like `1.21.0-beta.1`, `1.21.0-beta.2`, etc.
4. Each push to `beta` increments the prerelease number
5. When ready, merge `beta` to `main` for stable release

### Docker Image Tags

Beta releases produce two tags:
- `{version}` - Specific version (e.g., `1.21.0-beta.1`)
- `latest-beta` - Floating tag pointing to newest beta

### Renovatebot Integration

Configure Renovatebot to track beta releases for dev environments:

```json
{
  "packageRules": [
    {
      "description": "Track beta via latest-beta tag",
      "matchFileNames": ["environments/dev.yaml"],
      "matchDatasources": ["docker"],
      "followTag": "latest-beta",
      "automerge": true
    }
  ]
}
```

This ensures dev only updates when `latest-beta` changes, ignoring stable releases during beta development.

### Returning to Stable

After merging beta to main, manually update dev environment to the new stable version.