name: Nikola CI on: # Run on all pushes to master (including merge of PR) push: branches: master # Run on all changes in pull requests pull_request: # Run every Saturday at 17:10 UTC to ensure stability (dependency changes not breaking things) schedule: - cron: '10 17 * * 6' jobs: nikola: name: Nikola tests (Python ${{ matrix.python }} on ${{ matrix.image }}) strategy: fail-fast: false matrix: python: ['3.7', '3.8', '3.9', '3.10', '3.11', '3.12'] image: - ubuntu-latest include: - python: '3.12' image: macos-latest - python: '3.12' image: windows-latest runs-on: '${{ matrix.image }}' steps: - name: Check out code uses: actions/checkout@v3 - name: Set up Python uses: actions/setup-python@v4 with: python-version: '${{ matrix.python }}' - name: Upgrade packaging stack run: | python -m pip install --upgrade-strategy eager -U pip setuptools wheel - name: Install test requirements run: | python -m pip install --upgrade-strategy eager -Ur requirements-tests.txt - name: Install Nikola run: | python -m pip install . - name: Run tests run: | py.test tests/ - name: Run nikola run: | nikola - name: Run nikola help run: | nikola help baseline: name: Baseline testing (Python ${{ matrix.python }} on ${{ matrix.image }}) strategy: fail-fast: false matrix: python: ['3.12'] image: - ubuntu-latest runs-on: '${{ matrix.image }}' steps: - name: Check out code uses: actions/checkout@v3 - name: Set up Python uses: actions/setup-python@v4 with: python-version: '${{ matrix.python }}' - name: Upgrade packaging stack run: | python -m pip install --upgrade-strategy eager -U pip setuptools wheel - name: Install extra requirements run: | python -m pip install --upgrade-strategy eager -Ur requirements-extras.txt freezegun - name: Install Nikola run: | python -m pip install . - name: Compare to baseline run: | scripts/baseline.sh check flake8: name: Linting (flake8, pydocstyle) strategy: matrix: python: - '3.12' runs-on: ubuntu-latest steps: - name: Check out code uses: actions/checkout@v3 - name: Set up Python uses: actions/setup-python@v4 with: python-version: '${{ matrix.python }}' - name: Upgrade packaging stack run: | python -m pip install --upgrade-strategy eager -U pip setuptools wheel - name: Install requirements run: | python -m pip install flake8 pydocstyle - name: Run flake8 run: | flake8 nikola/ tests/ - name: Run pydocstyle run: | pydocstyle --count --match-dir='(?!^\\.)(?!data).*' nikola/ basereq: name: Build demo site with base requirements strategy: matrix: python: - '3.11' - '3.12' runs-on: ubuntu-latest steps: - name: Check out code uses: actions/checkout@v3 - name: Set up Python uses: actions/setup-python@v4 with: python-version: '${{ matrix.python }}' - name: Upgrade packaging stack run: | python -m pip install --upgrade-strategy eager -U pip setuptools wheel - name: Install requirements run: | python -m pip install --upgrade-strategy eager -Ur requirements.txt - name: Install Nikola run: | python -m pip install . - name: Run help run: | nikola help working-directory: / - name: Run init run: | nikola init -qd nsite working-directory: /tmp/ - name: Run build run: | nikola build working-directory: /tmp/nsite