Skip to content

build: bump protobuf from 5.26.1 to 5.27.0 in the grpc-deps group (#1… #5850

build: bump protobuf from 5.26.1 to 5.27.0 in the grpc-deps group (#1…

build: bump protobuf from 5.26.1 to 5.27.0 in the grpc-deps group (#1… #5850

Workflow file for this run

name: GitHub CI
on:
pull_request:
workflow_dispatch:
push:
tags:
- "*"
branches:
- main
env:
MAIN_PYTHON_VERSION: '3.12'
PACKAGE_NAME: 'ansys-geometry-core'
DOCUMENTATION_CNAME: 'geometry.docs.pyansys.com'
ANSRV_GEO_IMAGE: 'ghcr.io/ansys/geometry'
ANSRV_GEO_IMAGE_WINDOWS_TAG: ghcr.io/ansys/geometry:windows-latest
ANSRV_GEO_PORT: 700
ANSRV_GEO_LICENSE_SERVER: ${{ secrets.LICENSE_SERVER }}
GEO_CONT_NAME: ans_geo
RESET_IMAGE_CACHE: 0
IS_WORKFLOW_RUNNING: True
ARTIFACTORY_VERSION: v242
MEILISEARCH_API_KEY: ${{ secrets.MEILISEARCH_API_KEY }}
MEILISEARCH_HOST_URL: ${{ vars.MEILISEARCH_HOST_URL }}
MEILISEARCH_PUBLIC_API_KEY: ${{ secrets.MEILISEARCH_PUBLIC_API_KEY }}
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
update-changelog:
name: "Update CHANGELOG (on release)"
if: github.event_name == 'push' && contains(github.ref, 'refs/tags')
runs-on: ubuntu-latest
permissions:
contents: write
pull-requests: write
steps:
- uses: ansys/actions/doc-deploy-changelog@v6
with:
token: ${{ secrets.PYANSYS_CI_BOT_TOKEN }}
vulnerabilities:
name: Vulnerabilities
runs-on: ubuntu-latest
steps:
- name: PyAnsys Vulnerability check (on main)
if: github.ref == 'refs/heads/main'
uses: ansys/actions/check-vulnerabilities@v6
with:
python-version: ${{ env.MAIN_PYTHON_VERSION }}
python-package-name: ${{ env.PACKAGE_NAME }}
token: ${{ secrets.PYANSYS_CI_BOT_TOKEN }}
- name: PyAnsys Vulnerability check (on dev mode)
if: github.ref != 'refs/heads/main'
uses: ansys/actions/check-vulnerabilities@v6
with:
python-version: ${{ env.MAIN_PYTHON_VERSION }}
python-package-name: ${{ env.PACKAGE_NAME }}
token: ${{ secrets.PYANSYS_CI_BOT_TOKEN }}
dev-mode: true
branch-name:
# Only if the event is a pull request and the branch name is not from the pre-commit-ci bot
if: github.event_name == 'pull_request' && github.head_ref != 'pre-commit-ci-update-config'
name: Check the name of the branch
runs-on: ubuntu-latest
steps:
- name: Check branch name
uses: ansys/actions/branch-name-style@v6
commit-name:
if: github.event_name == 'pull_request'
name: Check the name of the commit
runs-on: ubuntu-latest
steps:
- name: Check commit name
uses: ansys/actions/commit-style@v6
with:
token: ${{ secrets.GITHUB_TOKEN }}
docs-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 }}
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
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 }}
docker-style:
name: Docker Style Check
runs-on: ubuntu-latest
steps:
- name: PyAnsys documentation style checks
uses: ansys/actions/docker-style@v6
with:
directory: docker
recursive: true
# =================================================================================================
# vvvvvvvvvvvvvvvvvvvvvvvvvvvvvv RUNNING ON SELF-HOSTED RUNNER vvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
# =================================================================================================
testing-windows:
name: Testing and coverage (Windows)
needs: [smoke-tests]
runs-on: [self-hosted, Windows, pygeometry]
continue-on-error: ${{ matrix.experimental }}
env:
SKIP_UNSTABLE: ${{ vars.SKIP_UNSTABLE_CONTAINERS_TEMPORARILY == 1 && matrix.experimental }}
strategy:
fail-fast: false
matrix:
include:
- docker-image: "windows-latest"
experimental: false
- docker-image: "windows-latest-unstable"
experimental: true
steps:
- uses: actions/checkout@v4
if: env.SKIP_UNSTABLE == 'false'
- name: Set up Python
if: env.SKIP_UNSTABLE == 'false'
uses: actions/setup-python@v5
with:
python-version: ${{ env.MAIN_PYTHON_VERSION }}
- name: Set up headless display
if: env.SKIP_UNSTABLE == 'false'
uses: pyvista/setup-headless-display-action@v2
- name: Create Python venv
if: env.SKIP_UNSTABLE == 'false'
run: |
python -m venv .venv
.\.venv\Scripts\Activate.ps1
- name: Install packages for testing
if: env.SKIP_UNSTABLE == 'false'
run: |
.\.venv\Scripts\Activate.ps1
python -m pip install --upgrade pip
pip install --upgrade build wheel
pip install .[tests]
- name: Login to GitHub Container Registry
if: env.SKIP_UNSTABLE == 'false'
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Download Geometry service container (if needed)
if: env.SKIP_UNSTABLE == 'false'
run: docker pull ${{ env.ANSRV_GEO_IMAGE }}:${{ matrix.docker-image }}
- name: Check location of self-hosted runner and define license server accordingly
if: env.SKIP_UNSTABLE == 'false' && (runner.name == 'pygeometry-ci-1' || runner.name == 'pygeometry-ci-2')
run:
echo "ANSRV_GEO_LICENSE_SERVER=${{ secrets.INTERNAL_LICENSE_SERVER }}" | Out-File -FilePath $env:GITHUB_ENV -Append
- name: Start Geometry service and verify start
if: env.SKIP_UNSTABLE == 'false'
run: |
.\.venv\Scripts\Activate.ps1
docker run --detach --name ${{ env.GEO_CONT_NAME }} -e LICENSE_SERVER=${{ env.ANSRV_GEO_LICENSE_SERVER }} -p ${{ env.ANSRV_GEO_PORT }}:50051 ${{ env.ANSRV_GEO_IMAGE }}:${{ matrix.docker-image }}
python -c "from ansys.geometry.core.connection.validate import validate; validate()"
- name: Restore images cache
if: env.SKIP_UNSTABLE == 'false'
uses: actions/cache@v4
with:
path: .\tests\integration\image_cache
key: pyvista-image-cache-${{ runner.name }}-v-${{ env.RESET_IMAGE_CACHE }}-${{ hashFiles('pyproject.toml') }}
restore-keys: pyvista-image-cache-${{ runner.name }}-v-${{ env.RESET_IMAGE_CACHE }}
- name: Testing
if: env.SKIP_UNSTABLE == 'false'
run: |
.\.venv\Scripts\Activate.ps1
pytest -v
- name: Upload integration test logs
if: always()
uses: actions/upload-artifact@v4
with:
name: integration-test-logs-${{ matrix.docker-image }}
path: tests/integration/logs
retention-days: 7
- name: Upload PyVista generated images (cache and results)
if: always()
uses: actions/upload-artifact@v4
with:
name: pytest-pyvista-images-${{ matrix.docker-image }}
path: tests/integration/image_cache
retention-days: 7
- name: Upload Coverage Results
if: always()
uses: actions/upload-artifact@v4
with:
name: coverage-html-${{ matrix.docker-image }}
path: .cov/html
retention-days: 7
- name: Upload coverage to Codecov
uses: codecov/codecov-action@v4
if: matrix.docker-image == 'windows-latest'
env:
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
with:
files: .cov/xml
- name: Stop the Geometry service
if: always()
run: |
if ( $env:SKIP_UNSTABLE -match 'false')
{
docker stop $env:GEO_CONT_NAME
docker logs $env:GEO_CONT_NAME
docker rm $env:GEO_CONT_NAME
}
- name: Stop any remaining containers
if: always()
run: |
$dockerContainers = docker ps -a -q
if (-not [string]::IsNullOrEmpty($dockerContainers)) {
docker stop $dockerContainers
docker rm $dockerContainers
}
docs:
name: Documentation
needs: [docs-style]
runs-on: [self-hosted, Windows, pygeometry]
steps:
- uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: ${{ env.MAIN_PYTHON_VERSION }}
- name: Set up headless display
uses: pyvista/setup-headless-display-action@v2
- name: Create Python venv
run: |
python -m venv .venv
.\.venv\Scripts\Activate.ps1
- name: Install packages for documentation build
run: |
.\.venv\Scripts\Activate.ps1
python -m pip install --upgrade pip
pip install --upgrade build wheel
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: Download Geometry service container (if needed)
run: docker pull $env:ANSRV_GEO_IMAGE_WINDOWS_TAG
- name: Check location of self-hosted runner and define license server accordingly
if: runner.name == 'pygeometry-ci-1' || runner.name == 'pygeometry-ci-2'
run:
echo "ANSRV_GEO_LICENSE_SERVER=${{ secrets.INTERNAL_LICENSE_SERVER }}" | Out-File -FilePath $env:GITHUB_ENV -Append
- name: Start Geometry service and verify start
run: |
.\.venv\Scripts\Activate.ps1
docker run --detach --name ${{ env.GEO_CONT_NAME }} -e LICENSE_SERVER=${{ env.ANSRV_GEO_LICENSE_SERVER }} -p ${{ env.ANSRV_GEO_PORT }}:50051 ${{ env.ANSRV_GEO_IMAGE_WINDOWS_TAG }}
python -c "from ansys.geometry.core.connection.validate import validate; validate()"
- name: Build the documentation (HTML)
run: |
.\.venv\Scripts\Activate.ps1
cd doc
.\make.bat html
- name: Build the documentation (PDF)
run: |
.\.venv\Scripts\Activate.ps1
cd doc
.\make.bat pdf
- name: Add assets to HTML docs
run: |
zip -r documentation-html.zip .\doc\_build\html
mv documentation-html.zip .\doc\_build\html\_static\assets\download\
cp doc/_build/latex/ansys-geometry-core.pdf .\doc\_build\html\_static\assets\download\
- 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/ansys-geometry-core*.pdf
retention-days: 7
- name: Stop the Geometry service
if: always()
run: |
docker stop $env:GEO_CONT_NAME
docker logs $env:GEO_CONT_NAME
docker rm $env:GEO_CONT_NAME
- name: Stop any remaining containers
if: always()
run: |
$dockerContainers = docker ps -a -q
if (-not [string]::IsNullOrEmpty($dockerContainers)) {
docker stop $dockerContainers
docker rm $dockerContainers
}
# =================================================================================================
# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ RUNNING ON SELF-HOSTED RUNNER ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
# =================================================================================================
testing-linux:
name: Testing and coverage (Linux)
needs: [smoke-tests]
runs-on: ubuntu-latest
continue-on-error: ${{ matrix.experimental }}
env:
SKIP_UNSTABLE: ${{ vars.SKIP_UNSTABLE_CONTAINERS_TEMPORARILY == 1 && matrix.experimental }}
strategy:
fail-fast: false
matrix:
include:
- docker-image: "linux-latest"
experimental: false
- docker-image: "linux-latest-unstable"
experimental: true
steps:
- name: Login in Github Container registry
if: env.SKIP_UNSTABLE == 'false'
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Pull and launch geometry service
if: env.SKIP_UNSTABLE == 'false'
run: |
docker pull ${{ env.ANSRV_GEO_IMAGE }}:${{ matrix.docker-image }}
docker run --detach --name ${{ env.GEO_CONT_NAME }} -e LICENSE_SERVER=${{ env.ANSRV_GEO_LICENSE_SERVER }} -p ${{ env.ANSRV_GEO_PORT }}:50051 ${{ env.ANSRV_GEO_IMAGE }}:${{ matrix.docker-image }}
- name: Checkout repository
if: env.SKIP_UNSTABLE == 'false'
uses: actions/checkout@v4
- name: Restore images cache
if: env.SKIP_UNSTABLE == 'false'
uses: actions/cache@v4
with:
path: tests/integration/image_cache
key: pyvista-image-cache-${{ runner.os }}-v-${{ env.RESET_IMAGE_CACHE }}-${{ hashFiles('pyproject.toml') }}
restore-keys: pyvista-image-cache-${{ runner.os }}-v-${{ env.RESET_IMAGE_CACHE }}
- name: Run pytest
if: env.SKIP_UNSTABLE == 'false'
uses: ansys/actions/tests-pytest@v6
env:
ALLOW_PLOTTING: true
with:
python-version: ${{ env.MAIN_PYTHON_VERSION }}
checkout: false
- name: Upload integration test logs
if: always()
uses: actions/upload-artifact@v4
with:
name: integration-test-logs-${{ matrix.docker-image }}
path: tests/integration/logs
retention-days: 7
- name: Upload PyVista generated images (cache and results)
if: always()
uses: actions/upload-artifact@v4
with:
name: pytest-pyvista-images-${{ matrix.docker-image }}
path: tests/integration/image_cache
retention-days: 7
- name: Stop the Geometry service
if: always()
run: |
if [[ ${{ env.SKIP_UNSTABLE }} == 'false' ]];
then
docker stop ${{ env.GEO_CONT_NAME }}
docker logs ${{ env.GEO_CONT_NAME }}
docker rm ${{ env.GEO_CONT_NAME }}
fi
testing-min-reqs:
name: Testing with minimum requirements
needs: [smoke-tests]
runs-on: ubuntu-latest
env:
ANSRV_GEO_IMAGE_MINREQS: 'ghcr.io/ansys/geometry:linux-latest'
strategy:
fail-fast: false
matrix:
python-version: ['3.9', '3.10', '3.11', '3.12']
steps:
- name: Login in Github Container registry
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Pull and launch geometry service
run: |
docker pull ${{ env.ANSRV_GEO_IMAGE_MINREQS }}
docker run --detach --name ${{ env.GEO_CONT_NAME }} -e LICENSE_SERVER=${{ env.ANSRV_GEO_LICENSE_SERVER }} -p ${{ env.ANSRV_GEO_PORT }}:50051 ${{ env.ANSRV_GEO_IMAGE_MINREQS }}
- name: Checkout repository
uses: actions/checkout@v4
- name: Setup Python ${{ matrix.python-version }}
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
- name: Install minimum requirements
run: |
python -m pip install --upgrade pip
pip install -e .[all,tests-minimal]
pip install pytest
- name: Run pytest
run: |
pytest -v
- name: Stop the Geometry service
if: always()
run: |
docker stop ${{ env.GEO_CONT_NAME }}
docker logs ${{ env.GEO_CONT_NAME }}
docker rm ${{ env.GEO_CONT_NAME }}
package:
name: Package library
needs: [testing-windows, testing-linux, testing-min-reqs, docs]
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 }}
# =================================================================================================
# vvvvvvvvvvvvvvvvvvvvvvvvvvvvvv RUNNING ON SELF-HOSTED RUNNER vvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
# =================================================================================================
fetch-release-artifacts:
name: Fetch release artifacts
needs: [testing-windows, testing-linux, docs]
if: github.event_name == 'push' && contains(github.ref, 'refs/tags')
runs-on:
group: ansys-network
labels: [self-hosted, Windows, signtool]
env:
REUSE_LAST_ARTIFACTS: ${{ vars.REUSE_LAST_ARTIFACTS == 1 }}
steps:
- name: Check out repository pyansys-geometry-binaries
uses: actions/checkout@v4
with:
repository: 'ansys/pyansys-geometry-binaries'
token: ${{ secrets.BINARIES_TOKEN }}
- name: Download binaries (if conditions met)
if: env.REUSE_LAST_ARTIFACTS == 'false'
run: |
curl.exe -X GET -H "X-JFrog-Art-Api: ${{ secrets.ARTIFACTORY_KEY }}" ${{ secrets.ARTIFACTORY_URL }}/${{ env.ARTIFACTORY_VERSION }}/DockerWindows.zip --output windows-binaries.zip
curl.exe -X GET -H "X-JFrog-Art-Api: ${{ secrets.ARTIFACTORY_KEY }}" ${{ secrets.ARTIFACTORY_URL }}/${{ env.ARTIFACTORY_VERSION }}/DockerLinux.zip --output linux-binaries.zip
- name: Reuse last binaries (if conditions met)
if: env.REUSE_LAST_ARTIFACTS == 'true'
env:
VERSION_WITH_PREFIX: ${{ github.ref_name }}
run: |
# We are on a Windows machine. We need to copy the binaries from the previous tag,
# based on the current tag. We will also remove the trailing "v" from the tag. This will give
# us the folder from where we need to copy the binaries.
$env:VERSION=$env:VERSION_WITH_PREFIX.substring(1)
$env:PREVIOUS_VERSION=$env:VERSION.substring(0, $env:VERSION.Length - 1)
$env:PREVIOUS_PATCH_VERSION_NUMBER=$env:VERSION.substring($env:VERSION.Length - 1)
$env:PREVIOUS_PATCH_VERSION_NUMBER=[int]$env:PREVIOUS_PATCH_VERSION_NUMBER - 1
$env:PREVIOUS_VERSION=$env:PREVIOUS_VERSION + $env:PREVIOUS_PATCH_VERSION_NUMBER
cp ./$env:PREVIOUS_VERSION/windows-binaries.zip windows-binaries.zip
cp ./$env:PREVIOUS_VERSION/linux-binaries.zip linux-binaries.zip
- name: Upload Windows binaries as workflow artifacts
uses: actions/upload-artifact@v4
with:
name: windows-binaries.zip
path: windows-binaries.zip
retention-days: 1
- name: Upload Linux binaries as workflow artifacts
uses: actions/upload-artifact@v4
with:
name: linux-binaries.zip
path: linux-binaries.zip
retention-days: 1
- name: Publish the binaries to private repo
env:
VERSION_WITH_PREFIX: ${{ github.ref_name }}
run: |
$env:VERSION=$env:VERSION_WITH_PREFIX.substring(1)
mkdir $env:VERSION -ErrorAction SilentlyContinue
Remove-Item -Recurse -Force .\$env:VERSION\*
mv windows-binaries.zip .\$env:VERSION\
mv linux-binaries.zip .\$env:VERSION\
git config user.email ${{ secrets.BINARIES_EMAIL }}
git config user.name ${{ secrets.BINARIES_USERNAME }}
git add *
git commit -m "adding binaries for ${{ github.ref_name }}"
git push origin main
build-windows-container:
name: Building Geometry Service - Windows
runs-on: [self-hosted, Windows, pygeometry]
needs: [fetch-release-artifacts]
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: ${{ env.MAIN_PYTHON_VERSION }}
- name: Download Windows binaries
uses: actions/download-artifact@v4
with:
name: windows-binaries.zip
path: docker/windows-binaries.zip
- name: Build Docker image
working-directory: docker
run: |
docker build -f windows/Dockerfile -t ghcr.io/ansys/geometry:windows-latest-tmp .
- name: Check location of self-hosted runner and define license server accordingly
if: runner.name == 'pygeometry-ci-1' || runner.name == 'pygeometry-ci-2'
run:
echo "ANSRV_GEO_LICENSE_SERVER=${{ secrets.INTERNAL_LICENSE_SERVER }}" | Out-File -FilePath $env:GITHUB_ENV -Append
- name: Launch Geometry service
run: |
docker run --detach --name ${{ env.GEO_CONT_NAME }} -e LICENSE_SERVER=${{ env.ANSRV_GEO_LICENSE_SERVER }} -p ${{ env.ANSRV_GEO_PORT }}:50051 ghcr.io/ansys/geometry:windows-latest-tmp
- name: Validate connection using PyAnsys Geometry
run: |
python -m venv .venv
.\.venv\Scripts\Activate.ps1
python -m pip install --upgrade pip
pip install -e .[tests]
python -c "from ansys.geometry.core.connection.validate import validate; validate()"
- name: Restore images cache
uses: actions/cache@v4
with:
path: .\tests\integration\image_cache
key: pyvista-image-cache-${{ runner.os }}-v-${{ env.RESET_IMAGE_CACHE }}-${{ hashFiles('pyproject.toml') }}
restore-keys: pyvista-image-cache-${{ runner.os }}-v-${{ env.RESET_IMAGE_CACHE }}
- name: Testing
run: |
.\.venv\Scripts\Activate.ps1
pytest -v --use-existing-service=yes
- name: "Compressing Windows Dockerfile"
uses: vimtor/action-zip@v1.2
with:
files: docker/windows/Dockerfile
dest: windows-dockerfile.zip
- name: Upload Windows Dockerfile
uses: actions/upload-artifact@v4
with:
name: windows-dockerfile.zip
path: windows-dockerfile.zip
retention-days: 7
- name: Stop the Geometry service
if: always()
run: |
docker stop ${{ env.GEO_CONT_NAME }}
docker logs ${{ env.GEO_CONT_NAME }}
docker rm ${{ env.GEO_CONT_NAME }}
- name: Stop any remaining containers
if: always()
run: |
$dockerContainers = docker ps -a -q
if (-not [string]::IsNullOrEmpty($dockerContainers)) {
docker stop $dockerContainers
docker rm $dockerContainers
}
- name: Delete the Docker images (and untagged ones)
if: always()
run: |
docker image rm ghcr.io/ansys/geometry:windows-latest-tmp
docker system prune -f
# =================================================================================================
# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ RUNNING ON SELF-HOSTED RUNNER ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
# =================================================================================================
build-linux-container:
name: Building Geometry Service - Linux
runs-on: ubuntu-latest
needs: [fetch-release-artifacts]
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: ${{ env.MAIN_PYTHON_VERSION }}
- name: Download Linux binaries
uses: actions/download-artifact@v4
with:
name: linux-binaries.zip
path: docker/linux-binaries.zip
- name: Build Docker image
working-directory: docker
run: |
docker build -f linux/Dockerfile -t ghcr.io/ansys/geometry:linux-latest-tmp .
- name: Launch Geometry service
run: |
docker run --detach --name ${{ env.GEO_CONT_NAME }} -e LICENSE_SERVER=${{ env.ANSRV_GEO_LICENSE_SERVER }} -p ${{ env.ANSRV_GEO_PORT }}:50051 ghcr.io/ansys/geometry:linux-latest-tmp
- name: Validate connection using PyAnsys Geometry
run: |
python -m pip install --upgrade pip
pip install -e .[tests]
python -c "from ansys.geometry.core.connection.validate import validate; validate()"
- name: Restore images cache
uses: actions/cache@v4
with:
path: .\tests\integration\image_cache
key: pyvista-image-cache-${{ runner.os }}-v-${{ env.RESET_IMAGE_CACHE }}-${{ hashFiles('pyproject.toml') }}
restore-keys: pyvista-image-cache-${{ runner.os }}-v-${{ env.RESET_IMAGE_CACHE }}
- name: Run pytest
uses: ansys/actions/tests-pytest@v6
env:
ALLOW_PLOTTING: true
with:
python-version: ${{ env.MAIN_PYTHON_VERSION }}
pytest-extra-args: "--use-existing-service=yes"
checkout: false
requires-xvfb: true
- name: "Compressing Linux Dockerfile"
uses: vimtor/action-zip@v1.2
with:
files: docker/linux/Dockerfile
dest: linux-dockerfile.zip
- name: Upload Linux Dockerfile
uses: actions/upload-artifact@v4
with:
name: linux-dockerfile.zip
path: linux-dockerfile.zip
retention-days: 7
- name: Stop the Geometry service
if: always()
run: |
docker stop ${{ env.GEO_CONT_NAME }}
docker logs ${{ env.GEO_CONT_NAME }}
docker rm ${{ env.GEO_CONT_NAME }}
release:
name: Release project
if: github.event_name == 'push' && contains(github.ref, 'refs/tags')
needs: [package, build-windows-container, build-linux-container, update-changelog]
runs-on: ubuntu-latest
# Specifying a GitHub environment is optional, but strongly encouraged
environment: release
permissions:
id-token: write
contents: write
steps:
- name: Release to the public PyPI repository
uses: ansys/actions/release-pypi-public@v6
with:
library-name: ${{ env.PACKAGE_NAME }}
use-trusted-publisher: true
- name: Release to GitHub
uses: ansys/actions/release-github@v6
with:
library-name: ${{ env.PACKAGE_NAME }}
additional-artifacts: windows-dockerfile.zip linux-dockerfile.zip
upload_dev_docs:
name: Upload 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:
cname: ${{ env.DOCUMENTATION_CNAME }}
token: ${{ secrets.GITHUB_TOKEN }}
doc-index-dev:
name: "Deploy dev index docs"
if: github.ref == 'refs/heads/main'
runs-on: ubuntu-latest
needs: upload_dev_docs
steps:
- name: "Deploy the latest documentation index"
uses: ansys/actions/doc-deploy-index@v6
with:
cname: ${{ env.DOCUMENTATION_CNAME }}/version/dev
index-name: pyansys-geometry-vdev
host-url: ${{ env.MEILISEARCH_HOST_URL }}
api-key: ${{ env.MEILISEARCH_API_KEY }}
python-version: ${{ env.MAIN_PYTHON_VERSION }}
upload_docs_release:
name: Upload release documentation
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@v6
with:
cname: ${{ env.DOCUMENTATION_CNAME }}
token: ${{ secrets.GITHUB_TOKEN }}
doc-index-stable:
name: "Deploy stable docs index"
runs-on: ubuntu-latest
needs: upload_docs_release
steps:
- name: "Install Git and clone project"
uses: actions/checkout@v4
- name: "Install the package requirements"
run: pip install -e .
- name: "Get the version to PyMeilisearch"
run: |
VERSION=$(python -c "from ansys.geometry.core import __version__; print('.'.join(__version__.split('.')[:2]))")
VERSION_MEILI=$(python -c "from ansys.geometry.core 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@v6
with:
cname: ${{ env.DOCUMENTATION_CNAME }}/version/${{ env.VERSION }}
index-name: pyansys-geometry-v${{ env.VERSION_MEILI }}
host-url: ${{ env.MEILISEARCH_HOST_URL }}
api-key: ${{ env.MEILISEARCH_API_KEY }}
python-version: ${{ env.MAIN_PYTHON_VERSION }}