feat: 🐳 multi-stage Docker builds, immutable release pipeline, CHANGELOG automation
#19
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" | |
| - ".github/workflows/python-tests.yml" | |
| pull_request: | |
| paths: | |
| - "socket_basics/**/*.py" | |
| - "tests/**/*.py" | |
| - "pyproject.toml" | |
| - "uv.lock" | |
| - ".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: 🧪 Run tests | |
| run: pytest -q tests/ |