pyscal #101
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: pyscal | |
on: | |
push: | |
branches: | |
- main | |
pull_request: | |
branches: | |
- main | |
release: | |
types: | |
- published | |
schedule: | |
# Run CI every night and check that tests are working with latest dependencies | |
- cron: "0 0 * * *" | |
env: | |
# Default python version to be use to create docs | |
DEFAULT_PYTHON_VERSION: "3.11" | |
jobs: | |
pyscal: | |
runs-on: ${{ matrix.os }} | |
strategy: | |
matrix: | |
include: | |
- os: "ubuntu-latest" | |
python-version: "3.8" | |
- os: "ubuntu-latest" | |
python-version: "3.9" | |
- os: "ubuntu-latest" | |
python-version: "3.10" | |
- os: "ubuntu-latest" | |
python-version: "3.11" | |
- os: "macos-latest" | |
python-version: "3.11" | |
- os: "windows-latest" | |
python-version: "3.11" | |
steps: | |
- name: Checkout commit locally | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- name: Set up Python ${{ matrix.python-version }} | |
uses: actions/setup-python@v5 | |
with: | |
python-version: ${{ matrix.python-version }} | |
- name: Install pyscal with dependencies | |
if: ${{ always() }} | |
run: | | |
pip install --upgrade pip | |
pip install .[tests,docs] | |
- name: List all installed packages | |
if: ${{ always() }} | |
run: pip freeze | |
- name: Ruff check | |
if: ${{ always() }} | |
run: | | |
ruff check . | |
- name: Ruff format | |
if: ${{ always() }} | |
run: | | |
ruff format . --check | |
- name: Check typing with mypy | |
if: ${{ always() }} | |
run: | | |
mypy src/pyscal | |
- name: Run tests | |
if: ${{ always() }} | |
run: | | |
python -c "import pyscal" | |
pytest -n auto --strict-markers --hypothesis-profile ci tests/ | |
- name: Syntax check documentation | |
if: ${{ always() }} | |
run: | | |
rstcheck -r docs | |
- name: Install font (xkcd) for documentation | |
if: ${{ matrix.os == 'ubuntu-latest' && matrix.python-version == env.DEFAULT_PYTHON_VERSION }} | |
run: | | |
sudo apt-get install -y fonts-humor-sans | |
- name: Build documentation | |
if: ${{ matrix.os == 'ubuntu-latest' && matrix.python-version == env.DEFAULT_PYTHON_VERSION }} | |
run: | | |
export SETUPTOOLS_SCM_PRETEND_VERSION=${GITHUB_REF//refs\/tags\//} | |
python docs/make_plots.py | |
sphinx-build -b html docs ./build/sphinx/html | |
- name: Update GitHub pages | |
if: ${{ github.event_name == 'release' && matrix.os == 'ubuntu-latest' && matrix.python-version == env.DEFAULT_PYTHON_VERSION }} | |
run: | | |
cp -R ./build/sphinx/html ../html | |
git config --local user.email "pyscal-github-action" | |
git config --local user.name "pyscal-github-action" | |
git fetch origin gh-pages | |
git stash # Due to make_plots.py above maybe having modified png files | |
git checkout --track origin/gh-pages | |
git clean -f -f -d -x # Double -f is intentional | |
git rm -r * | |
cp -R ../html/* . | |
git add . | |
if git diff-index --quiet HEAD; then | |
echo "No changes in documentation. Skip documentation deploy." | |
else | |
git commit -m "Update Github Pages" | |
git push "https://${{ github.actor }}:${{ secrets.GITHUB_TOKEN }}@github.com/${{ github.repository }}.git" gh-pages | |
fi |