Fix tests and doc style build (#391) #1160
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 | |
on: | |
workflow_dispatch: | |
inputs: | |
hps-version: | |
description: HPS version to test against | |
default: 'latest-dev' | |
type: choice | |
options: | |
- 'v1.0.2' | |
- 'v1.0.3' | |
- 'latest-dev' | |
pull_request: | |
push: | |
tags: | |
- "*" | |
branches: | |
- main | |
env: | |
MAIN_PYTHON_VERSION: '3.10' | |
DOCUMENTATION_CNAME: 'hps.docs.pyansys.com' | |
PACKAGE_NAME: 'ansys-hps-client' | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.ref }} | |
cancel-in-progress: true | |
permissions: | |
contents: write | |
checks: write | |
jobs: | |
doc-style: | |
name: Documentation Style Check | |
runs-on: ubuntu-latest | |
steps: | |
- name: PyAnsys documentation style checks | |
uses: ansys/actions/doc-style@v6 | |
with: | |
token: ${{ secrets.GITHUB_TOKEN }} | |
tests: | |
strategy: | |
matrix: | |
os: ['ubuntu-latest'] | |
cfg: [ | |
{ python-version: '3.10', toxenv: 'py310' }, | |
] | |
fail-fast: false | |
uses: ./.github/workflows/tests.yml | |
secrets: inherit | |
with: | |
python-version: ${{ matrix.cfg.python-version }} | |
toxenv: ${{ matrix.cfg.toxenv }} | |
runner: ${{ matrix.os }} | |
hps-version: ${{ inputs.hps-version || 'latest-dev' }} | |
docs: | |
name: Documentation | |
runs-on: ubuntu-latest | |
needs: [doc-style] | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Set up Python | |
uses: actions/setup-python@v5 | |
with: | |
python-version: ${{ env.MAIN_PYTHON_VERSION }} | |
- name: Install dependencies | |
run: | | |
python -m pip install --upgrade pip setuptools tox | |
- name: Install OS dependencies | |
run: | | |
# Necessary for creating PDF | |
sudo apt update | |
sudo apt install latexmk texlive-latex-extra | |
- name: Generate the documentation with tox | |
run: tox -e doc | |
- name: Upload HTML Documentation | |
uses: actions/upload-artifact@v4 | |
with: | |
name: documentation-html | |
path: doc/_build/html | |
retention-days: 7 | |
- name: Upload PDF Documentation | |
uses: actions/upload-artifact@v4 | |
with: | |
name: documentation-pdf | |
path: doc/_build/latex/*.pdf | |
retention-days: 7 | |
smoke-tests: | |
name: Build and Smoke tests | |
runs-on: ${{ matrix.os }} | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [ubuntu-latest, windows-latest, macos-latest] | |
python-version: ['3.9', '3.10', '3.11', '3.12'] | |
should-release: | |
- ${{ github.event_name == 'push' && contains(github.ref, 'refs/tags') }} | |
exclude: | |
- should-release: false | |
os: macos-latest | |
- should-release: false | |
os: windows-latest | |
- should-release: false | |
python-version: '3.9' | |
- should-release: false | |
python-version: '3.11' | |
- should-release: false | |
python-version: '3.12' | |
steps: | |
- name: Build wheelhouse and perform smoke test | |
uses: ansys/actions/build-wheelhouse@v6 | |
with: | |
library-name: ${{ env.PACKAGE_NAME }} | |
operating-system: ${{ matrix.os }} | |
python-version: ${{ matrix.python-version }} | |
package: | |
name: Package library | |
needs: [tests, docs, smoke-tests] | |
runs-on: ubuntu-latest | |
steps: | |
- name: Build library source and wheel artifacts | |
uses: ansys/actions/build-library@v6 | |
with: | |
library-name: ${{ env.PACKAGE_NAME }} | |
python-version: ${{ env.MAIN_PYTHON_VERSION }} | |
library-version: | |
name: Get library version | |
runs-on: ubuntu-latest | |
outputs: | |
library_version: ${{ steps.version.outputs.library_version }} | |
steps: | |
- name: "Install Git and clone project" | |
uses: actions/checkout@v4 | |
- name: "Set up Python ${{ env.MAIN_PYTHON_VERSION }}" | |
uses: ansys/actions/_setup-python@main | |
with: | |
python-version: ${{ env.MAIN_PYTHON_VERSION }} | |
use-cache: true | |
- name: "Install the library" | |
shell: bash | |
run: | | |
python -m pip install -e . | |
- name: "Verify library is properly installed and get its version number" | |
id: version | |
shell: bash | |
run: | | |
library_name=${{ env.PACKAGE_NAME }} | |
library_version=$(python -c "import importlib.metadata as importlib_metadata; print(importlib_metadata.version('$library_name'))") | |
if [ -z "$library_version" ]; then | |
echo "Problem getting the library version" | |
exit 1; | |
else | |
echo "The library version is: $library_version"; | |
fi; | |
echo "library_version=$library_version" >> $GITHUB_OUTPUT | |
pre-release: | |
name: Pre-release project | |
if: startsWith(github.ref, 'refs/heads/main') | |
needs: [package, library-version] | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/download-artifact@v4 | |
with: | |
name: ansys-hps-client-artifacts | |
path: /tmp/artifacts | |
- name: List artifacts | |
run: ls -ltR /tmp/artifacts | |
- name: Release to latest-dev | |
uses: softprops/action-gh-release@v2 | |
if: startsWith(github.ref, 'refs/heads/main') | |
with: | |
tag_name: "v${{ needs.library-version.outputs.library_version }}" | |
name: "v${{ needs.library-version.outputs.library_version }}" | |
prerelease: true | |
files: | | |
/tmp/artifacts/*.whl | |
upload_dev_docs: | |
name: "Deploy dev documentation" | |
if: github.ref == 'refs/heads/main' | |
runs-on: ubuntu-latest | |
needs: [package] | |
steps: | |
- name: Deploy the latest documentation | |
uses: ansys/actions/doc-deploy-dev@v6 | |
with: | |
doc-artifact-name: 'documentation-html' | |
cname: ${{ env.DOCUMENTATION_CNAME }} | |
token: ${{ secrets.GITHUB_TOKEN }} | |
release: | |
name: Release project | |
if: github.event_name == 'push' && contains(github.ref, 'refs/tags') | |
needs: [package] | |
runs-on: ubuntu-latest | |
steps: | |
- name: Release to the public PyPI repository | |
uses: ansys/actions/release-pypi-public@v6 | |
with: | |
library-name: ${{ env.PACKAGE_NAME }} | |
twine-username: "__token__" | |
twine-token: ${{ secrets.PYPI_TOKEN }} | |
- name: Release to GitHub | |
uses: ansys/actions/release-github@v6 | |
with: | |
library-name: ${{ env.PACKAGE_NAME }} | |
doc-deploy-stable: | |
name: "Deploy stable documentation" | |
# Deploy release documentation when creating a new tag | |
if: github.event_name == 'push' && contains(github.ref, 'refs/tags') | |
runs-on: ubuntu-latest | |
needs: [release] | |
steps: | |
- uses: ansys/actions/doc-deploy-stable@v6 | |
with: | |
doc-artifact-name: 'documentation-html' | |
cname: ${{ env.DOCUMENTATION_CNAME }} | |
token: ${{ secrets.GITHUB_TOKEN }} |