Github CI-CD #64
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: Github CI-CD | |
on: | |
pull_request: | |
workflow_dispatch: | |
push: | |
tags: | |
- "*" | |
branches: | |
- "main" | |
schedule: # UTC at 0300 | |
- cron: "0 3 * * *" | |
env: | |
MAIN_PYTHON_VERSION: '3.10' | |
PACKAGE_NAME: 'pyaedt-examples' | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.ref }} | |
cancel-in-progress: true | |
jobs: | |
code-style: | |
name: Code style | |
runs-on: ubuntu-latest | |
steps: | |
- uses: ansys/actions/code-style@v4 | |
with: | |
python-version: ${{ env.MAIN_PYTHON_VERSION }} | |
use-python-cache: false | |
smoke-tests: | |
name: Build and Smoke tests | |
runs-on: ${{ matrix.os }} | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [ubuntu-latest, windows-latest] | |
python-version: ['3.9', '3.10', '3.11'] | |
should-release: | |
- ${{ github.event_name == 'push' && contains(github.ref, 'refs/tags') }} | |
steps: | |
- name: Build wheelhouse and perform smoke test | |
uses: ansys/actions/build-wheelhouse@v5 | |
with: | |
library-name: ${{ env.PACKAGE_NAME }} | |
operating-system: ${{ matrix.os }} | |
python-version: ${{ matrix.python-version }} | |
doc-style: | |
name: Documentation style | |
runs-on: ubuntu-latest | |
steps: | |
- uses: ansys/actions/doc-style@v4 | |
with: | |
token: ${{ secrets.GITHUB_TOKEN }} | |
tests: | |
name: Test and coverage | |
runs-on: ubuntu-latest | |
steps: | |
- uses: ansys/actions/tests-pytest@v5 | |
with: | |
token: ${{ secrets.GITHUB_TOKEN }} | |
- name: Upload Coverage Results | |
if: always() | |
uses: actions/upload-artifact@v4 | |
with: | |
name: coverage-html | |
path: .cov/html | |
retention-days: 7 | |
# ================================================================================================= | |
# vvvvvvvvvvvvvvvvvvvvvvvvvvvvvv RUNNING ON SELF-HOSTED RUNNER vvvvvvvvvvvvvvvvvvvvvvvvvvvvvv | |
# ================================================================================================= | |
doc-build: | |
name: Build documentation | |
runs-on: [pyaedt, Windows] | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Set up Python ${{ env.MAIN_PYTHON_VERSION }} | |
uses: actions/setup-python@v5 | |
with: | |
python-version: ${{ env.MAIN_PYTHON_VERSION }} | |
- name: Create virtual environment | |
run: | | |
python -m venv .venv | |
.venv\Scripts\Activate.ps1 | |
python -m pip install pip -U | |
python -m pip install wheel setuptools -U | |
python -c "import sys; print(sys.executable)" | |
- name: Install project and documentation dependencies | |
run: | | |
.venv\Scripts\Activate.ps1 | |
pip install . | |
pip install .[doc] | |
- name: Uninstall conflicting CI packages | |
run: | | |
.venv\Scripts\Activate.ps1 | |
pip uninstall vtk pypandoc -y | |
- name: Install CI related dependencies | |
run: | | |
.venv\Scripts\Activate.ps1 | |
pip install --extra-index-url https://wheels.vtk.org .[ci] | |
- name: Create HTML documentation | |
run: | | |
.venv\Scripts\Activate.ps1 | |
. .\doc\make.bat html | |
- name: Upload HTML documentation artifact | |
uses: actions/upload-artifact@v4 | |
with: | |
name: documentation-html | |
path: doc/_build/html | |
retention-days: 7 | |
- name: Create PDF documentation | |
run: | | |
.venv\Scripts\Activate.ps1 | |
. .\doc\make.bat pdf | |
- name: Upload PDF documentation artifact | |
uses: actions/upload-artifact@v4 | |
with: | |
name: documentation-pdf | |
path: doc/_build/latex | |
retention-days: 7 | |
release: | |
name: Release project | |
if: github.event_name == 'push' && contains(github.ref, 'refs/tags') | |
needs: [code-style, doc-build] | |
runs-on: ubuntu-latest | |
steps: | |
# TODO: update if ever public | |
# - name: Release to the public PyPI repository | |
# uses: ansys/actions/release-pypi-public@v5 | |
# with: | |
# library-name: ${{ env.PACKAGE_NAME }} | |
# twine-username: "__token__" | |
# twine-token: ${{ secrets.PYPI_TOKEN }} | |
- name: Release to GitHub | |
uses: ansys/actions/release-github@v5 | |
with: | |
library-name: ${{ env.PACKAGE_NAME }} |