Skip to content

Allow multiple additive server connections #538

Allow multiple additive server connections

Allow multiple additive server connections #538

Workflow file for this run

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 }}