name: CI on: push: paths-ignore: - 'docs/**' - 'README.md' schedule: # Weekly, at 02:30 on Friday (somewhat randomly chosen). - cron: '30 02 * * 5' workflow_dispatch: env: PIP_DISABLE_PIP_VERSION_CHECK: 1 PIP_NO_PYTHON_VERSION_WARNING: 1 jobs: lint: runs-on: ubuntu-latest name: Linting continue-on-error: "${{ github.ref != 'refs/heads/master' }}" steps: - name: Checkout uses: actions/checkout@v7 - name: Set up Python uses: actions/setup-python@v7 with: python-version: '3.x' - name: Run black uses: psf/black@stable test_python: strategy: matrix: python-version: - '3.11' - '3.12' - '3.13' - '3.14' # Random number to prevent exceeding the request frequency limit. max-parallel: 3 runs-on: ubuntu-latest name: 'Python ${{ matrix.python-version }}' steps: - name: Checkout uses: actions/checkout@v7 - name: Set up Python uses: actions/setup-python@v7 with: python-version: '${{ matrix.python-version }}' - name: 'Install package & dependencies' run: pip install -q -e . - name: Check that scripts are runnable run: | vk-mutuals --version vk-status --version vk-sessions --version - name: Run tests run: ./test/main.sh test_ubuntu: strategy: matrix: codename: - noble - resolute runs-on: ubuntu-latest container: image: 'ubuntu:${{ matrix.codename }}' name: 'Ubuntu: ${{ matrix.codename }}' steps: - name: Install dependencies run: | apt update DEBIAN_FRONTEND=noninteractive apt install -y --no-install-recommends \ ca-certificates \ python3 \ python3-matplotlib - name: Checkout uses: actions/checkout@v7 - name: Run tests run: ./test/main.sh publish_pypi: needs: - lint - test_python - test_ubuntu runs-on: ubuntu-latest name: Publish steps: - name: Checkout uses: actions/checkout@v7 - name: Set up Python uses: actions/setup-python@v7 with: python-version: '3.x' - name: Verify package can be installed run: pip install -q . - name: Install package builder run: pip install -q --upgrade build - name: Build package run: python -m build - name: Publish as artifact uses: actions/upload-artifact@v7 with: name: dist path: dist if-no-files-found: error - name: Publish to PyPI if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/') uses: pypa/gh-action-pypi-publish@release/v1 with: user: __token__ password: '${{ secrets.PYPI_API_TOKEN }}'