Skip to content

Add Linux test

Add Linux test #196

Workflow file for this run

name: "CI"
on:
pull_request:
push:
tags:
- "v*.*.*"
branches:
- main
workflow_dispatch:
inputs:
logLevel:
description: 'Log level'
required: true
default: 'warning'
env:
MAIN_PYTHON_VERSION: '3.10'
DOCUMENTATION_CNAME: 'aedt.common.toolkit.docs.pyansys.com'
LIBRARY_NAME: 'ansys-aedt-toolkits-common'
LIBRARY_NAMESPACE: 'ansys.aedt.toolkits.common'
ANSYSLMD_LICENSE_FILE: ${{ format('1055@{0}', secrets.LICENSE_SERVER) }}
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@v5
with:
python-version: ${{ env.MAIN_PYTHON_VERSION }}
use-python-cache: false
doc-style:
name: "Documentation style"
runs-on: ubuntu-latest
steps:
- uses: ansys/actions/doc-style@v5
with:
token: ${{ secrets.GITHUB_TOKEN }}
doc-build:
name: "Build documentation"
runs-on: [self-hosted, pyaedt, toolkits, Windows]
timeout-minutes: 10
steps:
- uses: actions/checkout@v4
- name: "Set up Python"
uses: ansys/actions/_setup-python@main
with:
python-version: ${{ env.MAIN_PYTHON_VERSION }}
use-cache: false
- name: 'Create virtual env'
run: |
python -m venv .venv
- name: "Update pip"
run: |
. .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 common toolkit with doc 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: Retrieve common toolkit version
run: |
. .venv\Scripts\Activate.ps1
echo "Common Toolkit version is: $(python -c "from ansys.aedt.toolkits.common import __version__; print(); print(__version__)")"
- name: Build the documentation (HTML)
run: |
.\.venv\Scripts\Activate.ps1
cd doc
.\make.bat html
- name: Build the documentation (PDF)
run: |
.\.venv\Scripts\Activate.ps1
cd doc
.\make.bat pdf
- name: Upload HTML Documentation artifact
uses: actions/upload-artifact@v4
with:
name: documentation-html
path: doc/_build/html
retention-days: 1
- name: Upload PDF Documentation artifact
uses: actions/upload-artifact@v4
with:
name: documentation-pdf
path: doc/_build/latex/*.pdf
retention-days: 7
smoke-tests:
name: "Build and Smoke tests"
strategy:
fail-fast: false
matrix:
os: [ windows-latest, ubuntu-latest ]
python-version: [ '3.10' ]
runs-on: ${{ matrix.os }}
needs: [ code-style ]
steps:
- uses: ansys/actions/build-wheelhouse@v5
with:
library-name: ${{ env.LIBRARY_NAME }}
operating-system: ${{ matrix.os }}
python-version: ${{ matrix.python-version }}
tests_windows:
name: "Windows Tests"
strategy:
matrix:
python-version: [ '3.10' ]
fail-fast: false
runs-on: [self-hosted, pyaedt, toolkits, Windows]
needs: [smoke-tests]
steps:
- uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
- name: Create Python venv
run: |
python -m venv .venv
.\.venv\Scripts\Activate.ps1
- name: Install packages for testing
run: |
.\.venv\Scripts\Activate.ps1
python -m pip install --upgrade pip
pip install --upgrade build wheel
pip install .[tests]
- name: Test AEDT Common API
timeout-minutes: 5
run: |
.\.venv\Scripts\Activate.ps1
pytest -v -m aedt_common_api --cov
- name: Test Common API
timeout-minutes: 5
run: |
.\.venv\Scripts\Activate.ps1
pytest -v -m common_api --cov --cov-append
- name: Test EDB API
timeout-minutes: 5
run: |
.\.venv\Scripts\Activate.ps1
pytest -v -m edb_api --cov --cov-append
- name: Test REST API
timeout-minutes: 5
run: |
.\.venv\Scripts\Activate.ps1
pytest -v -m rest_api --cov --cov-append
- name: "Combine coverage files"
run: |
.\.venv\Scripts\Activate.ps1
python -m coverage html -d .cov\total-html
python -m coverage xml -o .cov\total.xml
- name: "Upload coverage results"
if: ${{ matrix.python-version == env.MAIN_PYTHON_VERSION }}
uses: actions/upload-artifact@v4
with:
path: .cov/total-html
name: html-total-coverage
# - name: "Upload coverage report to codecov"
# if: ${{ matrix.python-version == env.MAIN_PYTHON_VERSION }}
# uses: codecov/codecov-action@v4
# with:
# file: .cov/total.xml
# env:
# CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
tests_linux:
name: "Linux Tests"
strategy:
matrix:
python-version: [ '3.10' ]
fail-fast: false
runs-on: [self-hosted, pyaedt, toolkits, Linux]
needs: [ smoke-tests ]
steps:
- uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
- name: Create Python venv
run: |
python -m venv .venv_linux
export ANSYSEM_ROOT241=/ansys_inc/AnsysEM/v241/Linux64
export LD_LIBRARY_PATH=$ANSYSEM_ROOT241/common/mono/Linux64/lib64:$ANSYSEM_ROOT241/Delcross:$LD_LIBRARY_PATH
- name: Install packages for testing
run: |
source .venv_linux/bin/activate
python -m pip install --trusted-host pypi.org --trusted-host pypi.python.org --trusted-host files.pythonhosted.org pip -U
python -m pip install --trusted-host pypi.org --trusted-host pypi.python.org --trusted-host files.pythonhosted.org wheel setuptools -U
python -c "import sys; print(sys.executable)"
python -m pip install --upgrade pip
pip install --upgrade build wheel
pip install .[tests]
pip install --trusted-host pypi.org --trusted-host pypi.python.org --trusted-host files.pythonhosted.org pytest-azurepipelines
- name: Test AEDT Common API
timeout-minutes: 5
run: |
export ANS_NODEPCHECK=1
export ANSYSEM_ROOT241=/ansys_inc/AnsysEM/v241/Linux64
export LD_LIBRARY_PATH=$ANSYSEM_ROOT241/common/mono/Linux64/lib64:$ANSYSEM_ROOT241/Delcross:$LD_LIBRARY_PATH
source .venv_linux/bin/activate
pytest -v -m aedt_common_api
env:
ANSYSLMD_LICENSE_FILE: 1055@${{ secrets.LICENSE_SERVER }}
- name: Test Common API
timeout-minutes: 5
run: |
export ANS_NODEPCHECK=1
export ANSYSEM_ROOT241=/ansys_inc/AnsysEM/v241/Linux64
export LD_LIBRARY_PATH=$ANSYSEM_ROOT241/common/mono/Linux64/lib64:$ANSYSEM_ROOT241/Delcross:$LD_LIBRARY_PATH
source .venv_linux/bin/activate
pytest -v -m common_api
env:
ANSYSLMD_LICENSE_FILE: 1055@${{ secrets.LICENSE_SERVER }}
- name: Test EDB API
timeout-minutes: 5
run: |
export ANS_NODEPCHECK=1
export ANSYSEM_ROOT241=/ansys_inc/AnsysEM/v241/Linux64
export LD_LIBRARY_PATH=$ANSYSEM_ROOT241/common/mono/Linux64/lib64:$ANSYSEM_ROOT241/Delcross:$LD_LIBRARY_PATH
source .venv_linux/bin/activate
pytest -v -m edb_api
env:
ANSYSLMD_LICENSE_FILE: 1055@${{ secrets.LICENSE_SERVER }}
- name: Test REST API
timeout-minutes: 5
run: |
export ANS_NODEPCHECK=1
export ANSYSEM_ROOT241=/ansys_inc/AnsysEM/v241/Linux64
export LD_LIBRARY_PATH=$ANSYSEM_ROOT241/common/mono/Linux64/lib64:$ANSYSEM_ROOT241/Delcross:$LD_LIBRARY_PATH
source .venv_linux/bin/activate
pytest -v -m rest_api
env:
ANSYSLMD_LICENSE_FILE: 1055@${{ secrets.LICENSE_SERVER }}
build-library:
name: "Build library artifacts"
runs-on: ubuntu-latest
needs: [ doc-build, tests_windows, tests_linux ]
steps:
- uses: ansys/actions/build-library@v5
with:
library-name: ${{ env.LIBRARY_NAME }}
python-version: ${{ env.MAIN_PYTHON_VERSION }}
release:
name: "Release"
if: github.event_name == 'push' && contains(github.ref, 'refs/tags')
needs: build-library
runs-on: ubuntu-latest
steps:
- name: "Release to the private PyPI"
uses: ansys/actions/release-pypi-private@v5
with:
library-name: ${{ env.LIBRARY_NAME }}
twine-username: "__token__"
twine-token: ${{ secrets.PYANSYS_PYPI_PRIVATE_PAT }}
# - name: "Release to the public PyPI repository"
# uses: ansys/actions/release-pypi-public@v4
# with:
# library-name: ${{ env.LIBRARY_NAME }}
# twine-username: "__token__"
# twine-token: ${{ secrets.PYPI_TOKEN }}
- name: "Release to GitHub"
uses: ansys/actions/release-github@v5
with:
library-name: ${{ env.LIBRARY_NAME }}
doc-deploy-dev:
name: "Deploy development documentation"
runs-on: ubuntu-latest
needs: build-library
if: github.event_name == 'push'
steps:
- uses: ansys/actions/doc-deploy-dev@v5
with:
cname: ${{ env.DOCUMENTATION_CNAME }}
token: ${{ secrets.GITHUB_TOKEN }}
doc-deploy-stable:
name: "Deploy stable documentation"
runs-on: ubuntu-latest
needs: release
if: github.event_name == 'push' && contains(github.ref, 'refs/tags')
steps:
- uses: ansys/actions/doc-deploy-stable@v5
with:
cname: ${{ env.DOCUMENTATION_CNAME }}
token: ${{ secrets.GITHUB_TOKEN }}