Skip to content

Fdeleonm branch

Fdeleonm branch #855

Workflow file for this run

name: CI
on:
pull_request:
workflow_dispatch:
push:
tags:
- "*"
branches:
- main
env:
MAIN_PYTHON_VERSION: '3.9'
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@v4
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@v4
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@v4
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@v2
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@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: 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@v3
with:
name: server_output.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.8', '3.9', '3.10', '3.11']
steps:
- uses: ansys/actions/build-wheelhouse@v4
with:
library-name: ${{ env.PACKAGE_NAME }}
library-namespace: ${{ env.PACKAGE_NAMESPACE }}
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@v4
with:
python-version: ${{ env.MAIN_PYTHON_VERSION }}
cache: 'pip'
cache-dependency-path: 'pyproject.toml'
- name: "Login to GitHub container registry"
uses: docker/login-action@v2
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@v3
with:
name: server_output.txt
path: server_output.txt
- name: "Upload coverage results"
uses: actions/upload-artifact@v3
with:
name: coverage-html
path: .cov/html
retention-days: 7
build-library:
name: "Build library"
needs: [doc, tests]
runs-on: ubuntu-latest
steps:
- uses: ansys/actions/build-library@v4
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@v4
with:
library-name: ${{ env.PACKAGE_NAME }}
twine-username: "__token__"
twine-token: ${{ secrets.PYPI_TOKEN }}
- name: "Release to GitHub"
uses: ansys/actions/release-github@v4
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@v4
with:
cname: ${{ env.DOCUMENTATION_CNAME }}
token: ${{ secrets.GITHUB_TOKEN }}
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@v4
with:
cname: ${{ env.DOCUMENTATION_CNAME }}
token: ${{ secrets.GITHUB_TOKEN }}
python-version: ${{ env.MAIN_PYTHON_VERSION }}