Mayavi example #166
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
# .github/workflows/base.yml | |
name: Build | |
on: | |
# this one is to trigger the workflow manually from the interface | |
workflow_dispatch: | |
push: | |
tags: | |
- '*' | |
branches: | |
- main | |
pull_request: | |
branches: | |
- main | |
defaults: | |
run: | |
shell: bash -l {0} | |
jobs: | |
# pre-job to read nox tests matrix - see https://stackoverflow.com/q/66747359/7262247 | |
list_nox_test_sessions: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v2 | |
- name: Install python 3.9 | |
uses: actions/setup-python@v4 | |
with: | |
python-version: 3.9 | |
architecture: x64 | |
- name: Install noxfile requirements | |
run: pip install -r noxfile-requirements.txt | |
- name: List 'tests' nox sessions and required python versions | |
id: set-matrix | |
run: echo "::set-output name=matrix::$(nox -s gha_list -- -s tests -v)" | |
outputs: | |
matrix: ${{ steps.set-matrix.outputs.matrix }} # save nox sessions list to outputs | |
run_all_tests: | |
needs: list_nox_test_sessions | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [ ubuntu-latest, windows-latest ] # , macos-latest, windows-latest] | |
# all nox sessions: manually > dynamically from previous job | |
# nox_session: ["tests-2.7", "tests-3.7"] | |
nox_session: ${{ fromJson(needs.list_nox_test_sessions.outputs.matrix) }} | |
name: ${{ matrix.os }} ${{ matrix.nox_session.python }} ${{ matrix.nox_session.session }} # ${{ matrix.name_suffix }} | |
runs-on: ${{ matrix.os }} | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v2 | |
- name: Install python ${{ matrix.nox_session.python }} for tests | |
uses: actions/setup-python@v4 | |
with: | |
python-version: ${{ matrix.nox_session.python }} | |
architecture: x64 | |
- name: Install python 3.9 for nox | |
uses: actions/setup-python@v4 | |
with: | |
python-version: 3.9 | |
architecture: x64 | |
# Setup Qt libraries for mayavi pyqt backend used in demo example | |
- name: Setup Qt libraries | |
uses: tlambert03/setup-qt-libs@v1 | |
- name: Install noxfile requirements | |
run: pip install -r noxfile-requirements.txt | |
- name: Run nox session ${{ matrix.nox_session.session }} | |
uses: aganders3/headless-gui@v1 | |
with: | |
run: nox -s "${{ matrix.nox_session.session }}" | |
# Share ./docs/reports so that they can be deployed with doc in next job | |
- name: Share reports with other jobs | |
# if: matrix.nox_session == '...': not needed, if empty wont be shared | |
uses: actions/upload-artifact@master | |
with: | |
name: reports_dir | |
path: ./docs/reports | |
# build_doc: useless in our case since own doc is part of the tests session | |
# runs-on: ubuntu-latest | |
# if: github.event_name == 'pull_request' | |
# steps: | |
# - name: Checkout | |
# uses: actions/checkout@v2 | |
# | |
# - name: Install python 3.9 for nox | |
# uses: actions/setup-python@v4 | |
# with: | |
# python-version: 3.9 | |
# architecture: x64 | |
# | |
# - name: Install noxfile requirements | |
# run: pip install -r noxfile-requirements.txt | |
# | |
# - name: Build the doc including example gallery | |
# run: nox -s docs -- build | |
publish_release: | |
needs: run_all_tests | |
runs-on: ubuntu-latest | |
if: github.event_name == 'push' | |
steps: | |
- name: GitHub context to debug conditional steps | |
env: | |
GITHUB_CONTEXT: ${{ toJSON(github) }} | |
run: echo "$GITHUB_CONTEXT" | |
- name: Checkout with no depth | |
uses: actions/checkout@v2 | |
with: | |
fetch-depth: 0 # so that gh-deploy works | |
- name: Install python 3.9 for nox | |
uses: actions/setup-python@v4 | |
with: | |
python-version: 3.9 | |
architecture: x64 | |
# 1) retrieve the reports generated previously | |
- name: Retrieve reports | |
uses: actions/download-artifact@master | |
with: | |
name: reports_dir | |
path: ./docs/reports | |
# Nox install | |
- name: Install noxfile requirements | |
run: pip install -r noxfile-requirements.txt | |
# 5) Run the flake8 report and badge | |
- name: Run flake8 analysis and generate corresponding badge | |
run: nox -s flake8 | |
# -------------- only on Ubuntu + MAIN PUSH (no pull request, no tag) ----------- | |
# 5) Publish the doc and test reports | |
- name: \[not on TAG\] Publish documentation, tests and coverage reports | |
if: github.event_name == 'push' && startsWith(github.ref, 'refs/heads') # startsWith(matrix.os,'ubuntu') | |
run: nox -s publish | |
# 6) Publish coverage report | |
- name: \[not on TAG\] Create codecov.yaml with correct paths | |
if: github.event_name == 'push' && startsWith(github.ref, 'refs/heads') | |
shell: bash | |
run: | | |
cat << EOF > codecov.yml | |
# codecov.yml | |
fixes: | |
- "/home/runner/work/smarie/mkdocs-gallery/::" # Correct paths | |
EOF | |
- name: \[not on TAG\] Publish coverage report | |
if: github.event_name == 'push' && startsWith(github.ref, 'refs/heads') | |
uses: codecov/codecov-action@v1 | |
with: | |
files: ./docs/reports/coverage/coverage.xml | |
# -------------- only on Ubuntu + TAG PUSH (no pull request) ----------- | |
# 7) Create github release and build the wheel | |
- name: \[TAG only\] Build wheel and create github release | |
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags') | |
run: nox -s release -- ${{ secrets.GITHUB_TOKEN }} | |
# 8) Publish the wheel on PyPi | |
- name: \[TAG only\] Deploy on PyPi | |
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags') | |
uses: pypa/gh-action-pypi-publish@release/v1 | |
with: | |
user: __token__ | |
password: ${{ secrets.PYPI_API_TOKEN }} | |
delete-artifacts: | |
needs: publish_release | |
runs-on: ubuntu-latest | |
if: github.event_name == 'push' | |
steps: | |
- uses: kolpav/purge-artifacts-action@v1 | |
with: | |
token: ${{ secrets.GITHUB_TOKEN }} | |
expire-in: 0 # Setting this to 0 will delete all artifacts |