Skip to content

Feature/improved automated testing #635

Feature/improved automated testing

Feature/improved automated testing #635

Workflow file for this run

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 }}