Feature/improved automated testing #636
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: CI | |
on: | |
pull_request: | |
push: | |
tags: | |
- "*" | |
branches: | |
- main | |
env: | |
MAIN_PYTHON_VERSION: '3.11' | |
PACKAGE_NAME: 'ansys-conceptev-core' | |
DOCUMENTATION_CNAME: 'conceptev.docs.pyansys.com' | |
MEILISEARCH_API_KEY: ${{ secrets.MEILISEARCH_API_KEY }} | |
MEILISEARCH_HOST_URL: ${{ vars.MEILISEARCH_HOST_URL }} | |
MEILISEARCH_PUBLIC_API_KEY: ${{ secrets.MEILISEARCH_PUBLIC_API_KEY }} | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.ref }} | |
cancel-in-progress: true | |
jobs: | |
update-changelog: | |
name: Update CHANGELOG for new tag | |
if: github.event_name == 'push' && contains(github.ref, 'refs/tags') | |
runs-on: ubuntu-latest | |
permissions: | |
contents: write | |
pull-requests: write | |
steps: | |
- uses: ansys/actions/doc-deploy-changelog@v8 | |
with: | |
token: ${{ secrets.PYANSYS_CI_BOT_TOKEN }} | |
bot-user: ${{ secrets.PYANSYS_CI_BOT_USERNAME }} | |
bot-email: ${{ secrets.PYANSYS_CI_BOT_EMAIL }} | |
# vulnerabilities: | |
# name: Vulnerabilities | |
# runs-on: ubuntu-latest | |
# steps: | |
# - name: PyAnsys vulnerability check (on main) | |
# if: github.ref == 'refs/heads/main' | |
# uses: ansys/actions/check-vulnerabilities@v6 | |
# with: | |
# python-version: ${{ env.MAIN_PYTHON_VERSION }} | |
# python-package-name: ${{ env.PACKAGE_NAME }} | |
# token: ${{ secrets.PYANSYS_CI_BOT_TOKEN }} | |
# - name: PyAnsys vulnerability check (on dev mode) | |
# if: github.ref != 'refs/heads/main' | |
# uses: ansys/actions/check-vulnerabilities@v6 | |
# with: | |
# python-version: ${{ env.MAIN_PYTHON_VERSION }} | |
# python-package-name: ${{ env.PACKAGE_NAME }} | |
# token: ${{ secrets.PYANSYS_CI_BOT_TOKEN }} | |
# dev-mode: true | |
code-style: | |
name: Code style | |
runs-on: ubuntu-latest | |
steps: | |
- name: PyAnsys code style checks | |
uses: ansys/actions/code-style@v8 | |
with: | |
python-version: ${{ env.MAIN_PYTHON_VERSION }} | |
doc-style: | |
name: Documentation style | |
runs-on: ubuntu-latest | |
steps: | |
- name: PyAnsys documentation style checks | |
uses: ansys/actions/doc-style@v8 | |
with: | |
token: ${{ secrets.GITHUB_TOKEN }} | |
smoke-tests: | |
name: Build and Smoke tests | |
runs-on: ${{ matrix.os }} | |
needs: [code-style] | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [ubuntu-latest, windows-latest] | |
python-version: ["3.9", "3.10", "3.11"] | |
steps: | |
- name: Build wheelhouse and perform smoke test | |
uses: ansys/actions/build-wheelhouse@v8 | |
with: | |
library-name: ${{ env.PACKAGE_NAME }} | |
operating-system: ${{ matrix.os }} | |
python-version: ${{ matrix.python-version }} | |
tests: | |
name: Tests and coverage | |
runs-on: ${{ matrix.os }} | |
needs: [smoke-tests] | |
strategy: | |
matrix: | |
os: [ubuntu-latest, windows-latest] | |
python-version: ["3.9","3.10","3.11"] | |
fail-fast: false | |
steps: | |
- uses: ansys/actions/tests-pytest@v8 | |
env: | |
CONCEPTEV_PASSWORD: ${{ secrets.CONCEPTEV_PASSWORD }} | |
CONCEPTEV_URL: ${{ vars.CONCEPTEV_URL }} | |
CONCEPTEV_USERNAME: ${{ vars.CONCEPTEV_USERNAME }} | |
OCM_URL: ${{ vars.OCM_URL }} | |
POETRY_VIRTUALENVS_CREATE: ${{ vars.POETRY_VIRTUALENVS_CREATE }} | |
with: | |
pytest-extra-args: "-m 'not integration' --cov=ansys --cov-report=term --cov-report=html:.cov/html" | |
- name: Upload coverage results | |
uses: actions/upload-artifact@v4 | |
if: env.MAIN_PYTHON_VERSION == matrix.python-version | |
with: | |
name: coverage-tests-${{ matrix.os }} | |
path: .cov | |
retention-days: 7 | |
- name: Upload coverage results (as .coverage) | |
uses: actions/upload-artifact@v4 | |
if: env.MAIN_PYTHON_VERSION == matrix.python-version | |
with: | |
name: coverage-file-tests-${{ matrix.os }} | |
path: .coverage | |
retention-days: 7 | |
doc-build: | |
name: Build documentation | |
runs-on: ubuntu-latest | |
needs: [doc-style] | |
steps: | |
- name: Install dependencies | |
run: | | |
sudo apt-get update | |
sudo apt-get install -y pandoc | |
sudo apt-get install texlive-latex-extra texlive-xetex texlive-fonts-extra | |
# sudo apt-get install libgl1-mesa-glx xvfb texlive-latex-extra latexmk graphviz texlive-xetex texlive-fonts-extra qpdf texlive-xetex xindy | |
- name: Verify Pandoc installation | |
run: pandoc --version | |
- name: Build documentation | |
env: | |
CONCEPTEV_USERNAME: ${{ secrets.CONCEPTEV_USERNAME }} | |
CONCEPTEV_PASSWORD: ${{ secrets.CONCEPTEV_PASSWORD }} | |
uses: ansys/actions/doc-build@v8 | |
with: | |
python-version: ${{ env.MAIN_PYTHON_VERSION }} | |
check-links: false | |
package: | |
name: Package library | |
runs-on: ubuntu-latest | |
steps: | |
- name: Build library source and wheel artifacts | |
uses: ansys/actions/build-library@v8 | |
with: | |
library-name: ${{ env.PACKAGE_NAME }} | |
python-version: ${{ env.MAIN_PYTHON_VERSION }} | |
doc-deploy-dev: | |
name: Deploy development documentation | |
runs-on: ubuntu-latest | |
needs: [doc-build, package] | |
if: github.ref == 'refs/heads/main' | |
steps: | |
- name: Deploy the latest documentation | |
uses: ansys/actions/doc-deploy-dev@v8 | |
with: | |
cname: ${{ env.DOCUMENTATION_CNAME }} | |
token: ${{ secrets.GITHUB_TOKEN }} | |
bot-user: ${{ secrets.PYANSYS_CI_BOT_USERNAME }} | |
bot-email: ${{ secrets.PYANSYS_CI_BOT_EMAIL }} | |
doc-deploy-stable: | |
name: Deploy stable documentation | |
runs-on: ubuntu-latest | |
needs: [doc-build, package, release] | |
if: github.event_name == 'push' && contains(github.ref, 'refs/tags') | |
steps: | |
- name: Deploy the stable documentation | |
uses: ansys/actions/doc-deploy-stable@v8 | |
with: | |
cname: ${{ env.DOCUMENTATION_CNAME }} | |
token: ${{ secrets.GITHUB_TOKEN }} | |
bot-user: ${{ secrets.PYANSYS_CI_BOT_USERNAME }} | |
bot-email: ${{ secrets.PYANSYS_CI_BOT_EMAIL }} | |
release: | |
name: Release to the public PyPI repository | |
if: github.event_name == 'push' && contains(github.ref, 'refs/tags') | |
needs: [doc-build, package, update-changelog] | |
runs-on: ubuntu-latest | |
# Specifying a GitHub environment is optional, but strongly encouraged | |
environment: release | |
permissions: | |
id-token: write | |
contents: write | |
steps: | |
- name: Release to the public PyPI repository | |
uses: ansys/actions/release-pypi-public@v8 | |
with: | |
library-name: ${{ env.PACKAGE_NAME }} | |
use-trusted-publisher: true | |
- name: Release to GitHub | |
uses: ansys/actions/release-github@v8 | |
with: | |
library-name: ${{ env.PACKAGE_NAME }} |