diff --git a/.github/workflows/release_plugin.yml b/.github/workflows/release_plugin.yml index c398381..7181716 100644 --- a/.github/workflows/release_plugin.yml +++ b/.github/workflows/release_plugin.yml @@ -1,15 +1,26 @@ name: Release QGIS Plugin +# Spouští se na push tagu, ne na publikaci releasu. Organizace má zapnuté +# immutable releases: k už publikovanému releasu nelze nic přiložit, příloha +# tedy musí vzniknout dřív, než se release zveřejní. Workflow proto založí +# koncept releasu i se ZIPem; text se dopisuje a publikuje ručně. +# +# Pozor: workflow se čte z commitu, na který tag ukazuje. Tag musí být +# založen až na commitu, který tento soubor obsahuje. on: - release: - types: [published] + push: + tags: + - 'v*' + +permissions: + contents: write jobs: build-and-release: runs-on: ubuntu-latest - + steps: - # 1. Stáhne kód z repozitáře + # 1. Stáhne kód z tagu, který běh spustil - name: Checkout code uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 @@ -20,11 +31,14 @@ jobs: # -r = rekurzivně, -x = ignorovat skryté git soubory zip -r amcr_viewer.zip amcr_viewer -x "*.git*" - # 3. Nahraje ZIP k Releasu - - name: Upload Release Asset + # 3. Založí koncept releasu i s přílohou + # Tagy s pomlčkou (v2.0.0-alpha.1) se označí jako pre-release. + - name: Create draft release with asset uses: softprops/action-gh-release@b4309332981a82ec1c5618f44dd2e27cc8bfbfda # v3.0.0 - if: startsWith(github.ref, 'refs/tags/') with: files: amcr_viewer.zip + draft: true + name: AMCR Viewer ${{ github.ref_name }} + prerelease: ${{ contains(github.ref_name, '-') }} env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} \ No newline at end of file + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/AGENTS.md b/AGENTS.md index e0b9536..251cf42 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -90,10 +90,16 @@ Další pravidla: `changelog=` v `metadata.txt` (formát `vX.Y.Z (RRRR-MM-DD)` + odrážky). - Datum v changelogu ber z **deterministického zdroje**, ne z paměti, např. `python -c "import datetime; print(datetime.date.today().isoformat())"`. -- Release se vytváří publikací GitHub Release; workflow - `.github/workflows/release_plugin.yml` zabalí složku `amcr_viewer/` do - `amcr_viewer.zip` a přiloží ji k releasu. Do ZIPu se nesmí dostat `.git*` - soubory. +- Release se spouští **pushnutím tagu `vX.Y.Z`**, ne publikací releasu + v UI. Workflow `.github/workflows/release_plugin.yml` zabalí složku + `amcr_viewer/` do `amcr_viewer.zip` a založí **koncept** releasu i s touto + přílohou; text se dopíše a release zveřejní ručně. Do ZIPu se nesmí dostat + `.git*` soubory. +- Organizace má zapnuté **immutable releases** – k publikovanému releasu už + nelze nic přiložit. Proto příloha vzniká na konceptu, ještě před + zveřejněním; workflow spouštěný na `release: published` by vždy selhal. +- Workflow se čte z commitu, na který **tag ukazuje**. Tag proto zakládej až + na commitu, který obsahuje aktuální podobu workflow – jinak se nespustí nic. ## Pull requesty