chore: update docker tags to be kept #4745
Workflow file for this run
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 | |
on: | |
pull_request: | |
workflow_dispatch: | |
push: | |
tags: | |
- "*" | |
branches: | |
- main | |
env: | |
MAIN_PYTHON_VERSION: '3.11' | |
MAIN_PYTHON_VERSION_WINDOWS_SELFHOSTED: '3.9' | |
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: 6 | |
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: | |
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@main | |
with: | |
python-version: ${{ env.MAIN_PYTHON_VERSION }} | |
python-package-name: ${{ env.PACKAGE_NAME }} | |
token: ${{ secrets.PYANSYS_CI_BOT_TOKEN }} | |
pyansys-dashboard-upload: true | |
pyansys-dashboard-token: ${{ secrets.PYANSYS_DASHBOARD_TOKEN }} | |
pyansys-dashboard-credentials: ${{ secrets.PYANSYS_DASHBOARD_DB_CREDENTIALS }} | |
- name: PyAnsys Vulnerability check (on dev mode) | |
if: github.ref != 'refs/heads/main' | |
uses: ansys/actions/check-vulnerabilities@main | |
with: | |
python-version: ${{ env.MAIN_PYTHON_VERSION }} | |
python-package-name: ${{ env.PACKAGE_NAME }} | |
token: ${{ secrets.PYANSYS_CI_BOT_TOKEN }} | |
dev-mode: true | |
branch-name: | |
if: github.event_name == 'pull_request' | |
name: Check the name of the branch | |
runs-on: ubuntu-latest | |
steps: | |
- name: Check branch name | |
uses: ansys/actions/branch-name-style@v5 | |
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@v5 | |
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@v5 | |
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@v5 | |
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@v5 | |
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_WINDOWS_SELFHOSTED }} # self-hosted has an issue with 3.11 | |
- 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_WINDOWS_SELFHOSTED }} # self-hosted has an issue with 3.11 | |
- 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@v5 | |
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 | |
package: | |
name: Package library | |
needs: [testing-windows, testing-linux, docs] | |
runs-on: ubuntu-latest | |
steps: | |
- name: Build library source and wheel artifacts | |
uses: ansys/actions/build-library@v5 | |
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] | |
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 | |
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: 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 | |
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_WINDOWS_SELFHOSTED }} # self-hosted has an issue with 3.11 | |
- 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/[email protected] | |
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@v5 | |
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/[email protected] | |
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] | |
runs-on: ubuntu-latest | |
steps: | |
- name: Release to the public PyPI repository | |
uses: ansys/actions/release-pypi-public@v5 | |
with: | |
library-name: ${{ env.PACKAGE_NAME }} | |
twine-username: "__token__" | |
twine-token: ${{ secrets.PYPI_TOKEN }} | |
- name: Release to GitHub | |
uses: ansys/actions/release-github@v5 | |
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 | |
# TODO: testing SEO improvements. This branch reuses the "index.html" from the stable version | |
uses: ansys/actions/doc-deploy-dev@feat/seo-improvements | |
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@v5 | |
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 | |
# TODO: testing SEO improvements. This branch avoids creating a | |
# sitemap.xml pages in opposite to v5. | |
uses: ansys/actions/doc-deploy-stable@feat/seo-improvements | |
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@v5 | |
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 }} |