diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index ff0eb22..a9934a9 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -45,6 +45,33 @@ jobs: - name: Build release archives run: ./tools/build_release.sh "$GITHUB_REF_NAME" + - name: Write the install notes + shell: bash + run: | + set -euo pipefail + version=$(sed -n "s/^VERSION = '\([0-9][0-9.]*\)'.*/\1/p" pd.py) + notes="$RUNNER_TEMP/release-notes.md" + cat > "$notes" <<'EOF' + Runtime release - the decoder, setup/start scripts, docs and README + images; no git history and no development files. + + **Install - release package (recommended)** + - Linux: `sigrok_iso7816_stream-.tar.gz` + - Windows: `sigrok_iso7816_stream-.zip` + + Extract the archive, then run `./setup.sh` + `./start.sh` (Linux) or + `setup.bat` + `start.bat` (Windows). `SHA256SUMS` (attached) verifies + both downloads. Requires sigrok-cli and the FX2 firmware; see the + README *Installation* section for the full prerequisites. + + **Install - source checkout (development)** + `git clone https://github.com/anttro/sigrok_iso7816_stream.git`, then + the same setup/start scripts. The clone adds `tests/`, the baseline + tools and the (local-only) example traces; the release package is the + runtime tree. + EOF + sed -i "s//$version/g" "$notes" + - name: Create or update the GitHub release shell: bash env: @@ -52,12 +79,15 @@ jobs: run: | set -euo pipefail version=$(sed -n "s/^VERSION = '\([0-9][0-9.]*\)'.*/\1/p" pd.py) + notes="$RUNNER_TEMP/release-notes.md" # Upload into an existing release first. If the release does not # exist yet, create it as a draft so the published release never - # appears with a partial asset set. + # appears with a partial asset set. The install notes are prepended + # to GitHub's generated changelog. if ! gh release upload "$GITHUB_REF_NAME" dist/* --clobber; then gh release create "$GITHUB_REF_NAME" dist/* --draft \ - --title "sigrok_iso7816_stream $version" --generate-notes + --title "sigrok_iso7816_stream $version" \ + --notes-file "$notes" --generate-notes fi # Publish a new draft and re-publish an existing one. gh release edit "$GITHUB_REF_NAME" --draft=false diff --git a/AGENTS.md b/AGENTS.md index 058613d..3117a33 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -1050,11 +1050,14 @@ untouched, and `gh release upload dist/*` can never attach a stale version). (`tests/test_gsmtap.py`), tag == `pd.py` VERSION, the build script, then `gh release upload --clobber` (or `gh release create --draft` when there is no release yet) followed by `gh release edit --draft=false`, with -`release-` concurrency. **Release process:** commit the docs, workflow -and scripts first, then tag `v1.9.7` and push the tag (with user approval) - -the workflow must exist in the tagged commit, and the archive ships the -committed READMEs. Release notes are GitHub's auto-generated notes from the -commits; `AGENTS.md` and `tests/` are not in the archive. Packaging/docs +`release-` concurrency. The workflow prepends a standard install block +to the generated notes: release package (recommended; Linux tar.gz / Windows +zip, setup/start, SHA256SUMS) and source checkout (development). **Release +process:** commit the docs, workflow and scripts first, then tag `v1.9.7` and +push the tag (with user approval) - the workflow must exist in the tagged +commit, and the archive ships the committed READMEs. The changelog itself is +GitHub's auto-generated notes from the commits; `AGENTS.md` and `tests/` are +not in the archive. Packaging/docs only - no decoder behavior change, and `VERSION` is unchanged. ### Testing after decoder changes