Prepare for python 3.10 #43
Workflow file for this run
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
# This workflow will install and then lint the code with Flake8 and Pylint. | ||
# For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-python | ||
name: Regression Tests | ||
on: | ||
push: | ||
branches: ['master', 'devel'] | ||
pull_request: | ||
branches: '*' | ||
jobs: | ||
pure-pip-installation: | ||
# This stage only tests if the installation is possible. | ||
# The evironment created herein will be discared and re-created in the test stage. | ||
runs-on: ubuntu-latest | ||
strategy: | ||
matrix: | ||
# Add multiple Python versions here to run tests on new(er) versions. | ||
python-version: ["3.10"] | ||
fail-fast: false | ||
steps: | ||
- uses: actions/checkout@v3 | ||
- name: Set up Python ${{ matrix.python-version }} | ||
uses: actions/setup-python@v3 | ||
with: | ||
python-version: ${{ matrix.python-version }} | ||
- name: Build and install | ||
run: | | ||
python -m pip install --upgrade pip | ||
# Install with -e (in editable mode) to allow the tracking of the test coverage | ||
pip install -e . | ||
# Check result of installation | ||
python -c "import loadskernel" | ||
which loads-kernel | ||
which model-viewer | ||
which loads-compare | ||
conda-and-pip-installation: | ||
# This stage only tests if the installation is possible. | ||
# The evironment created herein will be discared and re-created in the test stage. | ||
runs-on: ubuntu-latest | ||
strategy: | ||
matrix: | ||
# Add multiple Python versions here to run tests on new(er) versions. | ||
python-version: ["3.10", "3.11"] | ||
fail-fast: false | ||
steps: | ||
- uses: actions/checkout@v3 | ||
- name: Set up Python ${{ matrix.python-version }} | ||
uses: actions/setup-python@v3 | ||
with: | ||
python-version: ${{ matrix.python-version }} | ||
- name: Build and install | ||
run: | | ||
# Install same requirements as to be used during regression testing | ||
source $CONDA/etc/profile.d/conda.sh | ||
conda activate | ||
conda install -y -c conda-forge --file ./tests/requirements.txt | ||
# Install with -e (in editable mode) to allow the tracking of the test coverage | ||
pip install -e . | ||
# Check result of installation | ||
python -c "import loadskernel" | ||
which loads-kernel | ||
which model-viewer | ||
which loads-compare | ||
Pytest: | ||
runs-on: ubuntu-latest | ||
strategy: | ||
matrix: | ||
# Add multiple Python versions here to run tests on new(er) versions. | ||
python-version: ["3.10"] | ||
steps: | ||
- uses: actions/checkout@v3 | ||
- name: Set up Python ${{ matrix.python-version }} | ||
uses: actions/setup-python@v3 | ||
with: | ||
python-version: ${{ matrix.python-version }} | ||
- name: Install dependencies | ||
run: | | ||
python -m pip install --upgrade pip | ||
# Install the package itself to make sure that all imports work. | ||
pip install -e . | ||
- name: Analysing the code with pytest | ||
run: | | ||
# Run the actual testing of the code with pytest | ||
# Using python -m pytest is necessary because pytest has the habit of not looking in the site-packages of the venv | ||
python -m pytest -v --basetemp=./tmp -k test_dummy --cov=loadskernel --cov=modelviewer --cov=loadscompare --junitxml=testresult.xml | ||
# Create some reports | ||
coverage report | ||
coverage xml -o coverage.xml | ||
coverage html --directory ./coverage/coverage | ||
- name: Upload test restults and coverage as an artifact | ||
uses: actions/upload-artifact@v3 | ||
with: | ||
name: test results and coverage | ||
path: | | ||
testresult.xml | ||
coverage.xml | ||
coverage | ||
if-no-files-found: ignore | ||
Jupyter: | ||
runs-on: ubuntu-latest | ||
strategy: | ||
matrix: | ||
# Select Python version to be used for compiling here. | ||
python-version: ["3.10"] | ||
steps: | ||
- uses: actions/checkout@v3 | ||
- name: Set up Python ${{ matrix.python-version }} | ||
uses: actions/setup-python@v3 | ||
with: | ||
python-version: ${{ matrix.python-version }} | ||
- name: Install dependencies | ||
run: | | ||
python -m pip install --upgrade pip | ||
# Install the package itself to make sure that all imports work. | ||
pip install . | ||
- name: Assemble the tutorials to a jupyter book and build htlm pages | ||
run: | | ||
jupyter-book build ./doc/tutorials | ||
# Put the html into a 2nd-level sub-folder and use 1st-level subfolder for uploading | ||
mkdir ./doc/html | ||
mv ./doc/tutorials/_build/html ./doc/html/tutorials | ||
- name: Upload Jupyter book as an artifact | ||
uses: actions/upload-artifact@v3 | ||
with: | ||
name: tutorials | ||
path: ./doc/html | ||
if-no-files-found: ignore | ||
combine-pages: | ||
# Add a dependency to the build job | ||
needs: [Jupyter, Pytest] | ||
steps: | ||
- uses: actions/download-artifact@v4 | ||
with: | ||
merge-multiple: true | ||
- name: Combine and upload everything for pages | ||
run: ls -la | ||
deploy-pages: | ||
# Add a dependency to the build job | ||
needs: combine-pages | ||
# Grant GITHUB_TOKEN the permissions required to make a Pages deployment | ||
permissions: | ||
pages: write # to deploy to Pages | ||
id-token: write # to verify the deployment originates from an appropriate source | ||
# Deploy to the github-pages environment | ||
environment: | ||
name: github-pages | ||
url: ${{ steps.deployment.outputs.page_url }} | ||
runs-on: ubuntu-latest | ||
steps: | ||
- name: Setup GitHub Pages | ||
uses: actions/configure-pages@v4 | ||
- name: Deploy to Pages | ||
id: deployment | ||
uses: actions/deploy-pages@v4 |