Allow multiple additive server connections #538
Workflow file for this run
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: GitHub CI | |
on: | |
pull_request: | |
merge_group: | |
workflow_dispatch: | |
push: | |
tags: | |
- "*" | |
branches: | |
- main | |
env: | |
MAIN_PYTHON_VERSION: "3.10" | |
DOCUMENTATION_CNAME: "additive.docs.pyansys.com" | |
LIBRARY_NAME: "ansys-additive-core" | |
# NOTE: The server needs to stay in a private registry. | |
ANSYS_PRODUCT_IMAGE: "ghcr.io/ansys-internal/additive:24.1.0-alpha10" | |
ANSYS_PRODUCT_CONTAINER: "ansys-additive-container" | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.ref }} | |
cancel-in-progress: true | |
jobs: | |
code-style: | |
name: "Running code style checks" | |
runs-on: ubuntu-latest | |
steps: | |
- name: "Run PyAnsys code style checks" | |
uses: ansys/actions/code-style@v4 | |
doc-style: | |
name: "Running documentation style checks" | |
runs-on: ubuntu-latest | |
steps: | |
- name: "Running documentation style checks" | |
uses: ansys/actions/doc-style@v4 | |
with: | |
token: ${{ secrets.GITHUB_TOKEN }} | |
smoke-tests: | |
name: "Build wheelhouse for Python versions" | |
runs-on: ${{ matrix.os }} | |
needs: [code-style] | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [ubuntu-latest, windows-latest, macos-latest] | |
python-version: ["3.9", "3.10", "3.11", "3.12"] | |
should-release: | |
- ${{ github.event_name == 'push' && contains(github.ref, 'refs/tags') }} | |
exclude: | |
- should-release: false | |
os: macos-latest | |
steps: | |
- name: "Build a wheelhouse of the Python library" | |
uses: ansys/actions/build-wheelhouse@v4 | |
with: | |
library-name: ${{ env.LIBRARY_NAME }} | |
operating-system: ${{ matrix.os }} | |
python-version: ${{ matrix.python-version }} | |
tests: | |
name: "Testing library with different operating systems and Python versions" | |
runs-on: ${{ matrix.os }} | |
needs: [smoke-tests] | |
strategy: | |
matrix: | |
os: [ubuntu-latest, windows-latest] | |
python-version: ["3.9", "3.10", "3.11", "3.12"] | |
fail-fast: false | |
steps: | |
- name: "Run pytest" | |
uses: ansys/actions/tests-pytest@v4 | |
doc-build: | |
name: "Building library documentation" | |
if: github.event_name != 'merge_group' | |
runs-on: ubuntu-latest-8-cores | |
needs: [doc-style] | |
steps: | |
# Remove when auto-api is updated | |
- name: "Install requirements" | |
shell: bash | |
run: | | |
sudo apt-get update | |
sudo apt-get install -y texlive-latex-extra latexmk pandoc | |
- name: "Login into the GitHub registry container" | |
uses: docker/login-action@v3 | |
with: | |
registry: ghcr.io | |
username: ${{ github.actor }} | |
password: ${{ secrets.GITHUB_TOKEN }} | |
- name: "Download the Docker image for Ansys Additive" | |
run: | | |
docker pull ${{ env.ANSYS_PRODUCT_IMAGE }} | |
- name: "Start product server" | |
# Don't use --rm flag. The container is removed in a later step | |
# after collecting the logs. | |
run: | | |
docker run --detach \ | |
--name ${{ env.ANSYS_PRODUCT_CONTAINER }} \ | |
-e ANSYSLMD_LICENSE_FILE=1055@${{ env.LICENSE_SERVER }} \ | |
-p 50052:50052 \ | |
${{ env.ANSYS_PRODUCT_IMAGE }} | |
env: | |
LICENSE_SERVER: ${{ secrets.LICENSE_SERVER }} | |
- name: "Setup headless display" | |
uses: pyvista/setup-headless-display-action@v2 | |
- name: "Checkout code" | |
uses: actions/checkout@v4 | |
# Remove when auto-api is updated | |
- name: Set up Python | |
uses: actions/setup-python@v4 | |
with: | |
python-version: ${{ env.MAIN_PYTHON_VERSION }} | |
# Remove when auto-api is updated | |
- name: Create Python venv | |
run: | | |
python -m venv .venv | |
./.venv/bin/activate | |
python -m pip install --upgrade pip | |
pip install --upgrade build wheel pandoc | |
pip install .[doc] | |
pip uninstall --yes sphinx-autoapi | |
pip install "sphinx-autoapi @ git+https://github.com/ansys/sphinx-autoapi@feat/single-page-option" | |
# Remove when auto-api is updated | |
- name: Build the documentation (HTML) | |
run: | | |
./.venv/bin/activate | |
make -C doc html SPHINXOPTS="-j auto" | |
make -C doc pdf | |
env: | |
GENERATING_DOCS: 1 | |
ANSYS_ADDITIVE_ADDRESS: "localhost:50052" | |
BUILD_EXAMPLES_LONG: false | |
# Remove when auto-api is updated | |
- name: Build the long examples | |
if: github.event_name == 'push' | |
run: | | |
./.venv/bin/activate | |
make -C doc html SPHINXOPTS="-j auto" | |
make -C doc pdf | |
env: | |
GENERATING_DOCS: 1 | |
ANSYS_ADDITIVE_ADDRESS: "localhost:50052" | |
BUILD_EXAMPLES_LONG: true | |
- name: Upload HTML documentation | |
uses: actions/upload-artifact@v3 | |
with: | |
name: documentation-html | |
path: doc/_build/html | |
retention-days: 7 | |
- name: Upload PDF documentation | |
uses: actions/upload-artifact@v3 | |
with: | |
name: documentation-pdf | |
path: doc/_build/latex/*.pdf | |
retention-days: 7 | |
# - name: "Build documentation with short examples" | |
# uses: ansys/actions/doc-build@v4 | |
# with: | |
# checkout: false | |
# sphinxopts: "-j auto" | |
# dependencies: "pandoc" | |
# env: | |
# GENERATING_DOCS: 1 | |
# ANSYS_ADDITIVE_ADDRESS: "localhost:50052" | |
# BUILD_EXAMPLES_LONG: false | |
# - name: "Build documentation with long examples" | |
# if: github.event_name == 'push' | |
# uses: ansys/actions/doc-build@v4 | |
# with: | |
# checkout: false | |
# sphinxopts: "-j auto" | |
# env: | |
# GENERATING_DOCS: 1 | |
# ANSYS_ADDITIVE_ADDRESS: "localhost:50052" | |
- name: "Collect logs and shutdown server" | |
if: ${{ always() }} | |
run: | | |
docker stop ${{ env.ANSYS_PRODUCT_CONTAINER }} | |
docker logs ${{ env.ANSYS_PRODUCT_CONTAINER }} >> docker-logs.txt | |
docker rm ${{ env.ANSYS_PRODUCT_CONTAINER }} | |
- name: "Upload container logs as artifacts" | |
if: ${{ always() }} | |
uses: actions/upload-artifact@v3 | |
with: | |
name: docker-logs.txt | |
path: docker-logs.txt | |
build-library: | |
name: "Build library artifacts" | |
needs: [tests, doc-build] | |
runs-on: ubuntu-latest | |
steps: | |
- name: "Build library source and wheel artifacts" | |
uses: ansys/actions/build-library@v4 | |
with: | |
library-name: ${{ env.LIBRARY_NAME }} | |
python-version: ${{ env.MAIN_PYTHON_VERSION }} | |
release: | |
name: "Release project" | |
if: github.event_name == 'push' && contains(github.ref, 'refs/tags') | |
needs: [build-library] | |
runs-on: ubuntu-latest | |
steps: | |
- name: "Release to the private PyPI repository" | |
uses: ansys/actions/release-pypi-private@v4 | |
with: | |
library-name: ${{ env.LIBRARY_NAME }} | |
twine-username: "__token__" | |
twine-token: ${{ secrets.PYANSYS_PYPI_PRIVATE_PAT }} | |
- name: "Release to GitHub" | |
uses: ansys/actions/release-github@v4 | |
with: | |
library-name: ${{ env.LIBRARY_NAME }} | |
upload_dev_docs: | |
name: "Deploy developers documentation" | |
runs-on: ubuntu-latest | |
needs: [build-library] | |
if: github.event_name == 'push' | |
steps: | |
- name: "Deploy the latest documentation" | |
uses: ansys/actions/doc-deploy-dev@v4 | |
with: | |
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] | |
steps: | |
- name: "Deploy the stable documentation" | |
uses: ansys/actions/doc-deploy-stable@v4 | |
with: | |
cname: ${{ env.DOCUMENTATION_CNAME }} | |
token: ${{ secrets.GITHUB_TOKEN }} |