FIX: Change units to mm (#286) #824
This file contains 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: "CI" | |
on: | |
pull_request: | |
push: | |
tags: | |
- "v*.*.*" | |
branches: | |
- main | |
workflow_dispatch: | |
inputs: | |
logLevel: | |
description: 'Log level' | |
required: true | |
default: 'warning' | |
env: | |
MAIN_PYTHON_VERSION: '3.10' | |
DOCUMENTATION_CNAME: 'aedt.antenna.toolkit.docs.pyansys.com' | |
LIBRARY_NAME: 'ansys-aedt-toolkits-antenna' | |
LIBRARY_NAMESPACE: 'ansys.aedt.toolkits.antenna' | |
ANSYSLMD_LICENSE_FILE: ${{ format('1055@{0}', secrets.LICENSE_SERVER) }} | |
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: | |
code-style: | |
name: "Code style" | |
runs-on: ubuntu-latest | |
steps: | |
- uses: ansys/actions/code-style@v6 | |
with: | |
python-version: ${{ env.MAIN_PYTHON_VERSION }} | |
use-python-cache: false | |
doc-style: | |
name: "Documentation style" | |
runs-on: ubuntu-latest | |
steps: | |
- uses: ansys/actions/doc-style@v6 | |
with: | |
token: ${{ secrets.GITHUB_TOKEN }} | |
vale-version: "3.4.1" | |
doc-build: | |
name: "Build documentation" | |
runs-on: [self-hosted, pyaedt, toolkits, Windows] | |
needs: [ doc-style ] | |
timeout-minutes: 15 | |
steps: | |
- uses: actions/checkout@v4 | |
- name: "Set up Python" | |
uses: ansys/actions/_setup-python@main | |
with: | |
python-version: ${{ env.MAIN_PYTHON_VERSION }} | |
use-cache: false | |
- name: 'Create virtual env' | |
run: | | |
python -m venv .venv | |
- name: "Update pip" | |
run: | | |
. .venv\Scripts\Activate.ps1 | |
python -m pip install pip -U | |
python -m pip install wheel setuptools -U | |
python -c "import sys; print(sys.executable)" | |
- name: Install antenna toolkit with doc dependencies | |
run: | | |
. .venv\Scripts\Activate.ps1 | |
pip install . | |
pip install .[doc] | |
- name: Uninstall conflicting CI packages | |
run: | | |
.venv\Scripts\Activate.ps1 | |
pip uninstall vtk pypandoc -y | |
- name: Install CI dependencies (e.g. vtk-osmesa) | |
run: | | |
.venv\Scripts\Activate.ps1 | |
pip uninstall --yes pypandoc vtk | |
pip install --extra-index-url https://wheels.vtk.org vtk-osmesa==9.2.20230527.dev0 | |
pip install pypandoc-binary | |
- name: Retrieve antenna toolkit version | |
run: | | |
. .venv\Scripts\Activate.ps1 | |
echo "Antenna Toolkit version is: $(python -c "from ansys.aedt.toolkits.antenna import __version__; print(); print(__version__)")" | |
- name: Build the documentation (HTML) | |
run: | | |
.\.venv\Scripts\Activate.ps1 | |
cd doc | |
.\make.bat html | |
- name: Build the documentation (PDF) | |
run: | | |
.\.venv\Scripts\Activate.ps1 | |
cd doc | |
.\make.bat pdf | |
- name: 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/ansys-aedt-toolkits-antenna.pdf .\doc\_build\html\_static\assets\download\ | |
- name: Upload HTML Documentation artifact | |
uses: actions/upload-artifact@v4 | |
with: | |
name: documentation-html | |
path: doc/_build/html | |
retention-days: 1 | |
- name: Upload PDF Documentation artifact | |
uses: actions/upload-artifact@v4 | |
with: | |
name: documentation-pdf | |
path: doc/_build/latex/*.pdf | |
retention-days: 7 | |
smoke-tests: | |
name: "Build and Smoke tests" | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [ windows-latest, ubuntu-latest ] | |
python-version: [ '3.10' ] | |
runs-on: ${{ matrix.os }} | |
needs: [ code-style ] | |
steps: | |
- uses: ansys/actions/build-wheelhouse@v6 | |
with: | |
library-name: ${{ env.LIBRARY_NAME }} | |
operating-system: ${{ matrix.os }} | |
python-version: ${{ matrix.python-version }} | |
tests_windows: | |
name: "Windows Tests" | |
strategy: | |
matrix: | |
python-version: [ '3.10' ] | |
fail-fast: false | |
runs-on: [self-hosted, pyaedt, toolkits, Windows] | |
needs: [smoke-tests] | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Set up Python | |
uses: actions/setup-python@v5 | |
with: | |
python-version: ${{ matrix.python-version }} | |
- name: Create Python venv | |
run: | | |
python -m venv .venv | |
.\.venv\Scripts\Activate.ps1 | |
- name: Install packages for testing | |
run: | | |
.\.venv\Scripts\Activate.ps1 | |
python -m pip install --upgrade pip | |
pip install --upgrade build wheel | |
pip install .[tests] | |
- name: Antenna models testing | |
timeout-minutes: 30 | |
run: | | |
.\.venv\Scripts\Activate.ps1 | |
pytest -v -m antenna_models_common_api --cov | |
pytest -v -m antenna_models_api --cov --cov-append | |
- name: Toolkit API testing | |
timeout-minutes: 30 | |
run: | | |
.\.venv\Scripts\Activate.ps1 | |
pytest -v -m antenna_toolkit_api --cov --cov-append | |
- name: Toolkit REST API testing | |
timeout-minutes: 30 | |
run: | | |
.\.venv\Scripts\Activate.ps1 | |
pytest -v -m antenna_toolkit_rest_api --cov --cov-append | |
- name: "Combine coverage files" | |
run: | | |
.\.venv\Scripts\Activate.ps1 | |
python -m coverage html -d .cov\total-html | |
python -m coverage xml -o .cov\total.xml | |
- name: "Upload coverage results" | |
if: ${{ matrix.python-version == env.MAIN_PYTHON_VERSION }} | |
uses: actions/upload-artifact@v4 | |
with: | |
path: .cov/total-html | |
name: html-total-coverage | |
- name: "Upload coverage report to codecov" | |
if: ${{ matrix.python-version == env.MAIN_PYTHON_VERSION }} | |
uses: codecov/codecov-action@v4 | |
with: | |
file: .cov/total.xml | |
env: | |
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} | |
tests_linux: | |
name: "Linux Tests" | |
strategy: | |
matrix: | |
python-version: [ '3.10' ] | |
fail-fast: false | |
runs-on: [self-hosted, pyaedt, toolkits, Linux] | |
needs: [ smoke-tests ] | |
env: | |
ANSYSEM_ROOT242: '/ansys_inc/AnsysEM/v242/Linux64' | |
ANS_NODEPCHECK: '1' | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Set up Python | |
uses: actions/setup-python@v5 | |
with: | |
python-version: ${{ matrix.python-version }} | |
- name: Create Python venv | |
run: | | |
python -m venv .venv_linux | |
- name: Install packages for testing | |
run: | | |
source .venv_linux/bin/activate | |
python -m pip install --trusted-host pypi.org --trusted-host pypi.python.org --trusted-host files.pythonhosted.org pip -U | |
python -m pip install --trusted-host pypi.org --trusted-host pypi.python.org --trusted-host files.pythonhosted.org wheel setuptools -U | |
python -c "import sys; print(sys.executable)" | |
python -m pip install --upgrade pip | |
pip install --upgrade build wheel | |
pip install --no-cache-dir .[tests] | |
pip install --trusted-host pypi.org --trusted-host pypi.python.org --trusted-host files.pythonhosted.org pytest-azurepipelines | |
- name: Antenna models testing | |
timeout-minutes: 5 | |
run: | | |
export LD_LIBRARY_PATH=${{ env.ANSYSEM_ROOT242 }}/common/mono/Linux64/lib64:${{ env.ANSYSEM_ROOT242 }}/Delcross:$LD_LIBRARY_PATH | |
source .venv_linux/bin/activate | |
pytest -v -m antenna_models_common_api | |
pytest -v -m antenna_models_api | |
- name: Toolkit API testing | |
timeout-minutes: 30 | |
run: | | |
export LD_LIBRARY_PATH=${{ env.ANSYSEM_ROOT242 }}/common/mono/Linux64/lib64:${{ env.ANSYSEM_ROOT242 }}/Delcross:$LD_LIBRARY_PATH | |
source .venv_linux/bin/activate | |
pytest -v -m antenna_toolkit_api | |
- name: Toolkit REST API testing | |
timeout-minutes: 30 | |
run: | | |
export LD_LIBRARY_PATH=${{ env.ANSYSEM_ROOT242 }}/common/mono/Linux64/lib64:${{ env.ANSYSEM_ROOT242 }}/Delcross:$LD_LIBRARY_PATH | |
source .venv_linux/bin/activate | |
pytest -v -m antenna_toolkit_rest_api | |
build-library: | |
name: "Build library artifacts" | |
runs-on: ubuntu-latest | |
needs: [ doc-build, tests_windows, tests_linux ] | |
steps: | |
- uses: ansys/actions/build-library@v6 | |
with: | |
library-name: ${{ env.LIBRARY_NAME }} | |
python-version: ${{ env.MAIN_PYTHON_VERSION }} | |
release: | |
name: "Release" | |
if: github.event_name == 'push' && contains(github.ref, 'refs/tags') | |
needs: build-library | |
runs-on: ubuntu-latest | |
# Specifying a GitHub environment is optional, but strongly encouraged | |
environment: release | |
permissions: | |
id-token: write | |
contents: write | |
steps: | |
- name: "Release to the public PyPI repository" | |
uses: ansys/actions/release-pypi-public@v6 | |
with: | |
library-name: ${{ env.LIBRARY_NAME }} | |
use-trusted-publisher: true | |
- name: "Release to GitHub" | |
uses: ansys/actions/release-github@v6 | |
with: | |
library-name: ${{ env.LIBRARY_NAME }} | |
doc-deploy-dev: | |
name: "Deploy development documentation" | |
runs-on: ubuntu-latest | |
needs: build-library | |
if: github.event_name == 'push' | |
steps: | |
- uses: ansys/actions/doc-deploy-dev@v6 | |
with: | |
cname: ${{ env.DOCUMENTATION_CNAME }} | |
token: ${{ secrets.GITHUB_TOKEN }} | |
doc-index-dev: | |
name: "Deploy development index documentation" | |
if: github.ref == 'refs/heads/main' | |
runs-on: ubuntu-latest | |
needs: doc-deploy-dev | |
steps: | |
- name: "Deploy the latest documentation index" | |
uses: ansys/actions/doc-deploy-index@v6 | |
with: | |
cname: ${{ env.DOCUMENTATION_CNAME }}/version/dev | |
index-name: pyaedt-toolkits-antenna-vdev | |
host-url: ${{ env.MEILISEARCH_HOST_URL }} | |
api-key: ${{ env.MEILISEARCH_API_KEY }} | |
python-version: ${{ env.MAIN_PYTHON_VERSION }} | |
doc-deploy-stable: | |
name: "Deploy stable documentation" | |
runs-on: ubuntu-latest | |
needs: release | |
if: github.event_name == 'push' && contains(github.ref, 'refs/tags') | |
steps: | |
- uses: ansys/actions/doc-deploy-stable@v6 | |
with: | |
cname: ${{ env.DOCUMENTATION_CNAME }} | |
token: ${{ secrets.GITHUB_TOKEN }} | |
doc-index-stable: | |
name: "Deploy stable documentation index" | |
runs-on: ubuntu-latest | |
needs: doc-deploy-stable | |
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 ansys.aedt.toolkits.antenna import __version__; print('.'.join(__version__.split('.')[:2]))") | |
VERSION_MEILI=$(python -c "from ansys.aedt.toolkits.antenna 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@v6 | |
with: | |
cname: ${{ env.DOCUMENTATION_CNAME }}/version/${{ env.VERSION }} | |
index-name: pyaedt-toolkits-antenna-v${{ env.VERSION_MEILI }} | |
host-url: ${{ env.MEILISEARCH_HOST_URL }} | |
api-key: ${{ env.MEILISEARCH_API_KEY }} | |
python-version: ${{ env.MAIN_PYTHON_VERSION }} |