648c676024
The v3.31.1 run's Python suite failed: ssl.SSLContext.set_psk_server_callback (SCP81's PskTlsServer) was added in Python 3.13 - the job used 3.12 and all 20 SCP81 PSK tests errored. The workflow now pins 3.13; the package itself is the tagged source and is unaffected by this CI-only change.
82 lines
2.6 KiB
YAML
82 lines
2.6 KiB
YAML
name: release
|
|
|
|
# Builds the release package from the tagged source and publishes it.
|
|
# The package is a snapshot of the tree without the development-only files
|
|
# (tools/build_release.py); pysim is not bundled - setup installs it from
|
|
# upstream. Trigger: push a v* tag (or run manually for an existing tag).
|
|
|
|
on:
|
|
push:
|
|
tags: ['v*']
|
|
workflow_dispatch:
|
|
inputs:
|
|
tag:
|
|
description: 'Tag to package and publish (e.g. v3.31.0)'
|
|
required: true
|
|
|
|
permissions:
|
|
contents: write
|
|
|
|
jobs:
|
|
release:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Check out the tagged source
|
|
uses: actions/checkout@v4
|
|
with:
|
|
path: simple
|
|
ref: ${{ github.event.inputs.tag || github.ref }}
|
|
|
|
# The Python tests expect a pysim checkout as a sibling of the repo
|
|
# (tests/*.py prepend <repo>/../pysim to sys.path).
|
|
- name: Check out pysim next to the repo
|
|
uses: actions/checkout@v4
|
|
with:
|
|
repository: osmocom/pysim
|
|
path: pysim
|
|
|
|
# 3.13+ is required by the suite: ssl's TLS-PSK callbacks
|
|
# (SCP81's PskTlsServer) exist only since Python 3.13.
|
|
- uses: actions/setup-python@v5
|
|
with:
|
|
python-version: '3.13'
|
|
|
|
# pyscard has no manylinux wheels, so it builds from source on Linux
|
|
# and needs the PC/SC development headers.
|
|
- name: Install the PC/SC development headers
|
|
run: sudo apt-get update && sudo apt-get install -y libpcsclite-dev
|
|
|
|
- name: Install pysim and the test dependencies
|
|
working-directory: simple
|
|
run: |
|
|
python -m pip install --upgrade pip
|
|
python -m pip install -r requirements-pysim.txt
|
|
python -m pip install --no-deps ../pysim
|
|
|
|
- name: Python suite
|
|
working-directory: simple
|
|
run: python -m unittest discover -s tests
|
|
|
|
- name: Frontend suite
|
|
working-directory: simple/frontend
|
|
run: node --test
|
|
|
|
- name: Build the release package
|
|
working-directory: simple
|
|
run: |
|
|
TAG="${{ github.event.inputs.tag || github.ref_name }}"
|
|
python tools/build_release.py --expect-version "${TAG#v}" --out dist
|
|
|
|
- name: Publish the release
|
|
working-directory: simple
|
|
env:
|
|
GH_TOKEN: ${{ github.token }}
|
|
run: |
|
|
TAG="${{ github.event.inputs.tag || github.ref_name }}"
|
|
ZIP="dist/simple-${TAG#v}.zip"
|
|
if gh release view "$TAG" >/dev/null 2>&1; then
|
|
gh release upload "$TAG" "$ZIP" --clobber
|
|
else
|
|
gh release create "$TAG" "$ZIP" --title "$TAG" --generate-notes
|
|
fi
|