Codex titles reach the thread store the status bar actually reads #24
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: CI | |
| on: | |
| push: | |
| branches: | |
| - main | |
| pull_request: | |
| concurrency: | |
| group: ci-${{ github.workflow }}-${{ github.ref }} | |
| cancel-in-progress: true | |
| permissions: | |
| contents: read | |
| jobs: | |
| linux: | |
| name: Linux ${{ matrix.os }} / Python ${{ matrix.python }} | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| os: | |
| - ubuntu-22.04 | |
| - ubuntu-24.04 | |
| python: | |
| - "3.10" | |
| - "3.11" | |
| - "3.12" | |
| - "3.13" | |
| runs-on: ${{ matrix.os }} | |
| steps: | |
| - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7 | |
| with: | |
| persist-credentials: false | |
| - uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7 | |
| with: | |
| python-version: ${{ matrix.python }} | |
| - name: Check Bash syntax | |
| run: | | |
| bash -n install.sh | |
| bash -n bin/* | |
| bash -n bashrc/shpool.bashrc | |
| bash -n deploy/session-kit-launcher | |
| bash -n tests/run | |
| - name: Check public working tree | |
| run: tools/public-scan . | |
| - name: Run tests | |
| run: tests/run | |
| quality: | |
| name: Quality, privacy, and public export | |
| runs-on: ubuntu-24.04 | |
| steps: | |
| - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7 | |
| with: | |
| fetch-depth: 0 | |
| persist-credentials: false | |
| - uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7 | |
| with: | |
| python-version: "3.13" | |
| - name: Install quality tools | |
| run: | | |
| sudo apt-get update | |
| sudo apt-get install --yes shellcheck | |
| python -m pip install --requirement requirements-dev.txt | |
| - name: Check shell | |
| run: | | |
| shellcheck install.sh bin/* bashrc/shpool.bashrc \ | |
| deploy/session-kit-launcher tests/run | |
| - name: Check Python | |
| env: | |
| RUFF_CACHE_DIR: ${{ runner.temp }}/ruff-cache | |
| run: | | |
| ruff check . | |
| ruff check tools/build-public-tree tools/build-release-artifact \ | |
| tools/check-doc-links tools/public-scan | |
| ruff format --check lib/sessionkit_inventory/__init__.py \ | |
| lib/sessionkit_inventory/common.py \ | |
| lib/sessionkit_inventory/providers.py \ | |
| tests/test_doc_links.py tests/test_facade.py \ | |
| tests/test_public_export.py tests/test_public_scan.py \ | |
| tests/test_release_artifact.py tests/support.py | |
| ruff format --check tools/build-public-tree tools/build-release-artifact \ | |
| tools/check-doc-links tools/public-scan | |
| python -m compileall -q lib tests | |
| python -m py_compile tools/build-public-tree \ | |
| tools/build-release-artifact tools/check-doc-links tools/public-scan | |
| - name: Report legacy type baseline | |
| continue-on-error: true | |
| env: | |
| MYPY_CACHE_DIR: ${{ runner.temp }}/mypy-cache | |
| run: | | |
| mypy --ignore-missing-imports \ | |
| lib/session_inventory.py lib/sessionkit_inventory | |
| - name: Check documentation links | |
| run: tools/check-doc-links | |
| - name: Scan working tree and reachable history | |
| run: | | |
| tools/public-scan . | |
| if [[ -f SOURCE.json ]]; then | |
| tools/public-scan . --git-history --private-markers | |
| else | |
| tools/public-scan . --git-history | |
| fi | |
| - name: Build and test exact public export | |
| run: | | |
| tools/build-public-tree \ | |
| --commit "$GITHUB_SHA" \ | |
| --destination "$RUNNER_TEMP/session-kit-public" | |
| git -C "$RUNNER_TEMP/session-kit-public" init --quiet | |
| git -C "$RUNNER_TEMP/session-kit-public" config \ | |
| user.name "Session Kit CI" | |
| git -C "$RUNNER_TEMP/session-kit-public" config \ | |
| user.email "ci@example.invalid" | |
| git -C "$RUNNER_TEMP/session-kit-public" add . | |
| git -C "$RUNNER_TEMP/session-kit-public" commit \ | |
| --quiet --message "Public export under test" | |
| "$RUNNER_TEMP/session-kit-public/tests/run" | |
| - name: Build reproducible release preparation files | |
| run: | | |
| tools/build-release-artifact \ | |
| --commit "$GITHUB_SHA" \ | |
| --output-dir "$RUNNER_TEMP/artifacts-one" | |
| tools/build-release-artifact \ | |
| --commit "$GITHUB_SHA" \ | |
| --output-dir "$RUNNER_TEMP/artifacts-two" | |
| diff -qr "$RUNNER_TEMP/artifacts-one" "$RUNNER_TEMP/artifacts-two" | |
| cd "$RUNNER_TEMP/artifacts-one" | |
| sha256sum --check session-kit-"$GITHUB_SHA".sha256 | |
| - name: Enforce tested Python coverage | |
| env: | |
| COVERAGE_FILE: ${{ runner.temp }}/coverage | |
| run: | | |
| coverage run --branch --source=lib \ | |
| -m unittest discover -s tests -t . | |
| coverage report --skip-empty --fail-under=70 | |
| shpool-patch: | |
| name: Optional shpool patch applies and builds | |
| runs-on: ubuntu-24.04 | |
| steps: | |
| - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7 | |
| with: | |
| persist-credentials: false | |
| - name: Check patch against shpool 0.11.0 | |
| run: | | |
| git clone --branch v0.11.0 --depth 1 \ | |
| https://github.com/shell-pool/shpool.git \ | |
| "$RUNNER_TEMP/shpool" | |
| test "$(git -C "$RUNNER_TEMP/shpool" rev-parse HEAD)" = \ | |
| fe2d11595ff255810523b0868159dec051e303f1 | |
| git -C "$RUNNER_TEMP/shpool" apply --check \ | |
| "$GITHUB_WORKSPACE/shpool-patch/0001-heartbeat-ack-timeout-is-not-fatal.patch" | |
| git -C "$RUNNER_TEMP/shpool" apply \ | |
| "$GITHUB_WORKSPACE/shpool-patch/0001-heartbeat-ack-timeout-is-not-fatal.patch" | |
| cargo build --locked --release --manifest-path \ | |
| "$RUNNER_TEMP/shpool/Cargo.toml" --bin shpool |