CI: add smoke tests, tests and update release #49
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
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@v3 | ||
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@v3 | ||
# with: | ||
# name: documentation-pdf | ||
# path: doc/_build/latex | ||
# retention-days: 7 | ||
- name: Deploy | ||
if: contains(github.ref, 'refs/heads/main') | ||
uses: JamesIves/[email protected] | ||
with: | ||
token: ${{ secrets.GITHUB_TOKEN }} | ||
branch: gh-pages | ||
folder: doc/_build/html | ||
clean: true | ||
single-commit: true | ||
release: | ||
if: github.event_name == 'push' && contains(github.ref, 'refs/tags') | ||
needs: [code-style, doc-build] | ||
runs-on: ubuntu-latest | ||
steps: | ||
- uses: actions/checkout@v4 | ||
- uses: actions/download-artifact@v3 | ||
- name: Display structure of downloaded files | ||
run: ls -R | ||
- name: Zip HTML documentation | ||
uses: vimtor/[email protected] | ||
with: | ||
files: documentation-html | ||
dest: documentation-html.zip | ||
- name: Release | ||
uses: softprops/action-gh-release@v1 | ||
with: | ||
generate_release_notes: true | ||
files: | | ||
./documentation-html.zip | ||
./documentation-pdf/*.pdf | ||
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 }} |