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.
64 lines
1.8 KiB
YAML
64 lines
1.8 KiB
YAML
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
|