name: build on: [push, pull_request] env: # color output for pytest and tox PYTEST_ADDOPTS: "--color=yes" PY_COLORS: 1 jobs: test: name: Test - ${{ matrix.python }} - ${{ matrix.os }} runs-on: ${{ matrix.os }}-latest strategy: matrix: os: [ubuntu, macos, windows] python: ["3.10", "3.11", "3.12", "3.13"] include: - os: ubuntu python: "3.9" steps: - uses: actions/checkout@v4 - name: Set up Python ${{ matrix.python }} uses: actions/setup-python@v5 with: python-version: ${{ matrix.python }} cache: "pip" cache-dependency-path: "**/requirements/*" - name: Install locale (Linux) if: startsWith(runner.os, 'Linux') run: sudo locale-gen fr_FR.UTF-8 tr_TR.UTF-8 - name: Install pandoc uses: r-lib/actions/setup-pandoc@v2 with: pandoc-version: "2.9.2" - name: Install tox run: python -m pip install -U pip tox - name: Info run: | echo "===== PYTHON =====" python --version echo "===== PANDOC =====" pandoc --version | head -2 - name: Run tests run: tox -e py${{ matrix.python }} lint: name: Lint runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: pdm-project/setup-pdm@v4 with: python-version: "3.11" cache: true cache-dependency-path: ./pyproject.toml - name: Install dependencies run: | pdm install --no-default --dev - name: Run linters run: pdm lint --diff - name: Run pre-commit checks on all files uses: pre-commit/action@v3.0.1 build: name: Test build runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: pdm-project/setup-pdm@v4 with: python-version: "3.11" cache: true cache-dependency-path: ./pyproject.toml - name: Install dependencies run: pdm install --dev - name: Build package run: pdm build - name: Test build run: pdm run pytest --check-build=dist pelican/tests/build_test docs: name: Build docs runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Set up Python uses: actions/setup-python@v5 with: python-version: "3.11" cache: "pip" cache-dependency-path: "**/requirements/*" - name: Install tox run: python -m pip install -U pip tox - name: Check run: tox -e docs - name: cache the docs for inspection uses: actions/upload-artifact@v4 with: name: docs path: docs/_build/html/ deploy: name: Deploy environment: Deployment needs: [test, lint, docs, build] runs-on: ubuntu-latest if: github.ref=='refs/heads/main' && github.event_name!='pull_request' && github.repository == 'getpelican/pelican' permissions: contents: write id-token: write steps: - uses: actions/checkout@v4 with: token: ${{ secrets.GH_TOKEN }} - name: Set up Python uses: actions/setup-python@v5 with: python-version: "3.11" - name: Check release id: check_release run: | python -m pip install --upgrade pip python -m pip install autopub[github] autopub check - name: Publish if: ${{ steps.check_release.outputs.autopub_release=='true' }} env: GITHUB_TOKEN: ${{ secrets.GH_TOKEN }} run: | autopub prepare autopub commit autopub build autopub githubrelease - name: Upload package to PyPI if: ${{ steps.check_release.outputs.autopub_release=='true' }} uses: pypa/gh-action-pypi-publish@release/v1