Skip to content

Expose task commands #1194

Expose task commands

Expose task commands #1194

Workflow file for this run

name: GitHub CI
on:
workflow_dispatch:
inputs:
hps-version:
description: HPS version to test against
default: 'latest-dev'
type: choice
options:
- 'v1.0.2'
- 'v1.0.3'
- 'latest-dev'
pull_request:
push:
tags:
- "*"
branches:
- main
env:
MAIN_PYTHON_VERSION: '3.10'
DOCUMENTATION_CNAME: 'hps.docs.pyansys.com'
PACKAGE_NAME: 'ansys-hps-client'
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
permissions:
contents: write
checks: write
jobs:
doc-style:
name: Documentation Style Check
runs-on: ubuntu-latest
steps:
- name: PyAnsys documentation style checks
uses: ansys/actions/doc-style@v6
with:
token: ${{ secrets.GITHUB_TOKEN }}
tests:
strategy:
matrix:
os: ['ubuntu-latest']
cfg: [
{ python-version: '3.10', toxenv: 'py310' },
]
fail-fast: false
uses: ./.github/workflows/tests.yml
secrets: inherit
with:
python-version: ${{ matrix.cfg.python-version }}
toxenv: ${{ matrix.cfg.toxenv }}
runner: ${{ matrix.os }}
hps-version: ${{ inputs.hps-version || 'latest-dev' }}
docs:
name: Documentation
runs-on: ubuntu-latest
needs: [doc-style]
steps:
- uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: ${{ env.MAIN_PYTHON_VERSION }}
- name: Install dependencies
run: |
python -m pip install --upgrade pip setuptools tox
- name: Install OS dependencies
run: |
# Necessary for creating PDF
sudo apt update
sudo apt install latexmk texlive-latex-extra
- name: Generate the documentation with tox
run: tox -e doc
- 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
smoke-tests:
name: Build and Smoke tests
runs-on: ${{ matrix.os }}
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
- should-release: false
os: windows-latest
- should-release: false
python-version: '3.9'
- should-release: false
python-version: '3.11'
- should-release: false
python-version: '3.12'
steps:
- name: Build wheelhouse and perform smoke test
uses: ansys/actions/build-wheelhouse@v6
with:
library-name: ${{ env.PACKAGE_NAME }}
operating-system: ${{ matrix.os }}
python-version: ${{ matrix.python-version }}
package:
name: Package library
needs: [tests, docs, smoke-tests]
runs-on: ubuntu-latest
steps:
- name: Build library source and wheel artifacts
uses: ansys/actions/build-library@v6
with:
library-name: ${{ env.PACKAGE_NAME }}
python-version: ${{ env.MAIN_PYTHON_VERSION }}
library-version:
name: Get library version
runs-on: ubuntu-latest
outputs:
library_version: ${{ steps.version.outputs.library_version }}
steps:
- name: "Install Git and clone project"
uses: actions/checkout@v4
- name: "Set up Python ${{ env.MAIN_PYTHON_VERSION }}"
uses: ansys/actions/_setup-python@main
with:
python-version: ${{ env.MAIN_PYTHON_VERSION }}
use-cache: true
- name: "Install the library"
shell: bash
run: |
python -m pip install -e .
- name: "Verify library is properly installed and get its version number"
id: version
shell: bash
run: |
library_name=${{ env.PACKAGE_NAME }}
library_version=$(python -c "import importlib.metadata as importlib_metadata; print(importlib_metadata.version('$library_name'))")
if [ -z "$library_version" ]; then
echo "Problem getting the library version"
exit 1;
else
echo "The library version is: $library_version";
fi;
echo "library_version=$library_version" >> $GITHUB_OUTPUT
pre-release:
name: Pre-release project
if: startsWith(github.ref, 'refs/heads/main')
needs: [package, library-version]
runs-on: ubuntu-latest
steps:
- uses: actions/download-artifact@v4
with:
name: ansys-hps-client-artifacts
path: /tmp/artifacts
- name: List artifacts
run: ls -ltR /tmp/artifacts
- name: Release to latest-dev
uses: softprops/action-gh-release@v2
if: startsWith(github.ref, 'refs/heads/main')
with:
tag_name: "v${{ needs.library-version.outputs.library_version }}"
name: "v${{ needs.library-version.outputs.library_version }}"
prerelease: true
files: |
/tmp/artifacts/*.whl
upload_dev_docs:
name: "Deploy dev documentation"
if: github.ref == 'refs/heads/main'
runs-on: ubuntu-latest
needs: [package]
steps:
- name: Deploy the latest documentation
uses: ansys/actions/doc-deploy-dev@v6
with:
doc-artifact-name: 'documentation-html'
cname: ${{ env.DOCUMENTATION_CNAME }}
token: ${{ secrets.GITHUB_TOKEN }}
release:
name: Release project
if: github.event_name == 'push' && contains(github.ref, 'refs/tags')
needs: [package]
runs-on: ubuntu-latest
steps:
- name: Release to the public PyPI repository
uses: ansys/actions/release-pypi-public@v6
with:
library-name: ${{ env.PACKAGE_NAME }}
twine-username: "__token__"
twine-token: ${{ secrets.PYPI_TOKEN }}
- name: Release to GitHub
uses: ansys/actions/release-github@v6
with:
library-name: ${{ env.PACKAGE_NAME }}
doc-deploy-stable:
name: "Deploy stable documentation"
# Deploy release documentation when creating a new tag
if: github.event_name == 'push' && contains(github.ref, 'refs/tags')
runs-on: ubuntu-latest
needs: [release]
steps:
- uses: ansys/actions/doc-deploy-stable@v6
with:
doc-artifact-name: 'documentation-html'
cname: ${{ env.DOCUMENTATION_CNAME }}
token: ${{ secrets.GITHUB_TOKEN }}