Skip to content

Add "run" library to pydyna #1604

Add "run" library to pydyna

Add "run" library to pydyna #1604

Workflow file for this run

name: CI
on:
pull_request:
workflow_dispatch:
push:
tags:
- "*"
branches:
- main
env:
MAIN_PYTHON_VERSION: '3.10'
PACKAGE_NAME: 'ansys-dyna-core'
PACKAGE_NAMESPACE: 'ansys.dyna.core'
DOCUMENTATION_CNAME: "dyna.docs.pyansys.com"
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@v8
with:
python-version: ${{ env.MAIN_PYTHON_VERSION }}
doc-style:
name: "Documentation style"
runs-on: ubuntu-latest
steps:
- name: PyAnsys documentation style checks
uses: ansys/actions/doc-style@v8
with:
token: ${{ secrets.GITHUB_TOKEN }}
doc:
name: "Documentation build"
runs-on: ubuntu-latest
needs: [doc-style]
steps:
- name: "Checkout project"
uses: actions/checkout@v4
- name: "Set up Python ${{ env.MAIN_PYTHON_VERSION }}"
uses: actions/setup-python@v5
with:
python-version: ${{ env.MAIN_PYTHON_VERSION }}
cache: 'pip'
cache-dependency-path: 'pyproject.toml'
- name: "Install system dependencies"
run: |
sudo apt-get update
sudo apt-get install xvfb pandoc texlive-latex-extra latexmk
- name: "Install python dependencies"
run: |
python -m pip install .[doc]
- name: "Login to GitHub container registry"
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: "Install and run DPF server"
run: |
docker pull ghcr.io/ansys/dpf-core:22.2dev
docker run -d --name dpfserver -p 50054:50052 ghcr.io/ansys/dpf-core:22.2dev && echo "DPF Server active on port 50054."
- name: LS-DYNA Keyword server activation
run: |
docker pull ghcr.io/ansys/ls-pre:latest
docker run -d --name kw_server -p 50051:50051 ghcr.io/ansys/ls-pre:latest && echo "Keyword server active on port 50051."
- name: "Build the html documentation"
run: |
xvfb-run make -C doc html
- name: "Build the pdf documentation"
run: |
make -C doc pdf
- name: "Upload html documentation"
uses: actions/upload-artifact@v4
with:
name: documentation-html
path: doc/_build/html
retention-days: 7
- name: "Upload pdf documentation"
uses: actions/upload-artifact@v4
with:
name: documentation-pdf
path: doc/_build/latex/*.pdf
retention-days: 7
- name: Extract the server logs
if: always()
run: |
docker logs kw_server > server_output.txt
- name: "Upload the server logs"
if: always()
uses: actions/upload-artifact@v4
with:
name: server_output_docs.txt
path: server_output.txt
- name: DPF Logs (on screen)
if: always()
run: |
docker logs dpfserver
docker stop dpfserver
smoke-tests:
name: "Build wheelhouse for ${{ matrix.os }} and Python ${{ matrix.python-version }}"
runs-on: ${{ matrix.os }}
needs: [code-style]
strategy:
fail-fast: false
matrix:
os: [windows-latest, ubuntu-latest]
python-version: ['3.9', '3.10', '3.11', '3.12']
steps:
- uses: ansys/actions/build-wheelhouse@v8
with:
library-name: ${{ env.PACKAGE_NAME }}
operating-system: ${{ matrix.os }}
python-version: ${{ matrix.python-version }}
tests:
name: "Testing"
runs-on: ubuntu-latest
needs: [smoke-tests]
steps:
- name: "Checkout repository"
uses: actions/checkout@v4
- name: "Set up Python"
uses: actions/setup-python@v5
with:
python-version: ${{ env.MAIN_PYTHON_VERSION }}
cache: 'pip'
cache-dependency-path: 'pyproject.toml'
- name: "Login to GitHub container registry"
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: "Pull and start LS-DYNA keyword server"
run: |
docker pull ghcr.io/ansys/ls-pre:latest
docker run -d --name kw_server -p 50051:50051 ghcr.io/ansys/ls-pre:latest && echo "Keyword server active on port 50051."
- name: "Install package dependencies"
run: |
pip install -e .[tests]
- name: "Run tests"
run: |
pytest
- name: "Extract the server logs"
if: always()
run: |
docker logs kw_server > server_output.txt
- name: "Upload the server logs"
if: always()
uses: actions/upload-artifact@v4
with:
name: server_output_tests.txt
path: server_output.txt
- name: "Upload coverage results"
uses: actions/upload-artifact@v4
with:
name: coverage-html
path: .cov/html
retention-days: 7
run-testing:
name: Test the "run" subpackage
runs-on: ubuntu-latest
needs: [code-style]
container:
image: ghcr.io/ansys/mechanical:24.1.0
options: --entrypoint /bin/bash
steps:
- uses: actions/checkout@v4
- name: Install dependencies
run: |
apt update
apt install --reinstall ca-certificates
apt install software-properties-common git -y
add-apt-repository ppa:deadsnakes/ppa -y
apt install python3.11 python3.11-venv -y
python3.11 -m ensurepip --default-pip
python3.11 -m pip install --upgrade pip
python3.11 -m venv /env
- name: Install library
run: |
. /env/bin/activate
pip install .[tests]
- name: Unit testing
env:
ANSYSLI_SERVERS: 2325@${{secrets.LICENSE_SERVER}}
ANSYSLMD_LICENSE_FILE: 1055@${{secrets.LICENSE_SERVER}}
LSTC_LICENSE: ansys
run: |
. /env/bin/activate
save-ansys-path --name dyna /install/ansys_inc/v241/ansys/bin/linx64/lsdyna_dp.e
pytest -m run
build-library:
name: "Build library"
needs: [doc, tests, run-testing]
runs-on: ubuntu-latest
steps:
- uses: ansys/actions/build-library@v8
with:
library-name: ${{ env.PACKAGE_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 public PyPI repository"
uses: ansys/actions/release-pypi-public@v8
with:
library-name: ${{ env.PACKAGE_NAME }}
twine-username: "__token__"
twine-token: ${{ secrets.PYPI_TOKEN }}
- name: "Release to GitHub"
uses: ansys/actions/release-github@v8
with:
library-name: ${{ env.PACKAGE_NAME }}
doc-deploy-dev:
name: "Deploy development documentation"
if: github.ref == 'refs/heads/main'
runs-on: ubuntu-latest
needs: [build-library]
steps:
- uses: ansys/actions/doc-deploy-dev@v8
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 }}
doc-deploy-stable:
name: "Deploy stable documentation"
if: github.event_name == 'push' && contains(github.ref, 'refs/tags')
runs-on: ubuntu-latest
needs: [release]
steps:
- uses: ansys/actions/doc-deploy-stable@v8
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 }}