Skip to content

feat: add protoc helper #1093

feat: add protoc helper

feat: add protoc helper #1093

Workflow file for this run

name: GitHub CI
on:
pull_request:
workflow_dispatch:
push:
tags:
- "*"
branches:
- main
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
env:
PACKAGE_NAME: pyansys
PACKAGE_NAMESPACE: pyansys
MAIN_PYTHON_VERSION: '3.11'
DOCUMENTATION_CNAME: "docs.pyansys.com"
MEILISEARCH_API_KEY: ${{ secrets.MEILISEARCH_API_KEY }}
MEILISEARCH_PUBLIC_API_KEY: ${{ secrets.MEILISEARCH_PUBLIC_API_KEY }}
jobs:
check-licenses:
name: Check depencencies' licenses
runs-on: ubuntu-latest
steps:
- name: PyAnsys Licenses Check
uses: ansys/actions/check-licenses@main
with:
python-version: ${{ env.MAIN_PYTHON_VERSION }}
target: "all"
docs-style:
name: Documentation Style Check
runs-on: ubuntu-latest
steps:
- name: PyAnsys documentation style checks
uses: ansys/actions/doc-style@v4
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.8', '3.9', '3.10', '3.11']
steps:
- uses: actions/checkout@v4
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v4
with:
python-version: ${{ matrix.python-version }}
cache: 'pip'
cache-dependency-path: 'pyproject.toml'
- name: Install core PyAnsys packages
run: |
pip install .
- name: Smoke test
run: python -c "from ${{ env.PACKAGE_NAMESPACE }} import __version__; print(__version__)"
smoke-tests-extras:
name: Build extras PyAnsys packages
runs-on: ${{ matrix.os }}
needs: [smoke-tests-core]
strategy:
fail-fast: false
matrix:
os: [windows-latest, ubuntu-latest]
python-version: ['3.8', '3.9', '3.10', '3.11']
extras-version: ['fluent-all', 'mapdl-all', 'tools']
steps:
- uses: actions/checkout@v4
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v4
with:
python-version: ${{ matrix.python-version }}
cache: 'pip'
cache-dependency-path: 'pyproject.toml'
- name: Install ${{ matrix.extras-version }} PyAnsys packages
run: |
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.8', '3.9', '3.10', '3.11']
steps:
- name: Build wheelhouse and perform smoke test
uses: ansys/actions/build-wheelhouse@v4
with:
library-name: ${{ env.PACKAGE_NAME }}
operating-system: ${{ runner.os }}
python-version: ${{ matrix.python-version }}
target: "all"
- name: List dependencies (pip freeze)
run: |
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@v3
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@v4
with:
python-version: ${{ env.MAIN_PYTHON_VERSION }}
dependencies: "build-essential zip pandoc texlive-latex-extra latexmk texlive-pstricks"
- name: Deploy the dev documentation
uses: ansys/actions/doc-deploy-dev@v4
if: github.ref == 'refs/heads/main'
with:
cname: ${{ env.DOCUMENTATION_CNAME }}
token: ${{ secrets.GITHUB_TOKEN }}
- name: "Deploy the dev documentation index"
uses: ansys/actions/doc-deploy-index@v4
if: github.ref == 'refs/heads/main'
with:
cname: ${{ env.DOCUMENTATION_CNAME }}/version/dev
index-name: "pyansys-vdev"
host-url: ${{ vars.MEILISEARCH_HOST_URL }}
api-key: ${{ env.MEILISEARCH_API_KEY }}
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@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: [package, smoke-tests-extras, wheelhouse-all]
runs-on: ubuntu-latest
steps:
- name: Release to 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 }}
additional-artifacts: 'all-deps-Linux-3.8 all-deps-Linux-3.9 all-deps-Linux-3.10 all-deps-Linux-3.11 all-deps-Windows-3.8 all-deps-Windows-3.9 all-deps-Windows-3.10 all-deps-Windows-3.11 all-deps-macOS-3.8 all-deps-macOS-3.9 all-deps-macOS-3.10 all-deps-macOS-3.11'
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@v4
with:
cname: ${{ env.DOCUMENTATION_CNAME }}
token: ${{ secrets.GITHUB_TOKEN }}
doc-index-release:
name: "Deploy release docs index"
runs-on: ubuntu-latest
needs: docs-release
steps:
- name: "Install Git and clone project"
uses: actions/checkout@v4
- name: "Install the library to get the version"
shell: bash
run: |
python -m pip install -e .
- name: "Get the version of the library"
run: |
VERSION=$(python -c "from ${{ env.PACKAGE_NAMESPACE }} import __version__; print('.'.join(__version__.split('.')[:2]))")
VERSION_MEILI=$(python -c "from ${{ env.PACKAGE_NAMESPACE }} import __version__; print('-'.join(__version__.split('.')[:2]))")
echo "Calculated VERSION: $VERSION"
echo "Calculated VERSION_MEILI: $VERSION_MEILI"
echo "VERSION=$VERSION" >> $GITHUB_ENV
echo "VERSION_MEILI=$VERSION_MEILI" >> $GITHUB_ENV
- name: "Deploy the latest documentation index"
uses: ansys/actions/doc-deploy-index@v4
with:
cname: ${{ env.DOCUMENTATION_CNAME }}/version/${{ env.VERSION }}
index-name: pyansys-v${{ env.VERSION_MEILI }}
host-url: ${{ vars.MEILISEARCH_HOST_URL }}
api-key: ${{ env.MEILISEARCH_API_KEY }}