# Continuous integration for the NATO alphabet project. # # Purpose: run the pytest suite on Python 3.13 so a change is known to work # before it is merged (BC-001 objective O3, success criterion 2). # Triggers: a push to main or to a milestone branch, and every pull request # that touches source, tests, project configuration or this file. # Inputs: none. # Secrets: none. The job reads the repository only. # Changes: nothing outside the repository. # Decision: MIL-001 task "Add the CI workflow". # Host: Gitea Actions (act_runner); the same file runs on GitHub Actions. # The runner must offer the label ubuntu-latest. name: CI on: push: branches: [main, "mil-*"] paths: - "src/**" - "tests/**" - "pyproject.toml" - ".gitea/workflows/ci.yml" pull_request: paths: - "src/**" - "tests/**" - "pyproject.toml" - ".gitea/workflows/ci.yml" # A newer run of the same branch makes the older one pointless. concurrency: group: ci-${{ github.ref }} cancel-in-progress: true env: PYTHON_VERSION: "3.13" jobs: test: name: Test on Python 3.13 permissions: contents: read runs-on: ubuntu-latest timeout-minutes: 10 steps: - name: Check out the repository uses: actions/checkout@v4.2.2 - name: Set up Python uses: actions/setup-python@v5.6.0 with: python-version: ${{ env.PYTHON_VERSION }} - name: Create the virtual environment and upgrade pip run: | python -m venv .venv .venv/bin/python -m pip install --upgrade pip - name: Install the project with its development tools run: .venv/bin/python -m pip install -e ".[dev]" - name: Check the code style run: .venv/bin/python -m ruff check . - name: Check the types run: .venv/bin/python -m mypy - name: Run the tests run: .venv/bin/python -m pytest