REFACTOR: conftest edb examples #5257
Workflow file for this run
This file contains hidden or 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: | |
| 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 }} |