Release packaging: archives, workflow, download-first docs, Windows notes
release / release (push) Waiting to run
release / release (push) Waiting to run
- tools/build_release.sh: builds the Linux tar.gz and Windows zip from a git ref (default HEAD) using an explicit `git archive` pathspec allowlist: decoder (__init__.py, pd.py, gsmtap_stream.py), setup/start scripts, tools/vs_reader.py, READMEs, LICENSE and the README-referenced resources/ images. v* tags must match pd.py VERSION. Both archives are listed and extracted and checked for VERSION, py_compile, bash -n, .bat CRLF / .sh LF and tar exec bits; SHA256SUMS uses sha256sum or shasum. Builds into a staging dir and only then replaces dist/. - .github/workflows/release.yml: on a v* tag push run the unit tests, verify tag == pd.py VERSION, build, then upload into an existing release or create a draft and publish it; release-<tag> concurrency. - README/RUS: Installation documents both ways (release download recommended; source checkout for development), SHA256SUMS verification, and the Windows prerequisites verified against sigrok.org (0.7.2 release installer as the tested version, nightly caveat, VC++ 2010 redist, bundled fx2lafw firmware and Zadig, per-port driver binding). - start.bat: accept --opt=value alongside the original --opt value form (the usage text advertised the = form while the parser required a space); usage corrected and notes the core subset. - .gitignore: dist/. - AGENTS: release packaging, build verification and release process (commit docs/workflow first, then tag and push, auto-generated notes). No decoder behavior change; VERSION stays 1.9.7.
This commit is contained in:
1 parent
6e6f465841
commit
1cbafe715c
7 files changed
+518
-39
No files matched your search
@@ -0,0 +1,63 @@
|
||||
name: release
|
||||
|
||||
on:
|
||||
push:
|
||||
tags:
|
||||
- 'v*'
|
||||
|
||||
permissions:
|
||||
contents: write
|
||||
|
||||
concurrency:
|
||||
group: release-${{ github.ref_name }}
|
||||
cancel-in-progress: false
|
||||
|
||||
jobs:
|
||||
release:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
- uses: actions/setup-python@v5
|
||||
with:
|
||||
python-version: '3.x'
|
||||
|
||||
- name: Unit tests
|
||||
run: python3 tests/test_gsmtap.py
|
||||
|
||||
- name: Verify tag matches pd.py VERSION
|
||||
shell: bash
|
||||
run: |
|
||||
set -euo pipefail
|
||||
version=$(sed -n "s/^VERSION = '\([0-9][0-9.]*\)'.*/\1/p" pd.py)
|
||||
if [ -z "$version" ]; then
|
||||
echo "::error::cannot read VERSION from pd.py"
|
||||
exit 1
|
||||
fi
|
||||
if [ "$GITHUB_REF_NAME" != "v$version" ]; then
|
||||
echo "::error::tag $GITHUB_REF_NAME does not match pd.py VERSION '$version'"
|
||||
exit 1
|
||||
fi
|
||||
echo "tag $GITHUB_REF_NAME matches pd.py VERSION $version"
|
||||
|
||||
- name: Build release archives
|
||||
run: ./tools/build_release.sh "$GITHUB_REF_NAME"
|
||||
|
||||
- name: Create or update the GitHub release
|
||||
shell: bash
|
||||
env:
|
||||
GH_TOKEN: ${{ github.token }}
|
||||
run: |
|
||||
set -euo pipefail
|
||||
version=$(sed -n "s/^VERSION = '\([0-9][0-9.]*\)'.*/\1/p" pd.py)
|
||||
# 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.
|
||||
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
|
||||
fi
|
||||
# Publish a new draft and re-publish an existing one.
|
||||
gh release edit "$GITHUB_REF_NAME" --draft=false
|
||||
Reference in new issue
Block a user