Skip to content

REFACTOR: conftest edb examples #5257

REFACTOR: conftest edb examples

REFACTOR: conftest edb examples #5257

Workflow file for this run

name: GitHub CI
on:
pull_request:
workflow_dispatch:
push:
tags:
- "*"
branches:
- main
env:
ANSYSLMD_LICENSE_FILE: ${{ format('1055@{0}', secrets.LICENSE_SERVER) }}
PYEDB_CI_NO_DISPLAY: '1'
MAIN_PYTHON_VERSION: '3.10'
PACKAGE_NAME: 'pyedb'
DOCUMENTATION_CNAME: 'edb.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 }}
ON_CI: True
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
permissions: {}
jobs:
update-changelog:
name: "Update CHANGELOG (on release)"
if: github.event_name == 'push' && contains(github.ref, 'refs/tags')
runs-on: ubuntu-latest
permissions:
contents: write # Needed to create PR for changelog
pull-requests: write # Needed to create PR for changelog
steps:
- uses: ansys/actions/doc-deploy-changelog@36cd86710c966963f4dcec56a9670171618cf76a # v10.2.4
with:
token: ${{ secrets.PYANSYS_CI_BOT_TOKEN }}
bot-user: ${{ secrets.PYANSYS_CI_BOT_USERNAME }}
bot-email: ${{ secrets.PYANSYS_CI_BOT_EMAIL }}
use-upper-case: true
pr-title:
if: github.event_name == 'pull_request'
name: Check the title of the pull request
runs-on: ubuntu-latest
permissions:
contents: read
steps:
- name: Check the title of the pull request
uses: ansys/actions/check-pr-title@36cd86710c966963f4dcec56a9670171618cf76a # v10.2.4
with:
token: ${{ secrets.GITHUB_TOKEN }}
use-upper-case: true
vulnerabilities:
name: Vulnerabilities
runs-on: ubuntu-latest
permissions:
contents: read
steps:
- uses: ansys/actions/check-vulnerabilities@36cd86710c966963f4dcec56a9670171618cf76a # v10.2.4
with:
python-version: ${{ env.MAIN_PYTHON_VERSION }}
python-package-name: ${{ env.PACKAGE_NAME }}
token: ${{ secrets.PYANSYS_CI_BOT_TOKEN }}
dev-mode: ${{ github.ref != 'refs/heads/main' }}
actions-security:
name: Check actions security
runs-on: ubuntu-latest
permissions:
contents: read
steps:
- uses: ansys/actions/check-actions-security@36cd86710c966963f4dcec56a9670171618cf76a # v10.2.4
with:
generate-summary: true
token: ${{ secrets.GITHUB_TOKEN }}
auditing-level: 'high'
doc-style:
name: Documentation style check
runs-on: ubuntu-latest
permissions:
contents: read
steps:
- name: Check documentation style
uses: ansys/actions/doc-style@36cd86710c966963f4dcec56a9670171618cf76a # v10.2.4
with:
token: ${{ secrets.GITHUB_TOKEN }}
smoke-tests:
name: Build and Smoke tests (${{ matrix.os }} | Python ${{ matrix.python-version }})
runs-on: ${{ matrix.os }}
permissions:
attestations: write # Required to create and publish build attestations (SLSA provenance)
contents: read
id-token: write # Required for OIDC token generation (for provenance signing)
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, windows-latest]
python-version: ['3.10', '3.11', '3.12']
steps:
- name: Build wheelhouse and perform smoke test
id: build-wheelhouse
uses: ansys/actions/build-wheelhouse@36cd86710c966963f4dcec56a9670171618cf76a # v10.2.4
with:
library-name: ${{ env.PACKAGE_NAME }}
operating-system: ${{ matrix.os }}
python-version: ${{ matrix.python-version }}
attest-provenance: true
- name: Import python package
shell: bash
env:
ACTIVATE_VENV: ${{ steps.build-wheelhouse.outputs.activate-venv }}
run: |
${ACTIVATE_VENV}
python -c "import pyedb; from pyedb import __version__"
# =================================================================================================
# vvvvvvvvvvvvvvvvvvvvvvvvvvvvvv RUNNING ON SELF-HOSTED RUNNER vvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
# =================================================================================================
system-tests-windows-dotnet:
name: Test dotnet (windows)
runs-on: [ Windows, self-hosted, pyedb ]
permissions:
contents: read
env:
USE_GRPC: '0'
steps:
- name: "Install Git and clone project"
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
persist-credentials: false
# Revert to previous verison due too setup-python#819
- name: "Set up Python"
uses: actions/setup-python@83679a892e2d95755f2dac6acb0bfd1e9ac5d548 # v6.1.0
with:
python-version: ${{ env.MAIN_PYTHON_VERSION }}
- name: Create Python venv
run: |
python -m venv .venv
. .venv\Scripts\Activate.ps1
- name: "Update pip"
run: |
. .venv\Scripts\Activate.ps1
python -m pip install -U pip
- name: "Install Python library and tests dependencies"
run: |
. .venv\Scripts\Activate.ps1
python -m pip install .[tests]
- name: "Executing system tests"
uses: nick-fields/retry@ce71cc2ab81d554ebbe88c79ab5975992d79ba08 # v3.0.2
with:
max_attempts: 3
retry_on: error
timeout_minutes: 40
command: |
. .venv\Scripts\Activate.ps1
pytest tests/system -n auto --dist loadfile -v --cov
- name: "Create coverage files"
run: |
. .venv\Scripts\Activate.ps1
python -m coverage html -d .cov\system-html
python -m coverage xml -o .cov\system.xml
- name: Upload Coverage Results
if: always()
uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0
with:
path: .cov\system-html
name: html-system-coverage-${{ github.job }}-${{ github.run_attempt }}
retention-days: 7
- name: Upload coverage to Codecov
uses: codecov/codecov-action@671740ac38dd9b0130fbe1cec585b89eea48d3de # v5.5.2
env:
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
with:
files: .cov/system.xml
# =================================================================================================
# vvvvvvvvvvvvvvvvvvvvvvvvvvvvvv RUNNING ON SELF-HOSTED RUNNER vvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
# =================================================================================================
system-tests-windows-grpc:
name: Test grpc (windows)
runs-on: [ Windows, self-hosted, pyedb ]
permissions:
contents: read
env:
USE_GRPC: '1'
steps:
- name: "Install Git and clone project"
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
persist-credentials: false
# Revert to previous verison due too setup-python#819
- name: "Set up Python"
uses: actions/setup-python@83679a892e2d95755f2dac6acb0bfd1e9ac5d548 # v6.1.0
with:
python-version: ${{ env.MAIN_PYTHON_VERSION }}
- name: Create Python venv
run: |
python -m venv .venv
. .venv\Scripts\Activate.ps1
- name: "Update pip"
run: |
. .venv\Scripts\Activate.ps1
python -m pip install -U pip
- name: "Install Python library and tests dependencies"
run: |
. .venv\Scripts\Activate.ps1
python -m pip install .[tests]
- name: "Executing system tests"
uses: nick-fields/retry@ce71cc2ab81d554ebbe88c79ab5975992d79ba08 # v3.0.2
with:
max_attempts: 3
retry_on: error
timeout_minutes: 20
command: |
. .venv\Scripts\Activate.ps1
pytest tests/system -n auto --dist loadfile -v --cov
- name: "Create coverage files"
run: |
. .venv\Scripts\Activate.ps1
python -m coverage html -d .cov\system-html
python -m coverage xml -o .cov\system.xml
- name: Upload Coverage Results
if: always()
uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0
with:
path: .cov\system-html
name: html-system-coverage-${{ github.job }}-${{ github.run_attempt }}
retention-days: 7
- name: Upload coverage to Codecov
uses: codecov/codecov-action@671740ac38dd9b0130fbe1cec585b89eea48d3de # v5.5.2
env:
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
with:
files: .cov/system.xml
# =================================================================================================
# vvvvvvvvvvvvvvvvvvvvvvvvvvvvvv RUNNING ON SELF-HOSTED RUNNER vvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
# =================================================================================================
unit-tests-windows-dotnet:
name: Unit test dotnet (windows)
runs-on: [ Windows, self-hosted, pyedb ]
permissions:
contents: read
env:
USE_GRPC: '0'
steps:
- name: "Install Git and clone project"
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
persist-credentials: false
# Revert to previous verison due too setup-python#819
- name: "Set up Python"
uses: actions/setup-python@83679a892e2d95755f2dac6acb0bfd1e9ac5d548 # v6.1.0
with:
python-version: ${{ env.MAIN_PYTHON_VERSION }}
- name: Create Python venv
run: |
python -m venv .venv
. .venv\Scripts\Activate.ps1
- name: "Update pip"
run: |
. .venv\Scripts\Activate.ps1
python -m pip install -U pip
- name: "Install Python library and tests dependencies"
run: |
. .venv\Scripts\Activate.ps1
python -m pip install .[tests]
- name: "Executing system tests"
uses: nick-fields/retry@ce71cc2ab81d554ebbe88c79ab5975992d79ba08 # v3.0.2
with:
max_attempts: 3
retry_on: error
timeout_minutes: 40
command: |
. .venv\Scripts\Activate.ps1
pytest tests/unit -n auto --dist loadfile -v --cov
- name: "Create coverage files"
run: |
. .venv\Scripts\Activate.ps1
python -m coverage html -d .cov\unit-html
python -m coverage xml -o .cov\unit.xml
- name: Upload Coverage Results
if: always()
uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0
with:
path: .cov\unit-html
name: html-unit-coverage-${{ github.job }}-${{ github.run_attempt }}
retention-days: 7
- name: Upload coverage to Codecov
uses: codecov/codecov-action@671740ac38dd9b0130fbe1cec585b89eea48d3de # v5.5.2
env:
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
with:
files: .cov/unit.xml
# =================================================================================================
# vvvvvvvvvvvvvvvvvvvvvvvvvvvvvv RUNNING ON SELF-HOSTED RUNNER vvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
# =================================================================================================
unit-tests-windows-grpc:
name: Unit test grpc (windows)
runs-on: [ Windows, self-hosted, pyedb ]
permissions:
contents: read
env:
USE_GRPC: '1'
steps:
- name: "Install Git and clone project"
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
persist-credentials: false
# Revert to previous verison due too setup-python#819
- name: "Set up Python"
uses: actions/setup-python@83679a892e2d95755f2dac6acb0bfd1e9ac5d548 # v6.1.0
with:
python-version: ${{ env.MAIN_PYTHON_VERSION }}
- name: Create Python venv
run: |
python -m venv .venv
. .venv\Scripts\Activate.ps1
- name: "Update pip"
run: |
. .venv\Scripts\Activate.ps1
python -m pip install -U pip
- name: "Install Python library and tests dependencies"
run: |
. .venv\Scripts\Activate.ps1
python -m pip install .[tests]
- name: "Executing system tests"
uses: nick-fields/retry@ce71cc2ab81d554ebbe88c79ab5975992d79ba08 # v3.0.2
with:
max_attempts: 3
retry_on: error
timeout_minutes: 20
command: |
. .venv\Scripts\Activate.ps1
pytest tests/unit -n auto --dist loadfile -v --cov
- name: "Create coverage files"
run: |
. .venv\Scripts\Activate.ps1
python -m coverage html -d .cov\unit-html
python -m coverage xml -o .cov\unit.xml
- name: Upload Coverage Results
if: always()
uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0
with:
path: .cov\unit-html
name: html-unit-coverage-${{ github.job }}-${{ github.run_attempt }}
retention-days: 7
- name: Upload coverage to Codecov
uses: codecov/codecov-action@671740ac38dd9b0130fbe1cec585b89eea48d3de # v5.5.2
env:
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
with:
files: .cov/unit.xml
# =================================================================================================
# vvvvvvvvvvvvvvvvvvvvvvvvvvvvvv RUNNING ON SELF-HOSTED RUNNER vvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
# =================================================================================================
system-tests-linux-dotnet:
name: Test dotnet (linux)
runs-on: [ Linux, self-hosted, pyedb ]
permissions:
contents: read
env:
ANSYSEM_ROOT252: '/usr/ansys_inc/v252/AnsysEM'
ANS_NODEPCHECK: '1'
USE_GRPC: '0'
steps:
- name: "Install Git and clone project"
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
persist-credentials: false
- name: "Set up Python"
uses: actions/setup-python@83679a892e2d95755f2dac6acb0bfd1e9ac5d548 # v6.1.0
with:
python-version: ${{ env.MAIN_PYTHON_VERSION }}
- name: "Install os packages"
run: |
sudo apt update
sudo apt install libgl1-mesa-glx -y
- name: Create Python venv
run: |
python -m venv .venv
- name: "Update pip"
run: |
. .venv/bin/activate
python -m pip install -U pip
- name: "Install Python library and tests dependencies"
run: |
. .venv/bin/activate
python -m pip install .[tests]
- name: "Executing system tests"
uses: nick-fields/retry@ce71cc2ab81d554ebbe88c79ab5975992d79ba08 # v3.0.2
with:
max_attempts: 3
retry_on: error
timeout_minutes: 40
command: |
. .venv/bin/activate
pytest tests/system -n auto --dist loadfile -v --cov
- name: "Create coverage files"
run: |
. .venv/bin/activate
python -m coverage html -d .cov/system-html
python -m coverage xml -o .cov/system.xml
- name: Upload Coverage Results
if: always()
uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0
with:
path: .cov/system-html
name: html-system-linux-coverage-${{ github.job }}-${{ github.run_attempt }}
retention-days: 7
- name: Upload coverage to Codecov
uses: codecov/codecov-action@671740ac38dd9b0130fbe1cec585b89eea48d3de # v5.5.2
env:
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
with:
files: .cov/system.xml
# =================================================================================================
# vvvvvvvvvvvvvvvvvvvvvvvvvvvvvv RUNNING ON SELF-HOSTED RUNNER vvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
# =================================================================================================
system-tests-linux-grpc:
name: Test grpc (linux)
runs-on: [ Linux, self-hosted, pyedb ]
permissions:
contents: read
env:
ANSYSEM_ROOT252: '/usr/ansys_inc/v252/AnsysEM'
ANS_NODEPCHECK: '1'
USE_GRPC: '1'
steps:
- name: "Install Git and clone project"
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
persist-credentials: false
- name: "Set up Python"
uses: actions/setup-python@83679a892e2d95755f2dac6acb0bfd1e9ac5d548 # v6.1.0
with:
python-version: ${{ env.MAIN_PYTHON_VERSION }}
- name: "Install os packages"
run: |
sudo apt update
sudo apt install libgl1-mesa-glx -y
- name: Create Python venv
run: |
python -m venv .venv
- name: "Update pip"
run: |
. .venv/bin/activate
python -m pip install -U pip
- name: "Install Python library and tests dependencies"
run: |
. .venv/bin/activate
python -m pip install .[tests]
- name: "Executing system tests"
uses: nick-fields/retry@ce71cc2ab81d554ebbe88c79ab5975992d79ba08 # v3.0.2
with:
max_attempts: 3
retry_on: error
timeout_minutes: 20
command: |
. .venv/bin/activate
pytest tests/system -n auto --dist loadfile -v --cov
- name: "Create coverage files"
run: |
. .venv/bin/activate
python -m coverage html -d .cov/system-html
python -m coverage xml -o .cov/system.xml
- name: Upload Coverage Results
if: always()
uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0
with:
path: .cov/system-html
name: html-system-linux-coverage-${{ github.job }}-${{ github.run_attempt }}
retention-days: 7
- name: Upload coverage to Codecov
uses: codecov/codecov-action@671740ac38dd9b0130fbe1cec585b89eea48d3de # v5.5.2
env:
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
with:
files: .cov/system.xml
# =================================================================================================
# vvvvvvvvvvvvvvvvvvvvvvvvvvvvvv RUNNING ON SELF-HOSTED RUNNER vvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
# =================================================================================================
unit-tests-linux-dotnet:
name: Unit test dotnet (linux)
runs-on: [ Linux, self-hosted, pyedb ]
permissions:
contents: read
env:
ANSYSEM_ROOT252: '/usr/ansys_inc/v252/AnsysEM'
ANS_NODEPCHECK: '1'
USE_GRPC: '0'
steps:
- name: "Install Git and clone project"
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
persist-credentials: false
- name: "Set up Python"
uses: actions/setup-python@83679a892e2d95755f2dac6acb0bfd1e9ac5d548 # v6.1.0
with:
python-version: ${{ env.MAIN_PYTHON_VERSION }}
- name: "Install os packages"
run: |
sudo apt update
sudo apt install libgl1-mesa-glx -y
- name: Create Python venv
run: |
python -m venv .venv
- name: "Update pip"
run: |
. .venv/bin/activate
python -m pip install -U pip
- name: "Install Python library and tests dependencies"
run: |
. .venv/bin/activate
python -m pip install .[tests]
- name: "Executing unit tests"
uses: nick-fields/retry@ce71cc2ab81d554ebbe88c79ab5975992d79ba08 # v3.0.2
with:
max_attempts: 3
retry_on: error
timeout_minutes: 20
command: |
. .venv/bin/activate
pytest tests/unit -n auto --dist loadfile -v --cov
- name: "Create coverage files"
run: |
. .venv/bin/activate
python -m coverage html -d .cov/unit-html
python -m coverage xml -o .cov/unit.xml
- name: Upload Coverage Results
if: always()
uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0
with:
path: .cov/unit-html
name: html-unit-linux-coverage-${{ github.job }}-${{ github.run_attempt }}
retention-days: 7
- name: Upload coverage to Codecov
uses: codecov/codecov-action@671740ac38dd9b0130fbe1cec585b89eea48d3de # v5.5.2
env:
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
with:
files: .cov/unit.xml
# =================================================================================================
# vvvvvvvvvvvvvvvvvvvvvvvvvvvvvv RUNNING ON SELF-HOSTED RUNNER vvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
# =================================================================================================
unit-tests-linux-grpc:
name: Unit test grpc (linux)
runs-on: [ Linux, self-hosted, pyedb ]
permissions:
contents: read
env:
ANSYSEM_ROOT252: '/usr/ansys_inc/v252/AnsysEM'
ANS_NODEPCHECK: '1'
USE_GRPC: '1'
steps:
- name: "Install Git and clone project"
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
persist-credentials: false
- name: "Set up Python"
uses: actions/setup-python@83679a892e2d95755f2dac6acb0bfd1e9ac5d548 # v6.1.0
with:
python-version: ${{ env.MAIN_PYTHON_VERSION }}
- name: "Install os packages"
run: |
sudo apt update
sudo apt install libgl1-mesa-glx -y
- name: Create Python venv
run: |
python -m venv .venv
- name: "Update pip"
run: |
. .venv/bin/activate
python -m pip install -U pip
- name: "Install Python library and tests dependencies"
run: |
. .venv/bin/activate
python -m pip install .[tests]
- name: "Executing unit tests"
uses: nick-fields/retry@ce71cc2ab81d554ebbe88c79ab5975992d79ba08 # v3.0.2
with:
max_attempts: 3
retry_on: error
timeout_minutes: 20
command: |
. .venv/bin/activate
pytest tests/unit -n auto --dist loadfile -v --cov
- name: "Create coverage files"
run: |
. .venv/bin/activate
python -m coverage html -d .cov/unit-html
python -m coverage xml -o .cov/unit.xml
- name: Upload Coverage Results
if: always()
uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0
with:
path: .cov/unit-html
name: html-unit-linux-coverage-${{ github.job }}-${{ github.run_attempt }}
retention-days: 7
- name: Upload coverage to Codecov
uses: codecov/codecov-action@671740ac38dd9b0130fbe1cec585b89eea48d3de # v5.5.2
env:
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
with:
files: .cov/unit.xml
# =================================================================================================
# vvvvvvvvvvvvvvvvvvvvvvvvvvvvvv RUNNING ON SELF-HOSTED RUNNER vvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
# =================================================================================================
test-pyaedt-main-windows:
name: Testing PyAEDT main branch (Windows)
if: github.event_name == 'push' && contains(github.ref, 'refs/tags')
needs: [smoke-tests]
runs-on: [ Windows, self-hosted, pyedb ]
steps:
- name: Install Git and checkout project
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
persist-credentials: false
- name: Set up headless display
uses: pyvista/setup-headless-display-action@7d84ae825e6d9297a8e99bdbbae20d1b919a0b19 # v4.2
- name: Setup Python
uses: actions/setup-python@83679a892e2d95755f2dac6acb0bfd1e9ac5d548 # v6.1.0
with:
python-version: ${{ env.MAIN_PYTHON_VERSION }}
- name: Create Python venv
run: |
python -m venv .venv
. .venv\Scripts\Activate.ps1
- name: Update pip
run: |
. .venv\Scripts\Activate.ps1
python -m pip install -U pip
- name: Clone PyAEDT on main branch
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
repository: ansys/pyaedt
path: "external/pyaedt"
ref: "main"
persist-credentials: false
- name: Install PyAEDT main branch version with its test dependencies
run: |
. .venv\Scripts\Activate.ps1
pip install --no-cache-dir external/pyaedt[tests]
- name: Install PyEDB
run: |
. .venv\Scripts\Activate.ps1
python -m pip install .
- name: Run PyAEDT general and layout tests
uses: nick-fields/retry@ce71cc2ab81d554ebbe88c79ab5975992d79ba08 # v3.0.2
env:
PYTHONMALLOC: malloc
PYAEDT_LOCAL_SETTINGS_PATH: 'external/pyaedt/tests/pyaedt_settings.yaml'
with:
max_attempts: 3
retry_on: error
timeout_minutes: 40
command: |
.venv\Scripts\Activate.ps1
pytest -v external/pyaedt/tests/system/layout/test_3dlayout_edb.py
pytest -v external/pyaedt/tests/system/general/test_configuration_files.py
pytest -v external/pyaedt/tests/system/general/test_circuit.py
- name: Run PyAEDT solvers tests
uses: nick-fields/retry@ce71cc2ab81d554ebbe88c79ab5975992d79ba08 # v3.0.2
env:
PYTHONMALLOC: malloc
with:
max_attempts: 3
retry_on: error
timeout_minutes: 40
command: |
.venv\Scripts\Activate.ps1
pytest -v external/pyaedt/tests/system/solvers/test_analyze.py
- name: Run PyAEDT extensions tests
uses: nick-fields/retry@ce71cc2ab81d554ebbe88c79ab5975992d79ba08 # v3.0.2
env:
PYTHONMALLOC: malloc
with:
max_attempts: 3
retry_on: error
timeout_minutes: 40
command: |
.venv\Scripts\Activate.ps1
pytest -v external/pyaedt/tests/system/extensions/test_cutout.py
pytest -v external/pyaedt/tests/system/extensions/test_configure_layout.py
pytest -v external/pyaedt/tests/system/extensions/test_via_design.py
pytest -v external/pyaedt/tests/system/extensions/test_parametrize_edb.py
pytest -v external/pyaedt/tests/system/extensions/test_generate_arbitrary_wave_ports.py
# =================================================================================================
# vvvvvvvvvvvvvvvvvvvvvvvvvvvvvv RUNNING ON SELF-HOSTED RUNNER vvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
# =================================================================================================
test-pyaedt-main-linux:
name: Testing PyAEDT main branch (Linux)
if: github.event_name == 'push' && contains(github.ref, 'refs/tags')
needs: [smoke-tests]
runs-on: [ Linux, self-hosted, pyedb ]
env:
ANSYSEM_ROOT252: '/usr/ansys_inc/v252/AnsysEM'
ANS_NODEPCHECK: '1'
steps:
- name: Install Git and checkout project
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
persist-credentials: false
- name: Set up headless display
uses: pyvista/setup-headless-display-action@7d84ae825e6d9297a8e99bdbbae20d1b919a0b19 # v4.2
- name: Install OS packages
run: |
sudo apt update
sudo apt-get install tk -y
- name: Setup Python
uses: actions/setup-python@83679a892e2d95755f2dac6acb0bfd1e9ac5d548 # v6.1.0
with:
python-version: ${{ env.MAIN_PYTHON_VERSION }}
- name: Create Python venv
run: |
python -m venv .venv
- name: Update pip
run: |
. .venv/bin/activate
python -m pip install -U pip
- name: Clone PyAEDT on main branch
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
repository: ansys/pyaedt
path: "external/pyaedt"
ref: "main"
persist-credentials: false
- name: Install PyAEDT main branch version with its test dependencies
env:
ANSYSEM: ${{ env.ANSYSEM_ROOT252 }}
run: |
. .venv/bin/activate
pip install --no-cache-dir external/pyaedt[tests]
- name: Install PyEDB
env:
ANSYSEM: ${{ env.ANSYSEM_ROOT252 }}
run: |
python -m pip install .
- name: Run PyAEDT general and layout tests
uses: nick-fields/retry@ce71cc2ab81d554ebbe88c79ab5975992d79ba08 # v3.0.2
env:
PYTHONMALLOC: malloc
with:
max_attempts: 3
retry_on: error
timeout_minutes: 50
command: |
. .venv/bin/activate
pytest -v external/pyaedt/tests/system/layout/test_3dlayout_edb.py
pytest -v external/pyaedt/tests/system/general/test_configuration_files.py
pytest -v external/pyaedt/tests/system/general/test_circuit.py
- name: Run PyAEDT solvers tests
uses: nick-fields/retry@ce71cc2ab81d554ebbe88c79ab5975992d79ba08 # v3.0.2
env:
PYTHONMALLOC: malloc
with:
max_attempts: 3
retry_on: error
timeout_minutes: 50
command: |
. .venv/bin/activate
pytest -v external/pyaedt/tests/system/solvers/test_analyze.py
- name: Run PyAEDT extensions tests
uses: nick-fields/retry@ce71cc2ab81d554ebbe88c79ab5975992d79ba08 # v3.0.2
env:
PYTHONMALLOC: malloc
with:
max_attempts: 3
retry_on: error
timeout_minutes: 50
command: |
. .venv/bin/activate
pytest -v external/pyaedt/tests/system/extensions/test_cutout.py
pytest -v external/pyaedt/tests/system/extensions/test_configure_layout.py
pytest -v external/pyaedt/tests/system/extensions/test_via_design.py
pytest -v external/pyaedt/tests/system/extensions/test_parametrize_edb.py
pytest -v external/pyaedt/tests/system/extensions/test_generate_arbitrary_wave_ports.py
docs-build:
name: Build documentation
runs-on: ubuntu-latest
steps:
- name: Build documentation
uses: ansys/actions/doc-build@36cd86710c966963f4dcec56a9670171618cf76a # v10.2.4
with:
dependencies: "graphviz texlive-latex-extra latexmk texlive-xetex texlive-fonts-extra"
python-version: ${{ env.MAIN_PYTHON_VERSION }}
sphinxopts: '-j 1 --color -w build_errors.txt'
check-links: false
needs-quarto: true
package:
name: Package library
needs: [system-tests-windows-dotnet,
system-tests-windows-grpc,
system-tests-linux-dotnet,
system-tests-linux-grpc,
unit-tests-windows-dotnet,
unit-tests-windows-grpc,
unit-tests-linux-dotnet,
unit-tests-linux-grpc,
docs-build]
runs-on: ubuntu-latest
permissions:
attestations: write # Required to create and publish package attestations (SLSA provenance)
contents: read
id-token: write # Required for OIDC token generation (for provenance signing)
steps:
- name: Build library source and wheel artifacts
uses: ansys/actions/build-library@36cd86710c966963f4dcec56a9670171618cf76a # v10.2.4
with:
library-name: ${{ env.PACKAGE_NAME }}
python-version: ${{ env.MAIN_PYTHON_VERSION }}
attest-provenance: true
release:
name: Release project
if: github.event_name == 'push' && contains(github.ref, 'refs/tags')
needs: [package, test-pyaedt-main-windows, test-pyaedt-main-linux, update-changelog]
runs-on: ubuntu-latest
# Specifying a GitHub environment is optional, but strongly encouraged
environment: release
permissions:
id-token: write # Needed for trusted publishing OIDC
contents: write # Needed for releasing to GitHub
steps:
- name: Download the library artifacts from build-library step
uses: actions/download-artifact@37930b1c2abaa49bbe596cd826c3c89aef350131 # v7.0.0
with:
name: ${{ env.PACKAGE_NAME }}-artifacts
path: ${{ env.PACKAGE_NAME }}-artifacts
- name: Release to PyPI using trusted publisher
uses: pypa/gh-action-pypi-publish@ed0c53931b1dc9bd32cbe73a98c7f6766f8a527e # v1.13.0
with:
repository-url: "https://upload.pypi.org/legacy/"
print-hash: true
packages-dir: ${{ env.PACKAGE_NAME }}-artifacts
skip-existing: false
- name: Release to GitHub
uses: ansys/actions/release-github@36cd86710c966963f4dcec56a9670171618cf76a # v10.2.4
with:
library-name: ${{ env.PACKAGE_NAME }}
token: ${{ secrets.GITHUB_TOKEN }}
add-artifact-attestation-notes: true
upload-dev-docs:
name: Upload dev documentation
if: github.ref == 'refs/heads/main'
runs-on: ubuntu-latest
needs: [package]
permissions:
contents: write # Needed to update files on the gh-pages branch
steps:
- name: Deploy the latest documentation
uses: ansys/actions/doc-deploy-dev@36cd86710c966963f4dcec56a9670171618cf76a # v10.2.4
with:
bot-user: ${{ secrets.PYANSYS_CI_BOT_USERNAME }}
bot-email: ${{ secrets.PYANSYS_CI_BOT_EMAIL }}
cname: ${{ env.DOCUMENTATION_CNAME }}
token: ${{ secrets.GITHUB_TOKEN }}
upload-docs-release:
name: Upload release documentation
if: github.event_name == 'push' && contains(github.ref, 'refs/tags')
runs-on: ubuntu-latest
needs: [release]
permissions:
contents: write # Needed to update files on the gh-pages branch
steps:
- name: Deploy the stable documentation
uses: ansys/actions/doc-deploy-stable@36cd86710c966963f4dcec56a9670171618cf76a # v10.2.4
with:
cname: ${{ env.DOCUMENTATION_CNAME }}
token: ${{ secrets.GITHUB_TOKEN }}
bot-user: ${{ secrets.PYANSYS_CI_BOT_USERNAME }}
bot-email: ${{ secrets.PYANSYS_CI_BOT_EMAIL }}