Skip to content
Draft
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
230 changes: 3 additions & 227 deletions .github/workflows/ci-build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -23,242 +23,18 @@ env:
LICENSE_WHITELISTING: "attrs,referencing,jeepney,paramiko,psycopg,psycopg-binary"

jobs:
check-vulnerabilities:
name: Check third-party dependencies for vulnerabilities
runs-on: ubuntu-latest
steps:
- name: PyAnsys Vulnerability Check (on PRs)
if: github.event_name == 'pull_request'
uses: ansys/actions/check-vulnerabilities@v10
with:
python-version: ${{ env.MAIN_PYTHON_VERSION }}
python-package-name: ${{ env.PACKAGE_NAME }}
token: ${{ secrets.PYANSYS_CI_BOT_TOKEN }}
dev-mode: true

- name: PyAnsys Vulnerability Check (any other case)
if: github.event_name != 'pull_request'
uses: ansys/actions/check-vulnerabilities@v10
with:
python-version: ${{ env.MAIN_PYTHON_VERSION }}
python-package-name: ${{ env.PACKAGE_NAME }}
token: ${{ secrets.PYANSYS_CI_BOT_TOKEN }}

check-licenses:
name: Check depencencies' licenses
runs-on: ubuntu-latest
steps:
- name: PyAnsys Licenses Check
uses: ansys/actions/check-licenses@v10
with:
python-version: ${{ env.MAIN_PYTHON_VERSION }}
target: "all"
whitelist-license-check: ${{ env.LICENSE_WHITELISTING }}

docs-style:
name: Documentation Style Check
runs-on: ubuntu-latest
steps:
- name: PyAnsys documentation style checks
uses: ansys/actions/doc-style@v10
with:
token: ${{ secrets.GITHUB_TOKEN }}

smoke-tests-core:
name: Build core PyAnsys packages
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [windows-latest, ubuntu-latest]
python-version: ['3.10', '3.11', '3.12', '3.13']

steps:
- uses: actions/checkout@v6

- name: Install the latest version of uv and set the python version
uses: astral-sh/setup-uv@v7
with:
python-version: ${{ matrix.python-version }}
cache-dependency-glob: '**/pyproject.toml'
activate-environment: true

- name: Install core PyAnsys packages
run: |
uv pip install .

- name: Smoke test
run: python -c "from ${{ env.PACKAGE_NAMESPACE }} import __version__; print(__version__)"

smoke-tests-extras:
name: Build extras PyAnsys packages
python-version: ['3.9', '3.10', '3.11', '3.12', '3.13']
runs-on: ${{ matrix.os }}
needs: [smoke-tests-core]
strategy:
fail-fast: false
matrix:
os: [windows-latest, ubuntu-latest]
python-version: ['3.10', '3.11', '3.12', '3.13']
extras-version: ['fluent-all', 'mapdl-all', 'tools']

steps:
- uses: actions/checkout@v6

- name: Install the latest version of uv and set the python version
uses: astral-sh/setup-uv@v7
with:
python-version: ${{ matrix.python-version }}
cache-dependency-glob: '**/pyproject.toml'
activate-environment: true

- name: Install ${{ matrix.extras-version }} PyAnsys packages
run: |
uv pip install .[${{ matrix.extras-version }}]

- name: Smoke test
run: python -c "from ${{ env.PACKAGE_NAMESPACE }} import __version__; print(__version__)"

wheelhouse-all:
name: Build PyAnsys package wheelhouse
runs-on: ${{ matrix.os }}
needs: [smoke-tests-core]
strategy:
fail-fast: false
matrix:
os: [windows-latest, ubuntu-latest, macos-latest]
python-version: ['3.10', '3.11', '3.12', '3.13']

steps:
- name: Build wheelhouse and perform smoke test
uses: ansys/actions/build-wheelhouse@v10
- name: PyAnsys Licenses Check
uses: ansys/actions/check-licenses@maint/revert-to-original-pip-licenses
with:
library-name: ${{ env.PACKAGE_NAME }}
operating-system: ${{ runner.os }}
python-version: ${{ matrix.python-version }}
target: "all"
whitelist-license-check: ${{ env.LICENSE_WHITELISTING }}

- name: List dependencies (pip freeze)
run: |
uv pip freeze > all-deps-${{ runner.os }}-${{ matrix.python-version }}.txt
cat all-deps-${{ runner.os }}-${{ matrix.python-version }}.txt

- name: Upload dependencies list
uses: actions/upload-artifact@v6
with:
name: all-deps-${{ runner.os }}-${{ matrix.python-version }}
path: all-deps-${{ runner.os }}-${{ matrix.python-version }}.txt
retention-days: 7

docs-build:
name: Building Documentation
runs-on: ubuntu-latest
needs: [docs-style]

steps:
- name: Build documentation
uses: ansys/actions/doc-build@v10
with:
python-version: ${{ env.MAIN_PYTHON_VERSION }}
dependencies: "build-essential zip pandoc texlive-latex-extra latexmk texlive-pstricks"
skip-dependencies-cache: true
env:
GITHUB_TOKEN: ${{ secrets.PYANSYS_CI_BOT_TOKEN }}

doc-deploy-dev:
name: "Deploy development docs"
if: github.ref == 'refs/heads/main'
runs-on: ubuntu-latest
needs: [package]
steps:
- name: Deploy the latest documentation
uses: ansys/actions/doc-deploy-dev@v10
with:
cname: ${{ env.DOCUMENTATION_CNAME }}
token: ${{ secrets.PYANSYS_CI_BOT_TOKEN }}
bot-user: ${{ secrets.PYANSYS_CI_BOT_USERNAME }}
bot-email: ${{ secrets.PYANSYS_CI_BOT_EMAIL }}

adapt-landing-page-dev:
uses: ./.github/workflows/update-gh-pages.yml
needs: [doc-deploy-dev]
secrets: inherit

package:
name: Package library
runs-on: ubuntu-latest
needs: [docs-build, smoke-tests-core]
steps:
- name: Build library source and wheel artifacts
uses: ansys/actions/build-library@v10
with:
library-name: ${{ env.PACKAGE_NAME }}
python-version: ${{ env.MAIN_PYTHON_VERSION }}

doc-deploy-pr:
name: "Deploy PR documentation"
runs-on: ubuntu-latest
needs: [docs-build]
steps:
- uses: ansys/actions/doc-deploy-pr@v10
with:
cname: ${{ env.DOCUMENTATION_CNAME }}
token: ${{ secrets.PYANSYS_CI_BOT_TOKEN }}
bot-user: ${{ secrets.PYANSYS_CI_BOT_USERNAME }}
bot-email: ${{ secrets.PYANSYS_CI_BOT_EMAIL }}
maximum-pr-doc-deployments: 20

release:
name: Release project
if: github.event_name == 'push' && contains(github.ref, 'refs/tags')
needs: [package, smoke-tests-extras, wheelhouse-all]
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- name: Release to PyPI repository
uses: ansys/actions/release-pypi-public@v10
with:
library-name: ${{ env.PACKAGE_NAME }}
twine-username: __token__
twine-token: ${{ secrets.PYPI_TOKEN }}

- name: Release to GitHub
uses: ansys/actions/release-github@v10
with:
library-name: ${{ env.PACKAGE_NAME }}
additional-artifacts: 'all-deps-Linux-3.10 all-deps-Linux-3.11 all-deps-Linux-3.12 all-deps-Linux-3.13 all-deps-Windows-3.10 all-deps-Windows-3.11 all-deps-Windows-3.12 all-deps-Windows-3.13 all-deps-macOS-3.10 all-deps-macOS-3.11 all-deps-macOS-3.12 all-deps-macOS-3.13'
token: ${{ secrets.GITHUB_TOKEN }}

docs-release:
name: Deploy release docs
runs-on: ubuntu-latest
needs: [release]
steps:
- name: Deploy the latest release documentation
uses: ansys/actions/doc-deploy-stable@v10
with:
cname: ${{ env.DOCUMENTATION_CNAME }}
token: ${{ secrets.PYANSYS_CI_BOT_TOKEN }}
bot-user: ${{ secrets.PYANSYS_CI_BOT_USERNAME }}
bot-email: ${{ secrets.PYANSYS_CI_BOT_EMAIL }}

adapt-landing-page-release:
uses: ./.github/workflows/update-gh-pages.yml
needs: [docs-release]
secrets: inherit

automerge-prs:
name: Automerge PRs
runs-on: ubuntu-latest
needs: [package, wheelhouse-all]
if: github.event_name == 'pull_request'
permissions:
contents: write
pull-requests: write
steps:
- name: Automerge PRs
uses: ansys/actions/hk-automerge-prs@v10
with:
approver: ${{ secrets.PYANSYS_CI_BOT_USERNAME }}
approver-token: ${{ secrets.PYANSYS_CI_BOT_TOKEN }}