Skip to content

Commit 7205c9a

Browse files
committed
release: mettre en place versioning semver et changelog pour les notes
- Ajoute CHANGELOG.md (format Keep a Changelog + section Unreleased). - Ajoute la doc du flux de versioning/release et la reference dans README. - Met a jour release.yml pour extraire automatiquement les notes depuis CHANGELOG selon le tag vX.Y.Z, avec fallback en generation auto. - Met a jour TODO.md (tache versioning + changelog marquee comme faite).
1 parent 06afe74 commit 7205c9a

5 files changed

Lines changed: 86 additions & 1 deletion

File tree

.github/workflows/release.yml

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,9 @@ jobs:
7474
runs-on: ubuntu-latest
7575
needs: build
7676
steps:
77+
- name: Checkout repository
78+
uses: actions/checkout@v4
79+
7780
- name: Download all artifacts
7881
uses: actions/download-artifact@v4
7982
with:
@@ -84,13 +87,39 @@ jobs:
8487
cd release_assets
8588
find . -type f -maxdepth 2 -print0 | xargs -0 -I{} sha256sum "{}" > ALL_SHA256SUMS.txt
8689
90+
- name: Extract changelog notes for tag
91+
id: changelog
92+
shell: bash
93+
run: |
94+
TAG="${GITHUB_REF_NAME#v}"
95+
: > RELEASE_NOTES.md
96+
if [ ! -f CHANGELOG.md ]; then
97+
echo "Release notes not found in CHANGELOG for $TAG." > RELEASE_NOTES.md
98+
echo "found=false" >> "$GITHUB_OUTPUT"
99+
exit 0
100+
fi
101+
awk -v tag="$TAG" '
102+
BEGIN {capture=0}
103+
$0 ~ "^## \\[" tag "\\]" {capture=1; next}
104+
capture && $0 ~ "^## \\[" {exit}
105+
capture {print}
106+
' CHANGELOG.md > RELEASE_NOTES.md
107+
if [ -s RELEASE_NOTES.md ]; then
108+
echo "found=true" >> "$GITHUB_OUTPUT"
109+
else
110+
echo "Release notes not found in CHANGELOG for $TAG." > RELEASE_NOTES.md
111+
echo "found=false" >> "$GITHUB_OUTPUT"
112+
fi
113+
87114
- name: Create GitHub Release
88115
uses: softprops/action-gh-release@v2
89116
with:
90117
name: ${{ github.ref_name }}
91118
tag_name: ${{ github.ref_name }}
92119
draft: false
93120
prerelease: ${{ contains(github.ref, '-rc') || contains(github.ref, '-beta') || contains(github.ref, '-alpha') }}
121+
body_path: RELEASE_NOTES.md
122+
generate_release_notes: ${{ steps.changelog.outputs.found != 'true' }}
94123
files: |
95124
release_assets/**
96125
release_assets/ALL_SHA256SUMS.txt

CHANGELOG.md

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
# Changelog
2+
3+
All notable changes to this project are documented in this file.
4+
5+
The format is based on Keep a Changelog and this project follows Semantic Versioning.
6+
7+
## [Unreleased]
8+
9+
### Added
10+
- Progressive CI quality gates (`ruff`, `black`, `mypy`) on stabilized scope.
11+
- Release smoke checklist documentation.
12+
- IDE GUI parity matrix documentation.
13+
- Dependency analyzer robustness improvements and focused regression tests.
14+
- Engine install flow tests for `system -> python` sequencing.
15+
16+
### Changed
17+
- CI workflow simplified and aligned with actual repository structure.
18+
- IDE-like GUI wiring now reuses classic signal connections for parity.
19+
20+
### Fixed
21+
- Engine tools install flow no longer conflicts by launching system and Python installs in parallel.
22+
- Multiple dependency analyzer edge cases (internal vs third-party detection and file filtering).
23+
24+
## [0.1.0] - 2026-03-05
25+
26+
### Added
27+
- Initial public milestone of PyCompiler ARK with GUI + CLI + BCASL + multi-engine flow.

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -130,6 +130,7 @@ python -m OnlyMod.EngineOnlyMod --engine nuitka -f script.py --dry-run
130130
- [IDE-like main GUI (`--ide-gui`)](docs/ide_like_gui.md)
131131
- [Release smoke checklist](docs/release_smoke_checklist.md)
132132
- [IDE GUI parity matrix](docs/ide_gui_parity_matrix.md)
133+
- [Versioning and release flow](docs/versioning_and_release.md)
133134

134135
---
135136

TODO.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@
3535
### Phase 6 - CI/CD et livrable (P1)
3636
- [x] Ajouter GitHub Actions: lint + tests + smoke build.
3737
- [x] Executer la matrice CI minimale sur Ubuntu + Windows.
38-
- [ ] Mettre en place versioning + changelog de release.
38+
- [x] Mettre en place versioning + changelog de release.
3939

4040
### Phase 7 - Documentation et contribution (P2)
4141
- [ ] Mettre a jour README (mode IDE par defaut, options CLI, completion).

docs/versioning_and_release.md

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
# Versioning And Release
2+
3+
## Versioning policy
4+
5+
- Use Semantic Versioning: `MAJOR.MINOR.PATCH`.
6+
- Git tags must follow: `vMAJOR.MINOR.PATCH` (example: `v0.2.0`).
7+
8+
## Changelog policy
9+
10+
- Every release must have a dedicated section in `CHANGELOG.md`.
11+
- Keep the following section structure:
12+
- `Added`
13+
- `Changed`
14+
- `Fixed`
15+
- Move relevant entries from `[Unreleased]` into the new release section.
16+
17+
## Release flow
18+
19+
1. Make sure `develop` is green in CI.
20+
1. Run manual smoke checks from `docs/release_smoke_checklist.md`.
21+
1. Update `CHANGELOG.md` with a new version header and date.
22+
1. Create and push a tag: `git tag vX.Y.Z && git push origin vX.Y.Z`.
23+
1. GitHub Actions `release.yml` publishes artifacts and release notes.
24+
25+
## Release notes source
26+
27+
- Release notes are generated from the section matching the pushed tag in `CHANGELOG.md`.
28+
- If no matching section is found, the workflow falls back to auto-generated notes.

0 commit comments

Comments
 (0)