diff options
Diffstat (limited to '.github/workflows')
| -rw-r--r-- | .github/workflows/ci.yml | 140 |
1 files changed, 140 insertions, 0 deletions
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..81efafa --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,140 @@ +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: + +jobs: + nikola: + name: Nikola tests (Python ${{ matrix.python }} on ${{ matrix.image }}) + strategy: + fail-fast: false + matrix: + python: [3.5, 3.6, 3.7, 3.8, 3.9] + image: + - ubuntu-latest + include: + - python: 3.9 + image: macos-latest + - python: 3.9 + image: windows-latest + runs-on: '${{ matrix.image }}' + steps: + - name: Check out code + uses: actions/checkout@v2 + - name: Set up Python + uses: actions/setup-python@v2 + 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.9] + image: + - ubuntu-latest + runs-on: '${{ matrix.image }}' + steps: + - name: Check out code + uses: actions/checkout@v2 + - name: Set up Python + uses: actions/setup-python@v2 + 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.9 + runs-on: ubuntu-latest + steps: + - name: Check out code + uses: actions/checkout@v2 + - name: Set up Python + uses: actions/setup-python@v2 + 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.9 + runs-on: ubuntu-latest + steps: + - name: Check out code + uses: actions/checkout@v2 + - name: Set up Python + uses: actions/setup-python@v2 + 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 |
