Skip to content

Remove interactive widgets (#358) #1213

Remove interactive widgets (#358)

Remove interactive widgets (#358) #1213

Workflow file for this run

name: GitHub CI
on:
pull_request:
merge_group:
workflow_dispatch:
push:
tags:
- "*"
branches:
- main
permissions:
contents: write
packages: read
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:latest"
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@v6
doc-style:
name: "Running documentation style checks"
runs-on: ubuntu-latest
steps:
- name: "Running documentation style checks"
uses: ansys/actions/doc-style@v6
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@v6
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@v6
- name: Upload Coverage Results
if: (matrix.python-version == env.MAIN_PYTHON_VERSION) && (runner.os == 'Linux')
uses: actions/upload-artifact@v4
with:
name: coverage-html
path: .cov/html
retention-days: 7
- name: Upload coverage to Codecov
uses: codecov/codecov-action@v4
if: (matrix.python-version == env.MAIN_PYTHON_VERSION) && (runner.os == 'Linux')
env:
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
with:
files: .cov/xml
doc-build:
name: "Building library documentation"
# This is dumb but the schema checker doesn't allow the runner name
# `public-ubuntu-latest-8-cores`. Circumvent this by using a matrix
# strategy.
strategy:
matrix:
runner: [public-ubuntu-latest-8-cores]
runs-on: ${{ matrix.runner }}
needs: [doc-style]
steps:
- 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
- name: "Build documentation with short examples"
if: github.event_name != 'push'
uses: ansys/actions/doc-build@v6
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@v6
with:
checkout: false
sphinxopts: "-j auto"
dependencies: "pandoc"
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@v4
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@v6
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 PyPI repository"
uses: ansys/actions/release-pypi-public@v6
with:
library-name: ${{ env.LIBRARY_NAME }}
twine-username: "__token__"
twine-token: ${{ secrets.PYPI_TOKEN }}
- name: "Release to GitHub"
uses: ansys/actions/release-github@v6
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@v6
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@v6
with:
cname: ${{ env.DOCUMENTATION_CNAME }}
token: ${{ secrets.GITHUB_TOKEN }}