From 57ef7878f1edb811a1df3be006bc3723844316ef Mon Sep 17 00:00:00 2001 From: Sebastien Morais Date: Sun, 29 Sep 2024 10:39:19 +0200 Subject: [PATCH 01/14] BUILD: Clean up dependencies --- pyproject.toml | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 9019d657219..169e29834d5 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -36,9 +36,7 @@ dependencies = [ "fpdf2", "jsonschema", "psutil", - "pyedb>=0.4.0; python_version == '3.7'", - "pyedb>=0.24.0; python_version > '3.7'", - "pyedb!=0.28.0; python_version > '3.7'", + "pyedb>=0.24.0,!=0.28.0", "pytomlpp; python_version < '3.12'", "rpyc>=6.0.0,<6.1", "pyyaml", @@ -66,8 +64,7 @@ tests = [ ] dotnet = [ "ansys-pythonnet>=3.1.0rc3", - "cffi==1.17.1; platform_system=='Linux' and python_version == '3.7'", - "cffi>=1.16.0,<1.18; platform_system=='Linux' and python_version > '3.7'", + "cffi>=1.16.0,<1.18; platform_system=='Linux'", "dotnetcore2==3.1.23; platform_system=='Linux'", "pywin32>=303; platform_system=='Windows'", ] From 7ae6822ea894cb8a64215212e7d194cf3f2b3e67 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Morais?= <146729917+SMoraisAnsys@users.noreply.github.com> Date: Sun, 29 Sep 2024 14:49:12 +0200 Subject: [PATCH 02/14] Update pyproject.toml --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 169e29834d5..d6cf082ceb5 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -36,7 +36,7 @@ dependencies = [ "fpdf2", "jsonschema", "psutil", - "pyedb>=0.24.0,!=0.28.0", + "pyedb>=0.24.0", "pytomlpp; python_version < '3.12'", "rpyc>=6.0.0,<6.1", "pyyaml", From 366e869c66d71f05ecda26aa21816c5640c0681f Mon Sep 17 00:00:00 2001 From: Sebastien Morais Date: Mon, 30 Sep 2024 10:53:52 +0200 Subject: [PATCH 03/14] CI: Add missing step in linux solver testing --- .github/workflows/ci_cd.yml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/.github/workflows/ci_cd.yml b/.github/workflows/ci_cd.yml index d48960205a9..aa31867d562 100644 --- a/.github/workflows/ci_cd.yml +++ b/.github/workflows/ci_cd.yml @@ -319,6 +319,13 @@ jobs: pip install .[tests] pip install pytest-azurepipelines + - name: Install CI dependencies (e.g. vtk-osmesa) + run: | + source .venv/bin/activate + # Uninstall conflicting dependencies + pip uninstall --yes vtk + pip install --extra-index-url https://wheels.vtk.org vtk-osmesa + - name: Run tests on _unittest_solvers run: | export LD_LIBRARY_PATH=${{ env.ANSYSEM_ROOT242 }}/common/mono/Linux64/lib64:${{ env.ANSYSEM_ROOT242 }}/Delcross:$LD_LIBRARY_PATH From 79be1f93ec172f4b98f9bfd78f9da733463a3e8f Mon Sep 17 00:00:00 2001 From: Sebastien Morais Date: Mon, 30 Sep 2024 13:27:12 +0200 Subject: [PATCH 04/14] TBR: Test on toolkit machine --- .github/workflows/ci_cd.yml | 471 +----------------------------------- 1 file changed, 2 insertions(+), 469 deletions(-) diff --git a/.github/workflows/ci_cd.yml b/.github/workflows/ci_cd.yml index aa31867d562..6d060d6d807 100644 --- a/.github/workflows/ci_cd.yml +++ b/.github/workflows/ci_cd.yml @@ -24,263 +24,6 @@ concurrency: jobs: - pr-title: - if: github.event_name == 'pull_request' - name: Check the title of the pull request - runs-on: ubuntu-latest - steps: - - name: Check commit name - uses: ansys/actions/commit-style@v6 - with: - token: ${{ secrets.GITHUB_TOKEN }} - use-upper-case: true - - # TODO: Update to ansys/actions/doc-style@v6 - doc-style: - name: Documentation style check - runs-on: ubuntu-latest - steps: - - name: Check documentation style - uses: ansys/actions/doc-style@v6 - with: - token: ${{ secrets.GITHUB_TOKEN }} - - smoke-tests: - name: Build wheelhouse and smoke tests - runs-on: ${{ matrix.os }} - strategy: - fail-fast: false - matrix: - os: [ubuntu-latest, windows-latest] - python-version: ['3.8', '3.9', '3.10', '3.11', '3.12'] - target: ['all', 'installer'] - - steps: - - name: Build wheelhouse and perform smoke test - uses: ansys/actions/build-wheelhouse@v4 - with: - library-name: ${{ env.PACKAGE_NAME }} - operating-system: ${{ matrix.os }} - python-version: ${{ matrix.python-version }} - target: ${{ matrix.target }} - - - name: Import python package - run: | - python -c "import ansys.aedt.core; from ansys.aedt.core import __version__" - - # TODO: Update to ansys/actions/doc-build@v6 once we remove examples - doc-build: - name: Documentation build without examples - runs-on: ubuntu-latest - needs: [doc-style] - steps: - - name: Install Git and checkout project - uses: actions/checkout@v4 - - - name: Setup Python - uses: actions/setup-python@v5 - with: - python-version: ${{ env.MAIN_PYTHON_VERSION }} - - - name: Update pip - run: | - pip install --upgrade pip - - - name: Install pyaedt and documentation dependencies - run: | - pip install .[doc-no-examples] - - - name: Retrieve PyAEDT version - id: version - run: | - echo "PYAEDT_VERSION=$(python -c 'from ansys.aedt.core import __version__; print(__version__)')" >> $GITHUB_OUTPUT - echo "PyAEDT version is: $(python -c "from ansys.aedt.core import __version__; print(__version__)")" - - - name: Install doc build requirements - run: | - sudo apt update - sudo apt install graphviz texlive-latex-extra latexmk texlive-xetex texlive-fonts-extra -y - - # TODO: Update this step once pyaedt-examples is ready - - name: Build HTML documentation without examples - run: | - make -C doc clean - make -C doc html-no-examples - - # Verify that sphinx generates no warnings - - name: Check for warnings - run: | - python doc/print_errors.py - - - name: Upload HTML documentation without examples artifact - uses: actions/upload-artifact@v3 - with: - name: documentation-no-examples-html - path: doc/_build/html - retention-days: 7 - - - name: Build PDF documentation without examples - run: | - make -C doc pdf-no-examples - - - name: Upload PDF documentation without examples artifact - uses: actions/upload-artifact@v3 - with: - name: documentation-no-examples-pdf - path: doc/_build/latex/PyAEDT-Documentation-*.pdf - retention-days: 7 - -# # ================================================================================================= -# # vvvvvvvvvvvvvvvvvvvvvvvvvvvvvv RUNNING ON SELF-HOSTED RUNNER vvvvvvvvvvvvvvvvvvvvvvvvvvvvvv -# # ================================================================================================= - - doc-build-with-examples: - name: Documentation build with examples - if: github.event_name == 'push' && contains(github.ref, 'refs/tags') - runs-on: [ self-hosted, Windows, pyaedt ] - needs: [doc-style] - timeout-minutes: 720 - steps: - - name: Install Git and checkout project - uses: actions/checkout@v4 - - - name: Setup Python - uses: actions/setup-python@v5 - with: - python-version: ${{ env.MAIN_PYTHON_VERSION }} - - - name: Create virtual environment - run: | - python -m venv .venv - .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 pyaedt and documentation dependencies - run: | - .venv\Scripts\Activate.ps1 - pip install .[doc] - - - name: Retrieve PyAEDT version - id: version - run: | - .venv\Scripts\Activate.ps1 - echo "PYAEDT_VERSION=$(python -c 'from ansys.aedt.core import __version__; print(__version__)')" >> $GITHUB_OUTPUT - echo "PyAEDT version is: $(python -c "from ansys.aedt.core import __version__; print(__version__)")" - - - name: Install CI dependencies (e.g. vtk-osmesa) - run: | - .venv\Scripts\Activate.ps1 - # Uninstall conflicting dependencies - pip uninstall --yes vtk - pip install --extra-index-url https://wheels.vtk.org vtk-osmesa - - # TODO: Update this step once pyaedt-examples is ready - # NOTE: Use environment variable to keep the doctree and avoid redundant build for PDF pages - - name: Build HTML documentation with examples - env: - SPHINXBUILD_KEEP_DOCTREEDIR: "1" - run: | - .venv\Scripts\Activate.ps1 - .\doc\make.bat clean - .\doc\make.bat html - - # TODO: Keeping this commented as reminder of https://github.com/ansys/pyaedt/issues/4296 - # # Verify that sphinx generates no warnings - # - name: Check for warnings - # run: | - # .venv\Scripts\Activate.ps1 - # python doc/print_errors.py - - # Use environment variable to remove the doctree after the build of PDF pages - - name: Build PDF documentation with examples - env: - SPHINXBUILD_KEEP_DOCTREEDIR: "0" - run: | - .venv\Scripts\Activate.ps1 - .\doc\make.bat pdf - - # - name: Add assets to HTML docs - # run: | - # zip -r documentation-html.zip ./doc/_build/html - # mv documentation-html.zip ./doc/_build/html/_static/assets/download/ - # cp doc/_build/latex/PyAEDT-Documentation-*.pdf ./doc/_build/html/_static/assets/download/pyaedt.pdf - - - name: Upload HTML documentation with examples artifact - uses: actions/upload-artifact@v3 - with: - name: documentation-html - path: doc/_build/html - retention-days: 7 - - - name: Upload PDF documentation without examples artifact - uses: actions/upload-artifact@v3 - with: - name: documentation-pdf - path: doc/_build/latex/PyAEDT-Documentation-*.pdf - retention-days: 7 - -# # ================================================================================================= -# # vvvvvvvvvvvvvvvvvvvvvvvvvvvvvv RUNNING ON SELF-HOSTED RUNNER vvvvvvvvvvvvvvvvvvvvvvvvvvvvvv -# # ================================================================================================= - - test-solvers-windows: - name: Testing solvers and coverage (Windows) - if: github.event.pull_request.draft == false - needs: [smoke-tests] - runs-on: [ self-hosted, Windows, pyaedt ] - steps: - - name: Install Git and checkout project - uses: actions/checkout@v4 - - - name: Setup Python - uses: actions/setup-python@v5 - with: - python-version: ${{ env.MAIN_PYTHON_VERSION }} - - - name: Create virtual environment - run: | - python -m venv .venv - .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 pyaedt and tests dependencies - run: | - .venv\Scripts\Activate.ps1 - pip install .[tests] - pip install pytest-azurepipelines - - - name: Install CI dependencies (e.g. vtk-osmesa) - run: | - .venv\Scripts\Activate.ps1 - # Uninstall conflicting dependencies - pip uninstall --yes vtk - pip install --extra-index-url https://wheels.vtk.org vtk-osmesa - - - name: Run tests on _unittest_solvers - env: - PYTHONMALLOC: malloc - run: | - .venv\Scripts\Activate.ps1 - pytest --durations=50 -v --cov=ansys.aedt.core --cov-report=xml --cov-report=html --junitxml=junit/test-results.xml _unittest_solvers - - - uses: codecov/codecov-action@v4 - with: - token: ${{ secrets.CODECOV_TOKEN }} - name: codecov-system-solver-tests - file: ./coverage.xml - flags: system,solver - - - name: Upload pytest test results - uses: actions/upload-artifact@v3 - with: - name: pytest-solver-results - path: junit/test-results.xml - if: ${{ always() }} - # # ================================================================================================= # # vvvvvvvvvvvvvvvvvvvvvvvvvvvvvv RUNNING ON SELF-HOSTED RUNNER vvvvvvvvvvvvvvvvvvvvvvvvvvvvvv # # ================================================================================================= @@ -289,10 +32,9 @@ jobs: test-solvers-linux: name: Testing solvers and coverage (Linux) if: github.event.pull_request.draft == false - needs: [smoke-tests] - runs-on: [ self-hosted, Linux, pyaedt ] + runs-on: [ self-hosted, Linux, pyaedt , toolkits] env: - ANSYSEM_ROOT242: '/opt/AnsysEM/v242/Linux64' + ANSYSEM_ROOT242: '/ansys_inc/AnsysEM/v242/Linux64' ANS_NODEPCHECK: '1' steps: - name: Install Git and checkout project @@ -346,212 +88,3 @@ jobs: path: junit/test-results.xml if: ${{ always() }} -# # ================================================================================================= -# # vvvvvvvvvvvvvvvvvvvvvvvvvvvvvv RUNNING ON SELF-HOSTED RUNNER vvvvvvvvvvvvvvvvvvvvvvvvvvvvvv -# # ================================================================================================= - - test-windows: - name: Testing and coverage (Windows) - if: github.event.pull_request.draft == false - needs: [smoke-tests] - runs-on: [ self-hosted, Windows, pyaedt ] - steps: - - name: Install Git and checkout project - uses: actions/checkout@v4 - - - name: Setup Python - uses: actions/setup-python@v5 - with: - python-version: ${{ env.MAIN_PYTHON_VERSION }} - - - name: Create virtual environment - run: | - python -m venv .venv - .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 pyaedt and tests dependencies - run: | - .venv\Scripts\Activate.ps1 - pip install .[tests] - pip install pytest-azurepipelines - - - name: Install CI dependencies (e.g. vtk-osmesa) - run: | - .venv\Scripts\Activate.ps1 - # Uninstall conflicting dependencies - pip uninstall --yes vtk - pip install --extra-index-url https://wheels.vtk.org vtk-osmesa - - - name: Run tests on _unittest - uses: nick-fields/retry@v3 - env: - PYTHONMALLOC: malloc - with: - max_attempts: 2 - retry_on: error - timeout_minutes: 50 - command: | - .venv\Scripts\Activate.ps1 - pytest -n 4 --dist loadfile --durations=50 -v --cov=ansys.aedt.core --cov-report=xml --cov-report=html --junitxml=junit/test-results.xml _unittest - - - uses: codecov/codecov-action@v4 - with: - token: ${{ secrets.CODECOV_TOKEN }} - name: codecov-system-tests - file: ./coverage.xml - flags: system - - - name: Upload pytest test results - uses: actions/upload-artifact@v3 - with: - name: pytest-results - path: junit/test-results.xml - if: ${{ always() }} - -# # ================================================================================================= -# # vvvvvvvvvvvvvvvvvvvvvvvvvvvvvv RUNNING ON SELF-HOSTED RUNNER vvvvvvvvvvvvvvvvvvvvvvvvvvvvvv -# # ================================================================================================= - - # TODO: Si if we can use ansys/actions - test-linux: - name: Testing and coverage (Linux) - if: github.event.pull_request.draft == false - needs: [smoke-tests] - runs-on: [ self-hosted, Linux, pyaedt ] - env: - ANSYSEM_ROOT242: '/opt/AnsysEM/v242/Linux64' - ANS_NODEPCHECK: '1' - steps: - - name: Install Git and checkout project - uses: actions/checkout@v4 - - - name: Setup Python - uses: actions/setup-python@v5 - with: - python-version: ${{ env.MAIN_PYTHON_VERSION }} - - - name: Create virtual environment - run: | - export LD_LIBRARY_PATH=${{ env.ANSYSEM_ROOT242 }}/common/mono/Linux64/lib64:${{ env.ANSYSEM_ROOT242 }}/Delcross:$LD_LIBRARY_PATH - python -m venv .venv - source .venv/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)" - - - name: Install pyaedt and tests dependencies - run: | - export LD_LIBRARY_PATH=${{ env.ANSYSEM_ROOT242 }}/common/mono/Linux64/lib64:${{ env.ANSYSEM_ROOT242 }}/Delcross:$LD_LIBRARY_PATH - source .venv/bin/activate - pip install .[tests] - pip install pytest-azurepipelines - - - name: Install CI dependencies (e.g. vtk-osmesa) - run: | - source .venv/bin/activate - # Uninstall conflicting dependencies - pip uninstall --yes vtk - pip install --extra-index-url https://wheels.vtk.org vtk-osmesa - - - name: Run tests on _unittest - uses: nick-fields/retry@v3 - with: - max_attempts: 2 - retry_on: error - timeout_minutes: 50 - command: | - export LD_LIBRARY_PATH=${{ env.ANSYSEM_ROOT242 }}/common/mono/Linux64/lib64:${{ env.ANSYSEM_ROOT242 }}/Delcross:$LD_LIBRARY_PATH - source .venv/bin/activate - pytest -n 2 --dist loadfile --durations=50 -v --cov=ansys.aedt.core --cov-report=xml --cov-report=html --junitxml=junit/test-results.xml _unittest - - - uses: codecov/codecov-action@v4 - with: - token: ${{ secrets.CODECOV_TOKEN }} - name: codecov-system-solver-tests - file: ./coverage.xml - flags: system,solver - - - name: Upload pytest test results - uses: actions/upload-artifact@v3 - with: - name: pytest-solver-results - path: junit/test-results.xml - if: ${{ always() }} - - package: - name: Package library - needs: [test-windows, test-solvers-windows, test-linux, test-solvers-linux, doc-build] - runs-on: ubuntu-latest - steps: - - name: Build library source and wheel artifacts - uses: ansys/actions/build-library@v4 - with: - library-name: ${{ env.PACKAGE_NAME }} - python-version: ${{ env.MAIN_PYTHON_VERSION }} - - # TODO: Si if we can fix the PDF issue and leverage classic ansys/release-github - release: - name: Release project - if: github.event_name == 'push' && contains(github.ref, 'refs/tags') - needs: [package, doc-build-with-examples] - runs-on: ubuntu-latest - steps: - - name: Release to the public PyPI repository - uses: ansys/actions/release-pypi-public@v4 - with: - library-name: ${{ env.PACKAGE_NAME }} - twine-username: "__token__" - twine-token: ${{ secrets.PYPI_TOKEN }} - - - name: Release to GitHub - uses: ansys/actions/release-github@v4 - with: - library-name: ${{ env.PACKAGE_NAME }} - - upload-release-doc: - name: Upload release documentation - if: github.event_name == 'push' && contains(github.ref, 'refs/tags') - runs-on: ubuntu-latest - needs: [release] - steps: - - name: Deploy the stable documentation - uses: ansys/actions/doc-deploy-stable@v4 - with: - cname: ${{ env.DOCUMENTATION_CNAME }} - token: ${{ secrets.GITHUB_TOKEN }} - doc-artifact-name: 'documentation-html' - - doc-index-stable: - name: Deploy stable docs index - if: github.event_name == 'push' && contains(github.ref, 'refs/tags') - runs-on: ubuntu-latest - needs: upload-release-doc - steps: - - name: Install Git and clone project - uses: actions/checkout@v4 - - - name: Install the package requirements - run: | - python -m pip install --upgrade pip - pip install -e . - - - name: Get the version to PyMeilisearch - run: | - VERSION=$(python -c "from ansys.aedt.core import __version__; print('.'.join(__version__.split('.')[:2]))") - VERSION_MEILI=$(python -c "from ansys.aedt.core import __version__; print('-'.join(__version__.split('.')[:2]))") - echo "Calculated VERSION: $VERSION" - echo "Calculated VERSION_MEILI: $VERSION_MEILI" - echo "VERSION=$VERSION" >> $GITHUB_ENV - echo "VERSION_MEILI=$VERSION_MEILI" >> $GITHUB_ENV - - - name: Deploy the latest documentation index - uses: ansys/actions/doc-deploy-index@v4 - with: - cname: ${{ env.DOCUMENTATION_CNAME }}/version/${{ env.VERSION }} - index-name: pyaedt-v${{ env.VERSION_MEILI }} - host-url: ${{ env.MEILISEARCH_HOST_URL }} - api-key: ${{ env.MEILISEARCH_API_KEY }} - python-version: ${{ env.MAIN_PYTHON_VERSION }} From d1f2183f6d3713156de274fee1ca6c091aeff846 Mon Sep 17 00:00:00 2001 From: Sebastien Morais Date: Mon, 30 Sep 2024 14:51:37 +0200 Subject: [PATCH 05/14] TBR: Test on VM after upgrade --- .github/workflows/ci_cd.yml | 54 +++++++++++++++++++++++++++++++++++-- 1 file changed, 52 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci_cd.yml b/.github/workflows/ci_cd.yml index 6d060d6d807..f2c15a3ccf3 100644 --- a/.github/workflows/ci_cd.yml +++ b/.github/workflows/ci_cd.yml @@ -24,6 +24,55 @@ concurrency: jobs: +# # ================================================================================================= +# # vvvvvvvvvvvvvvvvvvvvvvvvvvvvvv RUNNING ON SELF-HOSTED RUNNER vvvvvvvvvvvvvvvvvvvvvvvvvvvvvv +# # ================================================================================================= + + # TODO: Si if we can use ansys/actions + test-specific-linux: + name: Testing solvers and coverage (Linux) + runs-on: [ self-hosted, Linux, pyaedt] + env: + ANSYSEM_ROOT242: '/opt/AnsysEM/v242/Linux64' + ANS_NODEPCHECK: '1' + steps: + - name: Install Git and checkout project + uses: actions/checkout@v4 + + - name: Setup Python + uses: actions/setup-python@v5 + with: + python-version: ${{ env.MAIN_PYTHON_VERSION }} + + - name: Create virtual environment + run: | + export LD_LIBRARY_PATH=${{ env.ANSYSEM_ROOT242 }}/common/mono/Linux64/lib64:${{ env.ANSYSEM_ROOT242 }}/Delcross:$LD_LIBRARY_PATH + python -m venv .venv + source .venv/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)" + + - name: Install pyaedt and tests dependencies + run: | + export LD_LIBRARY_PATH=${{ env.ANSYSEM_ROOT242 }}/common/mono/Linux64/lib64:${{ env.ANSYSEM_ROOT242 }}/Delcross:$LD_LIBRARY_PATH + source .venv/bin/activate + pip install .[tests] + pip install pytest-azurepipelines + + - name: Install CI dependencies (e.g. vtk-osmesa) + run: | + source .venv/bin/activate + # Uninstall conflicting dependencies + pip uninstall --yes vtk + pip install --extra-index-url https://wheels.vtk.org vtk-osmesa + + - name: Run tests on _unittest_solvers + run: | + export LD_LIBRARY_PATH=${{ env.ANSYSEM_ROOT242 }}/common/mono/Linux64/lib64:${{ env.ANSYSEM_ROOT242 }}/Delcross:$LD_LIBRARY_PATH + source .venv/bin/activate + pytest _unittest_solvers/test_45_workflows.py::TestClass::test_08_configure_a3d + # # ================================================================================================= # # vvvvvvvvvvvvvvvvvvvvvvvvvvvvvv RUNNING ON SELF-HOSTED RUNNER vvvvvvvvvvvvvvvvvvvvvvvvvvvvvv # # ================================================================================================= @@ -32,9 +81,10 @@ jobs: test-solvers-linux: name: Testing solvers and coverage (Linux) if: github.event.pull_request.draft == false - runs-on: [ self-hosted, Linux, pyaedt , toolkits] + runs-on: [ self-hosted, Linux, pyaedt] + needs: [test-specific-linux] env: - ANSYSEM_ROOT242: '/ansys_inc/AnsysEM/v242/Linux64' + ANSYSEM_ROOT242: '/opt/AnsysEM/v242/Linux64' ANS_NODEPCHECK: '1' steps: - name: Install Git and checkout project From 61c010c3f765619930d61e6734c3dd52ab06256f Mon Sep 17 00:00:00 2001 From: Sebastien Morais Date: Mon, 30 Sep 2024 15:32:49 +0200 Subject: [PATCH 06/14] TBR: Remove step env var --- .github/workflows/ci_cd.yml | 3 --- 1 file changed, 3 deletions(-) diff --git a/.github/workflows/ci_cd.yml b/.github/workflows/ci_cd.yml index f2c15a3ccf3..0682169f0e4 100644 --- a/.github/workflows/ci_cd.yml +++ b/.github/workflows/ci_cd.yml @@ -46,7 +46,6 @@ jobs: - name: Create virtual environment run: | - export LD_LIBRARY_PATH=${{ env.ANSYSEM_ROOT242 }}/common/mono/Linux64/lib64:${{ env.ANSYSEM_ROOT242 }}/Delcross:$LD_LIBRARY_PATH python -m venv .venv source .venv/bin/activate python -m pip install --trusted-host pypi.org --trusted-host pypi.python.org --trusted-host files.pythonhosted.org pip -U @@ -55,7 +54,6 @@ jobs: - name: Install pyaedt and tests dependencies run: | - export LD_LIBRARY_PATH=${{ env.ANSYSEM_ROOT242 }}/common/mono/Linux64/lib64:${{ env.ANSYSEM_ROOT242 }}/Delcross:$LD_LIBRARY_PATH source .venv/bin/activate pip install .[tests] pip install pytest-azurepipelines @@ -69,7 +67,6 @@ jobs: - name: Run tests on _unittest_solvers run: | - export LD_LIBRARY_PATH=${{ env.ANSYSEM_ROOT242 }}/common/mono/Linux64/lib64:${{ env.ANSYSEM_ROOT242 }}/Delcross:$LD_LIBRARY_PATH source .venv/bin/activate pytest _unittest_solvers/test_45_workflows.py::TestClass::test_08_configure_a3d From 9040182c0c38b9b698fd02c2f9b2bc6b62e6a4a5 Mon Sep 17 00:00:00 2001 From: Sebastien Morais Date: Mon, 30 Sep 2024 15:41:15 +0200 Subject: [PATCH 07/14] TBR: VM testing after remove LD --- .github/workflows/ci_cd.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/ci_cd.yml b/.github/workflows/ci_cd.yml index 0682169f0e4..4af531b48ef 100644 --- a/.github/workflows/ci_cd.yml +++ b/.github/workflows/ci_cd.yml @@ -31,9 +31,9 @@ jobs: # TODO: Si if we can use ansys/actions test-specific-linux: name: Testing solvers and coverage (Linux) - runs-on: [ self-hosted, Linux, pyaedt] + runs-on: [ self-hosted, Linux, pyaedt, toolkits] env: - ANSYSEM_ROOT242: '/opt/AnsysEM/v242/Linux64' + ANSYSEM_ROOT242: '/ansys_inc/AnsysEM/v242/Linux64' ANS_NODEPCHECK: '1' steps: - name: Install Git and checkout project @@ -78,10 +78,10 @@ jobs: test-solvers-linux: name: Testing solvers and coverage (Linux) if: github.event.pull_request.draft == false - runs-on: [ self-hosted, Linux, pyaedt] + runs-on: [ self-hosted, Linux, pyaedt, toolkits] needs: [test-specific-linux] env: - ANSYSEM_ROOT242: '/opt/AnsysEM/v242/Linux64' + ANSYSEM_ROOT242: '/ansys_inc/AnsysEM/v242/Linux64' ANS_NODEPCHECK: '1' steps: - name: Install Git and checkout project From 1817098dc20ce890cc555a11b2e1e62bd1bf3c9c Mon Sep 17 00:00:00 2001 From: Sebastien Morais Date: Mon, 30 Sep 2024 16:19:01 +0200 Subject: [PATCH 08/14] CI: Test in parallel --- .github/workflows/ci_cd.yml | 113 ++++++++++++++++++++++++++++-------- 1 file changed, 88 insertions(+), 25 deletions(-) diff --git a/.github/workflows/ci_cd.yml b/.github/workflows/ci_cd.yml index 4af531b48ef..f5774ab9fe0 100644 --- a/.github/workflows/ci_cd.yml +++ b/.github/workflows/ci_cd.yml @@ -29,8 +29,8 @@ jobs: # # ================================================================================================= # TODO: Si if we can use ansys/actions - test-specific-linux: - name: Testing solvers and coverage (Linux) + test-tk-linux: + name: Toolkit VM runs-on: [ self-hosted, Linux, pyaedt, toolkits] env: ANSYSEM_ROOT242: '/ansys_inc/AnsysEM/v242/Linux64' @@ -65,23 +65,30 @@ jobs: pip uninstall --yes vtk pip install --extra-index-url https://wheels.vtk.org vtk-osmesa + - name: Print setup + run: | + source .venv/bin/activate + python --version + echo "" + pip freeze + echo "" + - name: Run tests on _unittest_solvers run: | source .venv/bin/activate pytest _unittest_solvers/test_45_workflows.py::TestClass::test_08_configure_a3d + # # ================================================================================================= # # vvvvvvvvvvvvvvvvvvvvvvvvvvvvvv RUNNING ON SELF-HOSTED RUNNER vvvvvvvvvvvvvvvvvvvvvvvvvvvvvv # # ================================================================================================= # TODO: Si if we can use ansys/actions - test-solvers-linux: - name: Testing solvers and coverage (Linux) - if: github.event.pull_request.draft == false - runs-on: [ self-hosted, Linux, pyaedt, toolkits] - needs: [test-specific-linux] + test-ci-linux: + name: CI VM + runs-on: [ self-hosted, Linux, pyaedt] env: - ANSYSEM_ROOT242: '/ansys_inc/AnsysEM/v242/Linux64' + ANSYSEM_ROOT242: '/opt/AnsysEM/v242/Linux64' ANS_NODEPCHECK: '1' steps: - name: Install Git and checkout project @@ -94,7 +101,6 @@ jobs: - name: Create virtual environment run: | - export LD_LIBRARY_PATH=${{ env.ANSYSEM_ROOT242 }}/common/mono/Linux64/lib64:${{ env.ANSYSEM_ROOT242 }}/Delcross:$LD_LIBRARY_PATH python -m venv .venv source .venv/bin/activate python -m pip install --trusted-host pypi.org --trusted-host pypi.python.org --trusted-host files.pythonhosted.org pip -U @@ -103,7 +109,6 @@ jobs: - name: Install pyaedt and tests dependencies run: | - export LD_LIBRARY_PATH=${{ env.ANSYSEM_ROOT242 }}/common/mono/Linux64/lib64:${{ env.ANSYSEM_ROOT242 }}/Delcross:$LD_LIBRARY_PATH source .venv/bin/activate pip install .[tests] pip install pytest-azurepipelines @@ -115,23 +120,81 @@ jobs: pip uninstall --yes vtk pip install --extra-index-url https://wheels.vtk.org vtk-osmesa - - name: Run tests on _unittest_solvers + - name: Print setup run: | - export LD_LIBRARY_PATH=${{ env.ANSYSEM_ROOT242 }}/common/mono/Linux64/lib64:${{ env.ANSYSEM_ROOT242 }}/Delcross:$LD_LIBRARY_PATH source .venv/bin/activate - pytest --durations=50 -v --cov=ansys.aedt.core --cov-report=xml --cov-report=html --junitxml=junit/test-results.xml _unittest_solvers + python --version + echo "" + pip freeze + echo "" - - uses: codecov/codecov-action@v4 - with: - token: ${{ secrets.CODECOV_TOKEN }} - name: codecov-system-solver-tests - file: ./coverage.xml - flags: system,solver + - name: Run tests on _unittest_solvers + run: | + source .venv/bin/activate + pytest _unittest_solvers/test_45_workflows.py::TestClass::test_08_configure_a3d - - name: Upload pytest test results - uses: actions/upload-artifact@v3 - with: - name: pytest-solver-results - path: junit/test-results.xml - if: ${{ always() }} +# # # ================================================================================================= +# # # vvvvvvvvvvvvvvvvvvvvvvvvvvvvvv RUNNING ON SELF-HOSTED RUNNER vvvvvvvvvvvvvvvvvvvvvvvvvvvvvv +# # # ================================================================================================= + +# # TODO: Si if we can use ansys/actions +# test-solvers-linux: +# name: Testing solvers and coverage (Linux) +# if: github.event.pull_request.draft == false +# runs-on: [ self-hosted, Linux, pyaedt, toolkits] +# needs: [test-specific-linux] +# env: +# ANSYSEM_ROOT242: '/ansys_inc/AnsysEM/v242/Linux64' +# ANS_NODEPCHECK: '1' +# steps: +# - name: Install Git and checkout project +# uses: actions/checkout@v4 + +# - name: Setup Python +# uses: actions/setup-python@v5 +# with: +# python-version: ${{ env.MAIN_PYTHON_VERSION }} + +# - name: Create virtual environment +# run: | +# export LD_LIBRARY_PATH=${{ env.ANSYSEM_ROOT242 }}/common/mono/Linux64/lib64:${{ env.ANSYSEM_ROOT242 }}/Delcross:$LD_LIBRARY_PATH +# python -m venv .venv +# source .venv/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)" + +# - name: Install pyaedt and tests dependencies +# run: | +# export LD_LIBRARY_PATH=${{ env.ANSYSEM_ROOT242 }}/common/mono/Linux64/lib64:${{ env.ANSYSEM_ROOT242 }}/Delcross:$LD_LIBRARY_PATH +# source .venv/bin/activate +# pip install .[tests] +# pip install pytest-azurepipelines + +# - name: Install CI dependencies (e.g. vtk-osmesa) +# run: | +# source .venv/bin/activate +# # Uninstall conflicting dependencies +# pip uninstall --yes vtk +# pip install --extra-index-url https://wheels.vtk.org vtk-osmesa + +# - name: Run tests on _unittest_solvers +# run: | +# export LD_LIBRARY_PATH=${{ env.ANSYSEM_ROOT242 }}/common/mono/Linux64/lib64:${{ env.ANSYSEM_ROOT242 }}/Delcross:$LD_LIBRARY_PATH +# source .venv/bin/activate +# pytest --durations=50 -v --cov=ansys.aedt.core --cov-report=xml --cov-report=html --junitxml=junit/test-results.xml _unittest_solvers + +# - uses: codecov/codecov-action@v4 +# with: +# token: ${{ secrets.CODECOV_TOKEN }} +# name: codecov-system-solver-tests +# file: ./coverage.xml +# flags: system,solver + +# - name: Upload pytest test results +# uses: actions/upload-artifact@v3 +# with: +# name: pytest-solver-results +# path: junit/test-results.xml +# if: ${{ always() }} From f850d66d50a924998bdd14ce0fd01abe6b534217 Mon Sep 17 00:00:00 2001 From: Sebastien Morais Date: Mon, 30 Sep 2024 16:58:12 +0200 Subject: [PATCH 09/14] WIP: extend LD_LIBRARY_PATH --- .github/workflows/ci_cd.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/ci_cd.yml b/.github/workflows/ci_cd.yml index f5774ab9fe0..7e2c5d4fc33 100644 --- a/.github/workflows/ci_cd.yml +++ b/.github/workflows/ci_cd.yml @@ -76,6 +76,7 @@ jobs: - name: Run tests on _unittest_solvers run: | source .venv/bin/activate + export LD_LIBRARY_PATH=${{ env.ANSYSEM_ROOT242 }}/common/mono/Linux64/lib64:$LD_LIBRARY_PATH pytest _unittest_solvers/test_45_workflows.py::TestClass::test_08_configure_a3d @@ -131,6 +132,7 @@ jobs: - name: Run tests on _unittest_solvers run: | source .venv/bin/activate + export LD_LIBRARY_PATH=${{ env.ANSYSEM_ROOT242 }}/common/mono/Linux64/lib64:$LD_LIBRARY_PATH pytest _unittest_solvers/test_45_workflows.py::TestClass::test_08_configure_a3d # # # ================================================================================================= From edc3b5fe4607ad5cb9ff92a3322bda29d7a707be Mon Sep 17 00:00:00 2001 From: Sebastien Morais Date: Mon, 30 Sep 2024 17:11:54 +0200 Subject: [PATCH 10/14] WIP: Test using early import --- _unittest_solvers/conftest.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/_unittest_solvers/conftest.py b/_unittest_solvers/conftest.py index 8f3fe42264e..5f50a7aae73 100644 --- a/_unittest_solvers/conftest.py +++ b/_unittest_solvers/conftest.py @@ -26,6 +26,8 @@ import string import pytest +import ansys.aedt.core.generic.clr_module + from ansys.aedt.core.generic.settings import settings settings.enable_local_log_file = False From badca2e5bd8852625d6d9b5a03c544a9ded92893 Mon Sep 17 00:00:00 2001 From: Sebastien Morais Date: Mon, 30 Sep 2024 17:14:56 +0200 Subject: [PATCH 11/14] WIP: Test other setting --- _unittest_solvers/conftest.py | 1 + 1 file changed, 1 insertion(+) diff --git a/_unittest_solvers/conftest.py b/_unittest_solvers/conftest.py index 5f50a7aae73..dc0a3d607a0 100644 --- a/_unittest_solvers/conftest.py +++ b/_unittest_solvers/conftest.py @@ -18,6 +18,7 @@ """ import json +import numpy import os import shutil import sys From 3a46e1ac88ac031a78911c58f633b496c3c961a8 Mon Sep 17 00:00:00 2001 From: Sebastien Morais Date: Tue, 1 Oct 2024 09:07:51 +0200 Subject: [PATCH 12/14] WIP: Test simon fix --- .github/workflows/ci_cd.yml | 27 ++++++++++++++++----------- 1 file changed, 16 insertions(+), 11 deletions(-) diff --git a/.github/workflows/ci_cd.yml b/.github/workflows/ci_cd.yml index 7e2c5d4fc33..dd96fe7d4ce 100644 --- a/.github/workflows/ci_cd.yml +++ b/.github/workflows/ci_cd.yml @@ -46,6 +46,7 @@ jobs: - name: Create virtual environment run: | + export LD_LIBRARY_PATH=${{ env.ANSYSEM_ROOT242 }}/common/mono/Linux64/lib64:$LD_LIBRARY_PATH python -m venv .venv source .venv/bin/activate python -m pip install --trusted-host pypi.org --trusted-host pypi.python.org --trusted-host files.pythonhosted.org pip -U @@ -54,27 +55,29 @@ jobs: - name: Install pyaedt and tests dependencies run: | + export LD_LIBRARY_PATH=${{ env.ANSYSEM_ROOT242 }}/common/mono/Linux64/lib64:$LD_LIBRARY_PATH source .venv/bin/activate pip install .[tests] pip install pytest-azurepipelines - name: Install CI dependencies (e.g. vtk-osmesa) run: | + export LD_LIBRARY_PATH=${{ env.ANSYSEM_ROOT242 }}/common/mono/Linux64/lib64:$LD_LIBRARY_PATH source .venv/bin/activate # Uninstall conflicting dependencies pip uninstall --yes vtk pip install --extra-index-url https://wheels.vtk.org vtk-osmesa - - name: Print setup + - name: Install pyedb WIP version run: | + export LD_LIBRARY_PATH=${{ env.ANSYSEM_ROOT242 }}/common/mono/Linux64/lib64:$LD_LIBRARY_PATH source .venv/bin/activate - python --version - echo "" - pip freeze - echo "" + pip uninstall --yes pyedb + pip install git+https://github.com/ansys/pyedb.git@fix/padstack-definition - name: Run tests on _unittest_solvers run: | + export LD_LIBRARY_PATH=${{ env.ANSYSEM_ROOT242 }}/common/mono/Linux64/lib64:$LD_LIBRARY_PATH source .venv/bin/activate export LD_LIBRARY_PATH=${{ env.ANSYSEM_ROOT242 }}/common/mono/Linux64/lib64:$LD_LIBRARY_PATH pytest _unittest_solvers/test_45_workflows.py::TestClass::test_08_configure_a3d @@ -102,6 +105,7 @@ jobs: - name: Create virtual environment run: | + export LD_LIBRARY_PATH=${{ env.ANSYSEM_ROOT242 }}/common/mono/Linux64/lib64:$LD_LIBRARY_PATH python -m venv .venv source .venv/bin/activate python -m pip install --trusted-host pypi.org --trusted-host pypi.python.org --trusted-host files.pythonhosted.org pip -U @@ -110,29 +114,30 @@ jobs: - name: Install pyaedt and tests dependencies run: | + export LD_LIBRARY_PATH=${{ env.ANSYSEM_ROOT242 }}/common/mono/Linux64/lib64:$LD_LIBRARY_PATH source .venv/bin/activate pip install .[tests] pip install pytest-azurepipelines - name: Install CI dependencies (e.g. vtk-osmesa) run: | + export LD_LIBRARY_PATH=${{ env.ANSYSEM_ROOT242 }}/common/mono/Linux64/lib64:$LD_LIBRARY_PATH source .venv/bin/activate # Uninstall conflicting dependencies pip uninstall --yes vtk pip install --extra-index-url https://wheels.vtk.org vtk-osmesa - - name: Print setup + - name: Install pyedb WIP version run: | + export LD_LIBRARY_PATH=${{ env.ANSYSEM_ROOT242 }}/common/mono/Linux64/lib64:$LD_LIBRARY_PATH source .venv/bin/activate - python --version - echo "" - pip freeze - echo "" + pip uninstall --yes pyedb + pip install git+https://github.com/ansys/pyedb.git@fix/padstack-definition - name: Run tests on _unittest_solvers run: | - source .venv/bin/activate export LD_LIBRARY_PATH=${{ env.ANSYSEM_ROOT242 }}/common/mono/Linux64/lib64:$LD_LIBRARY_PATH + source .venv/bin/activate pytest _unittest_solvers/test_45_workflows.py::TestClass::test_08_configure_a3d # # # ================================================================================================= From 24c9dc3e207d8cb7c40c8d88f0a53c86d4019b45 Mon Sep 17 00:00:00 2001 From: Sebastien Morais Date: Tue, 1 Oct 2024 09:41:03 +0200 Subject: [PATCH 13/14] WIP --- .github/workflows/ci_cd.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci_cd.yml b/.github/workflows/ci_cd.yml index dd96fe7d4ce..7f3e1adfee1 100644 --- a/.github/workflows/ci_cd.yml +++ b/.github/workflows/ci_cd.yml @@ -80,7 +80,7 @@ jobs: export LD_LIBRARY_PATH=${{ env.ANSYSEM_ROOT242 }}/common/mono/Linux64/lib64:$LD_LIBRARY_PATH source .venv/bin/activate export LD_LIBRARY_PATH=${{ env.ANSYSEM_ROOT242 }}/common/mono/Linux64/lib64:$LD_LIBRARY_PATH - pytest _unittest_solvers/test_45_workflows.py::TestClass::test_08_configure_a3d + pytest _unittest_solvers/test_45_workflows.py::TestClass::test_08_configure_a3d -vvv # # ================================================================================================= @@ -138,7 +138,7 @@ jobs: run: | export LD_LIBRARY_PATH=${{ env.ANSYSEM_ROOT242 }}/common/mono/Linux64/lib64:$LD_LIBRARY_PATH source .venv/bin/activate - pytest _unittest_solvers/test_45_workflows.py::TestClass::test_08_configure_a3d + pytest _unittest_solvers/test_45_workflows.py::TestClass::test_08_configure_a3d -vvv # # # ================================================================================================= # # # vvvvvvvvvvvvvvvvvvvvvvvvvvvvvv RUNNING ON SELF-HOSTED RUNNER vvvvvvvvvvvvvvvvvvvvvvvvvvvvvv From aeeccbe3f84fdd3e38344a3eacb71f158e3d57c5 Mon Sep 17 00:00:00 2001 From: Sebastien Morais Date: Tue, 1 Oct 2024 09:56:05 +0200 Subject: [PATCH 14/14] WIP --- _unittest_solvers/conftest.py | 3 --- 1 file changed, 3 deletions(-) diff --git a/_unittest_solvers/conftest.py b/_unittest_solvers/conftest.py index dc0a3d607a0..8f3fe42264e 100644 --- a/_unittest_solvers/conftest.py +++ b/_unittest_solvers/conftest.py @@ -18,7 +18,6 @@ """ import json -import numpy import os import shutil import sys @@ -27,8 +26,6 @@ import string import pytest -import ansys.aedt.core.generic.clr_module - from ansys.aedt.core.generic.settings import settings settings.enable_local_log_file = False