feat!: switch to pre-built GHCR images (v2.0.0) (#48) #29
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: python-tests | |
| on: | |
| push: | |
| branches: [main] | |
| paths: | |
| - "socket_basics/**/*.py" | |
| - "tests/**/*.py" | |
| - "pyproject.toml" | |
| - "uv.lock" | |
| - "action.yml" | |
| - ".github/workflows/python-tests.yml" | |
| pull_request: | |
| paths: | |
| - "socket_basics/**/*.py" | |
| - "tests/**/*.py" | |
| - "pyproject.toml" | |
| - "uv.lock" | |
| - "action.yml" | |
| - ".github/workflows/python-tests.yml" | |
| workflow_dispatch: | |
| permissions: | |
| contents: read | |
| concurrency: | |
| group: python-tests-${{ github.ref }} | |
| cancel-in-progress: true | |
| jobs: | |
| test: | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 20 | |
| steps: | |
| - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 | |
| with: | |
| fetch-depth: 1 | |
| persist-credentials: false | |
| - name: 🐍 Setup Python | |
| uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0 | |
| with: | |
| python-version: "3.12" | |
| cache: "pip" | |
| - name: 🛠️ Install deps | |
| run: | | |
| python -m pip install --upgrade pip | |
| pip install -e ".[dev]" | |
| - name: 🔒 Assert version files in sync | |
| run: | | |
| V_PY=$(python -c "from socket_basics.version import __version__; print(__version__)") | |
| V_TOML=$(python -c "import tomllib; print(tomllib.loads(open('pyproject.toml').read())['project']['version'])") | |
| [ "$V_PY" = "$V_TOML" ] || (echo "Version mismatch: version.py=$V_PY pyproject.toml=$V_TOML" && exit 1) | |
| echo "Version in sync: $V_PY" | |
| - name: 🔒 Assert action.yml image ref matches version (once switched to pre-built) | |
| run: | | |
| python3 - <<'EOF' | |
| import re, sys, tomllib | |
| from pathlib import Path | |
| action = Path("action.yml").read_text() | |
| version = tomllib.loads(Path("pyproject.toml").read_text())["project"]["version"] | |
| match = re.search(r'image:\s*["\']docker://[^:]+:([^"\']+)["\']', action) | |
| if not match: | |
| print(f"SKIP: action.yml still uses Dockerfile — check will activate once switched to pre-built image") | |
| sys.exit(0) | |
| action_version = match.group(1) | |
| if action_version != version: | |
| print(f"FAIL: action.yml refs {action_version} but version is {version}") | |
| print(f" Update action.yml image ref to docker://ghcr.io/socketdev/socket-basics:{version}") | |
| sys.exit(1) | |
| print(f"OK: action.yml image ref matches version {version}") | |
| EOF | |
| - name: 🧪 Run tests | |
| run: pytest -q tests/ |