mirror of
https://github.com/Akkudoktor-EOS/EOS.git
synced 2025-11-21 12:56:27 +00:00
chore: automate development version and release generation (#772)
Some checks failed
Bump Version / Bump Version Workflow (push) Has been cancelled
docker-build / platform-excludes (push) Has been cancelled
docker-build / build (push) Has been cancelled
docker-build / merge (push) Has been cancelled
pre-commit / pre-commit (push) Has been cancelled
Run Pytest on Pull Request / test (push) Has been cancelled
Some checks failed
Bump Version / Bump Version Workflow (push) Has been cancelled
docker-build / platform-excludes (push) Has been cancelled
docker-build / build (push) Has been cancelled
docker-build / merge (push) Has been cancelled
pre-commit / pre-commit (push) Has been cancelled
Run Pytest on Pull Request / test (push) Has been cancelled
This change introduces a GitHub Action to automate release creation, including proper tagging and automatic addition of a development marker to the version. A hash is also appended to development versions to make their state easier to distinguish. Tests and release documentation have been updated to reflect the revised release workflow. Several files now retrieve the current version dynamically. The test --full-run option has been rename to --finalize to make clear it is to do commit finalization testing. Signed-off-by: Bobby Noelte <b0661n0e17e@gmail.com>
This commit is contained in:
@@ -393,6 +393,13 @@ At a minimum, you should run the module tests:
|
||||
make test
|
||||
```
|
||||
|
||||
:::{admonition} Note
|
||||
:class: Note
|
||||
Depending on your changes you may also have to change the version.py and documentation files. Do as
|
||||
suggested by the tests. You may ignore the version.py and documentation changes up until you
|
||||
finalize your change.
|
||||
:::
|
||||
|
||||
You should also run the system tests. These include additional tests that interact with real
|
||||
resources:
|
||||
|
||||
|
||||
@@ -13,8 +13,8 @@ and how to set a **development version** after the release.
|
||||
| 1 | Contributor | Prepare a release branch **in your fork** using Commitizen |
|
||||
| 2 | Contributor | Open a **Pull Request to upstream** (`Akkudoktor-EOS/EOS`) |
|
||||
| 3 | Maintainer | Review and **merge the release PR** |
|
||||
| 4 | Maintainer | Create the **GitHub Release and tag** |
|
||||
| 5 | Maintainer | Set the **development version marker** via a follow-up PR |
|
||||
| 4 | CI | Create the **GitHub Release and tag** |
|
||||
| 5 | CI | Set the **development version marker** via a follow-up PR |
|
||||
|
||||
## 🔄 Detailed Workflow
|
||||
|
||||
@@ -40,24 +40,26 @@ git checkout -b release/vX.Y.Z
|
||||
|
||||
#### Bump the version information
|
||||
|
||||
At least update
|
||||
Set `__version__` in src/akkudoktoreos/core/version.py
|
||||
|
||||
- pyproject.toml
|
||||
- src/akkudoktoreos/core/version.py
|
||||
- src/akkudoktoreos/data/default.config.json
|
||||
- Makefile
|
||||
```python
|
||||
__version__ = 0.3.0
|
||||
```
|
||||
|
||||
Prepare version by updating versioned files, e.g.:
|
||||
|
||||
- haaddon/config.yaml
|
||||
|
||||
and the generated documentation:
|
||||
|
||||
```bash
|
||||
make bump VERSION=0.1.0+dev NEW_VERSION=X.Y.Z
|
||||
make gen-docs
|
||||
make prepare-version
|
||||
```
|
||||
|
||||
You may check the changes by:
|
||||
Check the changes by:
|
||||
|
||||
```bash
|
||||
git diff
|
||||
make test-version
|
||||
```
|
||||
|
||||
#### Create a new CHANGELOG.md entry
|
||||
@@ -66,19 +68,20 @@ Edit CHANGELOG.md
|
||||
|
||||
#### Create the new release commit
|
||||
|
||||
Add all the changed version files and all other changes to the commit.
|
||||
|
||||
```bash
|
||||
git add pyproject.toml src/akkudoktoreos/core/version.py \
|
||||
src/akkudoktoreos/data/default.config.json Makefile CHANGELOG.md
|
||||
git commit -s -m "chore(release): Release vX.Y.Z"
|
||||
git add src/akkudoktoreos/core/version.py CHANGELOG.md ...
|
||||
git commit -s -m "chore: Prepare Release v0.3.0"
|
||||
```
|
||||
|
||||
#### Push the branch to your fork
|
||||
|
||||
```bash
|
||||
git push --set-upstream origin release/vX.Y.Z
|
||||
git push --set-upstream origin release/v0.3.0
|
||||
```
|
||||
|
||||
### 2️⃣ Contributor: Open the Release Pull Request
|
||||
### 2️⃣ Contributor: Open the Release Preparation Pull Request
|
||||
|
||||
| From | To |
|
||||
| ------------------------------------ | ------------------------- |
|
||||
@@ -87,13 +90,13 @@ git push --set-upstream origin release/vX.Y.Z
|
||||
**PR Title:**
|
||||
|
||||
```text
|
||||
chore(release): release vX.Y.Z
|
||||
chore: prepare release vX.Y.Z
|
||||
```
|
||||
|
||||
**PR Description Template:**
|
||||
|
||||
```markdown
|
||||
## Release vX.Y.Z
|
||||
## Prepare Release vX.Y.Z
|
||||
|
||||
This pull request prepares release **vX.Y.Z**.
|
||||
|
||||
@@ -119,94 +122,26 @@ See `CHANGELOG.md` for full details.
|
||||
**Merge Strategy:**
|
||||
|
||||
- Prefer **Merge Commit** (or **Squash Merge**, per project preference)
|
||||
- Use commit message: `chore(release): Release vX.Y.Z`
|
||||
- Use commit message: `chore: Prepare Release vX.Y.Z`
|
||||
|
||||
### 4️⃣ Maintainer: Publish the GitHub Release
|
||||
### 4️⃣ CI: Publish the GitHub Release
|
||||
|
||||
1. Go to **GitHub → Releases → Draft a new release**
|
||||
2. **Choose tag** → enter `vX.Y.Z` (GitHub creates the tag on publish)
|
||||
3. **Release title:** `vX.Y.Z`
|
||||
4. **Paste changelog entry** from `CHANGELOG.md`
|
||||
5. Optionally enable **Set as latest release**
|
||||
6. Click **Publish release** 🎉
|
||||
The new release will automatically be published by the GitHub CI action.
|
||||
|
||||
### 5️⃣ Maintainer: Prepare the Development Version Marker
|
||||
See `.github/workflwows/bump-version.yml`for details.
|
||||
|
||||
**Sync local copy:**
|
||||
### 5️⃣ CI: Prepare the Development Version Marker
|
||||
|
||||
```bash
|
||||
git fetch eos
|
||||
git checkout main
|
||||
git pull eos main
|
||||
```
|
||||
The development version marker will automatically be set by the GitHub CI action.
|
||||
|
||||
**Create a development version branch:**
|
||||
|
||||
```bash
|
||||
git checkout -b release/vX.Y.Z_dev
|
||||
```
|
||||
|
||||
**Set development version marker manually:**
|
||||
|
||||
```bash
|
||||
make bump VERSION=X.Y.Z NEW_VERSION=X.Y.Z+dev
|
||||
make gen-docs
|
||||
```
|
||||
|
||||
```bash
|
||||
git add pyproject.toml src/akkudoktoreos/core/version.py \
|
||||
src/akkudoktoreos/data/default.config.json Makefile
|
||||
git commit -s -m "chore: set development version marker X.Y.Z+dev"
|
||||
```
|
||||
|
||||
```bash
|
||||
git push --set-upstream origin release/vX.Y.Z_dev
|
||||
```
|
||||
|
||||
### 6️⃣ Maintainer (or Contributor): Open the Development Version PR
|
||||
|
||||
| From | To |
|
||||
| ---------------------------------------- | ------------------------- |
|
||||
| `<your-username>/EOS:release/vX.Y.Z_dev` | `Akkudoktor-EOS/EOS:main` |
|
||||
|
||||
**PR Title:**
|
||||
|
||||
```text
|
||||
chore: development version vX.Y.Z+dev
|
||||
```
|
||||
|
||||
**PR Description Template:**
|
||||
|
||||
```markdown
|
||||
## Development version vX.Y.Z+dev
|
||||
|
||||
This pull request marks the repository as back in active development.
|
||||
|
||||
### Changes
|
||||
- Set version to `vX.Y.Z+dev`
|
||||
|
||||
No changelog entry is needed.
|
||||
```
|
||||
|
||||
### 7️⃣ Maintainer: Review and Merge the Development Version PR
|
||||
|
||||
**Checklist:**
|
||||
|
||||
- ✅ Only version files updated to `+dev`
|
||||
- ✅ No unintended changes
|
||||
|
||||
**Merge Strategy:**
|
||||
|
||||
- Merge with commit message: `chore: development version vX.Y.Z+dev`
|
||||
See `.github/workflwows/bump-version.yml`for details.
|
||||
|
||||
## ✅ Quick Reference
|
||||
|
||||
| Step | Actor | Action |
|
||||
| ---- | ----- | ------ |
|
||||
| **1. Prepare release branch** | Contributor | Bump version & changelog via Commitizen |
|
||||
| **1. Prepare release branch** | Contributor | Bump version & changelog |
|
||||
| **2. Open release PR** | Contributor | Submit release for review |
|
||||
| **3. Review & merge release PR** | Maintainer | Finalize changes into `main` |
|
||||
| **4. Publish GitHub Release** | Maintainer | Create tag & notify users |
|
||||
| **5. Prepare development version branch** | Maintainer | Set development marker |
|
||||
| **6. Open development PR** | Maintainer (or Contributor) | Propose returning to development state |
|
||||
| **7. Review & merge development PR** | Maintainer | Mark repository as back in development |
|
||||
| **4. Publish GitHub Release** | CI | Create tag & notify users |
|
||||
| **5. Prepare development version branch** | CI | Set development marker |
|
||||
|
||||
Reference in New Issue
Block a user