Skip to content

Regular integration of new pyaedt PRs related to EDB #37

Regular integration of new pyaedt PRs related to EDB

Regular integration of new pyaedt PRs related to EDB #37

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_USE_LEGACY: '1'
MAIN_PYTHON_VERSION: '3.10'
MAIN_PYTHON_VERSION_WINDOWS_SELFHOSTED: '3.9'
PACKAGE_NAME: 'pyedb'
DOCUMENTATION_CNAME: 'pyedb.docs.pyansys.com'
VTK_OSMESA: 'vtk-osmesa==9.2.20230527.dev0'
IS_WORKFLOW_RUNNING: True
ARTIFACTORY_VERSION: v242
MEILISEARCH_API_KEY: ${{ secrets.MEILISEARCH_API_KEY }}
MEILISEARCH_HOST_URL: ${{ vars.MEILISEARCH_HOST_URL }}
MEILISEARCH_PUBLIC_API_KEY: ${{ secrets.MEILISEARCH_PUBLIC_API_KEY }}
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
docs-style:
name: Check documentation style
runs-on: ubuntu-latest
steps:
- name: Check documentation style
uses: ansys/actions/doc-style@v5
with:
token: ${{ secrets.GITHUB_TOKEN }}
vale-config: "doc/.vale.ini"
vale-version: "2.29.6"
# TODO: uncomment once this repo is public
# smoke-tests:
# name: Build and Smoke tests
# runs-on: ${{ matrix.os }}
# strategy:
# fail-fast: false
# matrix:
# os: [ubuntu-latest, windows-latest]
# python-version: ['3.9', '3.10', '3.11']
# should-release:
# - ${{ github.event_name == 'push' && contains(github.ref, 'refs/tags') }}
# 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 }}
# =================================================================================================
# vvvvvvvvvvvvvvvvvvvvvvvvvvvvvv RUNNING ON SELF-HOSTED RUNNER vvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
# =================================================================================================
legacy-tests:
name: "Check legacy tests"
# needs: [smoke-tests]
runs-on: [ windows, pyedb, self-hosted ]
steps:
- name: "Install Git and clone project"
uses: actions/checkout@v4
- name: "Set up Python"
uses: ansys/actions/_setup-python@main
with:
python-version: ${{ env.MAIN_PYTHON_VERSION_WINDOWS_SELFHOSTED }}
use-cache: false
- 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: "Install specific vtk version with OSMesa bundled"
run: |
. .venv\Scripts\Activate.ps1
pip uninstall vtk -y
# Note: the vtk-osmesa used is 9.2.X as 9.3.0 is not working
# well with the use of pyvista in our tests atm.
# TODO: update once a stable versio is working
pip install --extra-index-url https://wheels.vtk.org ${{ env.VTK_OSMESA }}
- name: "Executing legacy tests"
run: |
. .venv\Scripts\Activate.ps1
pytest -m "legacy" -n auto --dist loadfile -v
- name: Upload Coverage Results
if: always()
uses: actions/upload-artifact@v4
with:
name: legacy-coverage-html
path: .cov/html
retention-days: 7
- name: Upload coverage to Codecov
uses: codecov/codecov-action@v3
if: matrix.docker-image == 'windows-latest'
env:
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
with:
files: .cov/xml
# =================================================================================================
# vvvvvvvvvvvvvvvvvvvvvvvvvvvvvv RUNNING ON SELF-HOSTED RUNNER vvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
# =================================================================================================
legacy-examples:
name: "Check legacy examples"
needs: [legacy-tests]
runs-on: [ windows, pyedb, self-hosted ]
env:
PYEDB_CI_NO_DISPLAY: '1'
steps:
- name: "Install Git and clone project"
uses: actions/checkout@v4
- name: "Set up Python"
uses: ansys/actions/_setup-python@main
with:
python-version: ${{ env.MAIN_PYTHON_VERSION_WINDOWS_SELFHOSTED }}
use-cache: false
- 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 pyedb
run: |
. .venv\Scripts\Activate.ps1
pip install .[full]
- name: Execute legacy examples (except pyaedt related and 01)
run: |
. .venv\Scripts\Activate.ps1
$excluded_example = "01_edb_example.py"
# TODO: once pyaedt examples are passing, use -Recurse to cover them
Get-ChildItem -Path examples/legacy -Filter *.py -File | ? { $_.Name -ne $excluded_example } | ForEach-Object {
Write-Host "Executing example $($_.FullName)"
python $_.FullName
}
# - name: "Clone pyaedt on specific branch"
# uses: actions/checkout@v4
# with:
# repository: ansys/pyaedt
# path: "external/pyaedt"
# ref: "maint/use_pyedb"
# - name: "Install Pyaedt"
# run: |
# .\.venv\Scripts\Activate.ps1
# pip install --no-cache-dir external/pyaedt[full]
# - name: Execute legacy pyaedt integration examples
# run: |
# . .venv\Scripts\Activate.ps1
# Get-ChildItem -Path examples/legacy/pyaedt_integration -Filter *.py -File | ? { $_.Name -ne $excluded_example } | ForEach-Object {
# Write-Host "Executing pyaedt integration example $($_.FullName)"
# python $_.FullName
# }
docs-build:
name: Build documentation
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v4
- name: "Set up Python"
uses: ansys/actions/_setup-python@main
with:
python-version: ${{ env.MAIN_PYTHON_VERSION }}
use-cache: false
- name: Create Python venv
run: |
python -m venv .venv
- name: "Update pip"
run: |
. .venv/bin/activate
python -m pip install -U pip
- name: Install pyedb with doc dependencies
run: |
. .venv/bin/activate
pip install .[doc]
- name: Verify that pyedb can be imported
run: |
. .venv/bin/activate
python -c "import pyedb"
- name: Retrieve pyedb version
run: |
. .venv/bin/activate
echo "Pyedb version: $(python -c "from pyedb import __version__; print(); print(__version__)" | tail -1)"
- name: Install doc build requirements
run: |
sudo apt install graphviz
# Run doc build, without creating the examples directory.
# NOTE: we have to add the examples file here since it won't be created as gallery is disabled on linux.
- name: Documentation Build
run: |
. .venv/bin/activate
make -C doc clean
mkdir doc/source/examples -p
echo $'Examples\n========' > doc/source/examples/index.rst
make -C doc html SPHINXOPTS="-j auto -w build_errors.txt -N"
# Verify that sphinx generates no warnings
- name: Check for warnings
run: |
. .venv/bin/activate
python doc/print_errors.py
- name: Upload Documentation
uses: actions/upload-artifact@v4
with:
name: Documentation
path: doc/_build/html
retention-days: 1
package:
name: Package library
needs: [legacy-tests, legacy-examples, docs-build]
runs-on: ubuntu-latest
steps:
- name: Build library source and wheel artifacts
uses: ansys/actions/build-library@v5
with:
library-name: ${{ env.PACKAGE_NAME }}
python-version: ${{ env.MAIN_PYTHON_VERSION }}
release:
name: Release project
if: github.event_name == 'push' && contains(github.ref, 'refs/tags')
needs: [package]
runs-on: ubuntu-latest
steps:
- name: Release to GitHub
uses: ansys/actions/release-github@v5
with:
library-name: ${{ env.PACKAGE_NAME }}
upload-dev-docs:
name: Upload dev documentation
if: github.ref == 'refs/heads/main'
runs-on: ubuntu-latest
needs: [package]
steps:
- name: Deploy the latest documentation
uses: ansys/actions/doc-deploy-dev@v5
with:
cname: ${{ env.DOCUMENTATION_CNAME }}
token: ${{ secrets.GITHUB_TOKEN }}
doc-index-dev:
name: "Deploy dev index docs"
if: github.ref == 'refs/heads/main'
runs-on: ubuntu-latest
needs: upload-dev-docs
steps:
- name: "Deploy the latest documentation index"
uses: ansys/actions/doc-deploy-index@v5
with:
cname: ${{ env.DOCUMENTATION_CNAME }}/version/dev
index-name: pyedb-vdev
host-url: ${{ env.MEILISEARCH_HOST_URL }}
api-key: ${{ env.MEILISEARCH_API_KEY }}
python-version: ${{ env.MAIN_PYTHON_VERSION }}
upload-docs-release:
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@v5
with:
cname: ${{ env.DOCUMENTATION_CNAME }}
token: ${{ secrets.GITHUB_TOKEN }}
doc-index-stable:
name: "Deploy stable docs index"
runs-on: ubuntu-latest
needs: upload-docs-release
steps:
- name: "Install Git and clone project"
uses: actions/checkout@v4
- name: "Install the package requirements"
run: pip install -e .
- name: "Get the version to PyMeilisearch"
run: |
VERSION=$(python -c "from pyedb import __version__; print('.'.join(__version__.split('.')[:2]))")
VERSION_MEILI=$(python -c "from pyedb 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@v5
with:
cname: ${{ env.DOCUMENTATION_CNAME }}/version/${{ env.VERSION }}
index-name: pyedb-v${{ env.VERSION_MEILI }}
host-url: ${{ env.MEILISEARCH_HOST_URL }}
api-key: ${{ env.MEILISEARCH_API_KEY }}
python-version: ${{ env.MAIN_PYTHON_VERSION }}