additional coverage increase (#274) #1118
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: GitHub CI | |
# run only on main branch. This avoids duplicated actions on PRs | |
on: | |
workflow_dispatch: | |
pull_request: | |
push: | |
tags: | |
- "*" | |
branches: | |
- main | |
env: | |
DOCUMENTATION_CNAME: 'ensight.docs.pyansys.com' | |
MAIN_PYTHON_VERSION: '3.10' | |
PACKAGE_NAME: 'ansys-pyensight-core' | |
PACKAGE_NAMESPACE: 'ansys.pyensight.core' | |
ENSIGHT_IMAGE: 'ghcr.io/ansys-internal/ensight_dev' | |
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: "Doc style" | |
runs-on: ubuntu-latest | |
steps: | |
- uses: ansys/actions/doc-style@v4 | |
with: | |
token: ${{ secrets.GITHUB_TOKEN }} | |
smoke-tests: | |
name: "Wheelhouse for ${{ matrix.os }} and ${{ matrix.python-version }}" | |
runs-on: ${{ matrix.os }} | |
needs: code-style | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [ubuntu-latest, windows-latest, macos-latest] | |
python-version: ['3.8', '3.9', '3.10', '3.11'] | |
should-release: | |
- ${{ github.event_name == 'push' && contains(github.ref, 'refs/tags') }} | |
exclude: | |
- should-release: false | |
os: macos-latest | |
steps: | |
- name: Build wheelhouse and perform smoke test | |
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: "Test ${{ matrix.python-version }} with ${{ matrix.os }}" | |
needs: [smoke-tests] | |
runs-on: ${{ matrix.os }} | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [ubuntu-latest] | |
python-version: ['3.8', '3.9', '3.10', '3.11'] | |
steps: | |
- name: Login to GitHub Container Registry | |
uses: docker/login-action@v2 | |
with: | |
registry: ghcr.io | |
username: ${{ github.repository_owner }} | |
password: ${{ secrets.GITHUB_TOKEN }} | |
- name: docker | |
run: docker pull ${{ env.ENSIGHT_IMAGE }} | |
- name: Run pytest | |
uses: ansys/actions/tests-pytest@v4 | |
env: | |
ANSYSLMD_LICENSE_FILE: ${{ format('1055@{0}', secrets.LICENSE_SERVER) }} | |
with: | |
python-version: ${{ matrix.python-version }} | |
requires-xvfb: true | |
- uses: codecov/codecov-action@v3 | |
name: 'Upload coverage to CodeCov' | |
doc: | |
name: "Doc build" | |
runs-on: ubuntu-latest | |
needs: doc-style | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Login in Github Container registry | |
uses: docker/login-action@v2 | |
with: | |
registry: ghcr.io | |
username: ansys-bot | |
password: ${{ secrets.GITHUB_TOKEN }} | |
- name: Docker pull | |
run: docker pull ${{ env.ENSIGHT_IMAGE }} | |
- name: Run Ansys documentation building action | |
uses: ansys/actions/doc-build@v4 | |
env: | |
ANSYSLMD_LICENSE_FILE: ${{ format('1055@{0}', secrets.LICENSE_SERVER) }} | |
with: | |
sphinxopts: '-j auto' | |
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 }} | |
doc-deploy-dev: | |
name: "Deploy development documentation" | |
# Deploy development only when merging to main | |
if: github.ref == 'refs/heads/main' | |
needs: build-library | |
runs-on: ubuntu-latest | |
steps: | |
- name: "Deploy the latest documentation" | |
uses: ansys/actions/doc-deploy-dev@v4 | |
with: | |
cname: ${{ env.DOCUMENTATION_CNAME }} | |
token: ${{ secrets.GITHUB_TOKEN }} | |
release: | |
name: Release | |
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/v') | |
needs: build-library | |
runs-on: ubuntu-latest | |
steps: | |
# Upload first to the private PyPi, at least up until we release | |
- name: Release to the private PyPI repository | |
uses: ansys/actions/release-pypi-private@v4 | |
with: | |
library-name: ${{ env.PACKAGE_NAME }} | |
twine-token: ${{ secrets.PYANSYS_PYPI_PRIVATE_PAT }} | |
- 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-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: | |
- name: "Deploy the stable documentation" | |
uses: ansys/actions/doc-deploy-stable@v4 | |
with: | |
cname: ${{ env.DOCUMENTATION_CNAME }} | |
token: ${{ secrets.GITHUB_TOKEN }} | |
build-failure: | |
name: Teams notify on failure | |
if: failure() && (github.event_name == 'pull_request' || github.ref == 'refs/heads/main' || github.ref_type == 'tag') | |
needs: tests | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Microsoft Teams Notification | |
uses: jdcargile/ms-teams-notification@v1.3 | |
with: | |
github-token: ${{ github.token }} # this will use the runner's token. | |
ms-teams-webhook-uri: ${{ secrets.MS_TEAMS_WEBHOOK_URI }} | |
notification-summary: GitHub CI failure - ${{ github.event.pull_request.title }} | |
notification-color: dc3545 | |
timezone: America/New_York |