Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
84 changes: 81 additions & 3 deletions .github/workflows/backwards_compatibility.yml
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ jobs:
# vvvvvvvvvvvvvvvvvvvvvvvvvvvvvv RUNNING ON SELF-HOSTED RUNNER vvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
# =================================================================================================

testing-backwards-compatibility-windows:
testing-backwards-compatibility-windows-old-images:
name: Windows ${{ matrix.backend-version }}
runs-on: [self-hosted, Windows, pygeometry]
strategy:
Expand All @@ -43,8 +43,7 @@ jobs:
backend-version: "24.2"
- image-tag: "windows-25.1"
backend-version: "25.1"
- image-tag: "core-windows-25.2"
backend-version: "25.2"

steps:
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
with:
Expand Down Expand Up @@ -155,3 +154,82 @@ jobs:
# =================================================================================================
# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ RUNNING ON SELF-HOSTED RUNNER ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
# =================================================================================================


testing-backwards-compatibility-windows:
name: Windows ${{ matrix.backend-version }}
runs-on: ${{ matrix.windows-runner }}
strategy:
fail-fast: false
matrix:
include:
- image-tag: "core-windows-25.2"
backend-version: "25.2"
windows-runner: "windows-2025"
steps:
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
with:
persist-credentials: false

- name: Set up Python
uses: actions/setup-python@e797f83bcb11b83ae66e0230d6156d7c80228e7c # v6.0.0
with:
python-version: ${{ env.MAIN_PYTHON_VERSION }}

- name: Set up headless display
uses: pyvista/setup-headless-display-action@7d84ae825e6d9297a8e99bdbbae20d1b919a0b19 # v4.2

- name: Login to GitHub Container Registry
uses: docker/login-action@5e57cd118135c172c3672efd75eb46360885c0ef # v3.6.0
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}

- name: Install packages for testing
run: |
python -m pip install --upgrade pip
pip install --upgrade build wheel
pip install -e .[tests]

- name: Download Geometry service container (if needed)
env:
FULL_IMAGE_NAME: "${{ env.ANSRV_GEO_IMAGE }}:${{ matrix.image-tag }}"
run: |
Write-Host "Pulling Docker image: $env:FULL_IMAGE_NAME"
docker pull $env:FULL_IMAGE_NAME

- name: Start Geometry service and verify start
env:
FULL_IMAGE_NAME: "${{ env.ANSRV_GEO_IMAGE }}:${{ matrix.image-tag }}"
PORT_MAPPING: "${{ env.ANSRV_GEO_PORT }}:50051"
TRANSPORT_MODE_SELECTION: ${{ secrets.TRANSPORT_MODE_SELECTION }}
run: |
# Write command to file launch.txt for sanitizing purposes
echo "docker run --detach --name $env:GEO_CONT_NAME -e LICENSE_SERVER=$env:ANSRV_GEO_LICENSE_SERVER $env:SERVER_ENDPOINT -p $env:PORT_MAPPING $env:FULL_IMAGE_NAME $env:TRANSPORT_MODE_SELECTION" | Out-File -FilePath launch.txt
# Read the file and execute the command
$command = Get-Content -Path launch.txt | Select-String -Pattern "docker run"
Invoke-Expression $command.Line
Start-Sleep -Seconds 10
python -c "from ansys.geometry.core.connection.validate import validate; validate()"

- name: Testing
timeout-minutes: 20 # Sometimes hangs...
env:
BACKEND_VERSION: ${{ matrix.backend-version }}
run: |
pytest -v --backwards-compatibility=yes --backend-version=$env:BACKEND_VERSION -rf

- name: Upload coverage to Codecov
uses: codecov/codecov-action@5a1091511ad55cbe89839c7260b706298ca349f7 # v5.5.1
env:
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
with:
files: .cov/xml

- 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
55 changes: 7 additions & 48 deletions .github/workflows/ci_cd.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ env:
ANSRV_GEO_PORT: 700
ANSRV_GEO_LICENSE_SERVER: ${{ secrets.LICENSE_SERVER }}
GEO_CONT_NAME: ans_geo
RESET_IMAGE_CACHE: 11
RESET_IMAGE_CACHE: 0
IS_WORKFLOW_RUNNING: True
ARTIFACTORY_VERSION: v261

Expand Down Expand Up @@ -167,14 +167,10 @@ jobs:
echo "skip_${SERVICE}=0" >> "$GITHUB_OUTPUT"
fi

# =================================================================================================
# vvvvvvvvvvvvvvvvvvvvvvvvvvvvvv RUNNING ON SELF-HOSTED RUNNER vvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
# =================================================================================================

testing-windows:
name: Testing and coverage (Windows)
needs: [smoke-tests, manifests]
runs-on: [self-hosted, Windows, pygeometry]
runs-on: windows-latest
continue-on-error: ${{ matrix.experimental }}
env:
SKIP_UNSTABLE: false
Expand Down Expand Up @@ -228,19 +224,12 @@ jobs:
if: env.SKIP_UNSTABLE == 'false'
uses: pyvista/setup-headless-display-action@7d84ae825e6d9297a8e99bdbbae20d1b919a0b19 # v4.2

- 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]
pip install -e .[tests]

- name: Login to GitHub Container Registry
if: env.SKIP_UNSTABLE == 'false'
Expand All @@ -258,29 +247,13 @@ jobs:
Write-Host "Pulling Docker image: $env:FULL_IMAGE_NAME"
docker pull $env:FULL_IMAGE_NAME

- name: Check location of self-hosted runner and define license server accordingly
if: env.SKIP_UNSTABLE == 'false' && runner.name == 'pygeometry-ci-2'
env:
LICENSE_SERVER_INTERNAL: ${{ secrets.LICENSE_SERVER_INTERNAL }}
run:
echo "ANSRV_GEO_LICENSE_SERVER=$env:LICENSE_SERVER_INTERNAL" | Out-File -FilePath $env:GITHUB_ENV -Append

- name: Stop any running containers
run: |
$dockerContainers = docker ps -a -q
if (-not [string]::IsNullOrEmpty($dockerContainers)) {
docker stop $dockerContainers
docker rm $dockerContainers
}

- name: Start Geometry service and verify start
if: env.SKIP_UNSTABLE == 'false'
env:
FULL_IMAGE_NAME: "${{ env.ANSRV_GEO_IMAGE }}:${{ matrix.docker-image }}"
PORT_MAPPING: "${{ env.ANSRV_GEO_PORT }}:50051"
TRANSPORT_MODE_SELECTION: ${{ secrets.TRANSPORT_MODE_SELECTION }}
run: |
.\.venv\Scripts\Activate.ps1
# Write command to file launch.txt for sanitizing purposes
echo "docker run --detach --name $env:GEO_CONT_NAME -e LICENSE_SERVER=$env:ANSRV_GEO_LICENSE_SERVER -p $env:PORT_MAPPING $env:FULL_IMAGE_NAME $env:TRANSPORT_MODE_SELECTION" | Out-File -FilePath launch.txt
# Read the file and execute the command
Expand All @@ -294,15 +267,14 @@ jobs:
uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0
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 }}
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 }}
lookup-only: false # zizmor: ignore[cache-poisoning]

- name: Testing
if: env.SKIP_UNSTABLE == 'false'
timeout-minutes: 20 # On Windows self-hosted runners, sometimes hangs...
timeout-minutes: 20 # Sometimes hangs...
run: |
.\.venv\Scripts\Activate.ps1
pytest -v

- name: Upload integration test logs
Expand Down Expand Up @@ -348,19 +320,6 @@ jobs:
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 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
# =================================================================================================

docs:
name: Documentation
needs: [docs-style]
Expand Down Expand Up @@ -661,7 +620,7 @@ jobs:
if: github.event_name == 'push' && contains(github.ref, 'refs/tags')
runs-on:
group: ansys-network
labels: [self-hosted, Windows, pygeometry]
labels: [Windows, pygeometry]
env:
REUSE_LAST_ARTIFACTS: ${{ vars.REUSE_LAST_ARTIFACTS == 1 }}

Expand Down
46 changes: 4 additions & 42 deletions .github/workflows/nightly_docker_test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -90,15 +90,11 @@ jobs:
echo "skip_${SERVICE}=0" >> "$GITHUB_OUTPUT"
fi

# =================================================================================================
# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ RUNNING ON SELF-HOSTED RUNNER ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
# =================================================================================================

windows-tests:
name: Windows Core Service
needs: manifests
if: needs.manifests.outputs.skip_core_windows == 0
runs-on: [self-hosted, Windows, pygeometry]
runs-on: windows-latest
env:
PYVISTA_OFF_SCREEN: true
permissions:
Expand All @@ -117,16 +113,10 @@ jobs:
- name: Set up headless display
uses: pyvista/setup-headless-display-action@7d84ae825e6d9297a8e99bdbbae20d1b919a0b19 # v4.2

- name: Create Python venv
run: |
python -m venv .venv
.\.venv\Scripts\Activate.ps1

- name: Install packages for testing
run: |
.\.venv\Scripts\Activate.ps1
pip install --upgrade build
pip install .[tests]
pip install -e .[tests]

- name: Login to GitHub Container Registry
uses: docker/login-action@5e57cd118135c172c3672efd75eb46360885c0ef # v3.6.0
Expand All @@ -135,24 +125,15 @@ jobs:
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}

- name: Download Geometry service container (always latest version)
- name: Download Geometry service container
run: |
docker image rm $env:ANSRV_GEO_IMAGE_WINDOWS_CORE_TAG
docker pull $env:ANSRV_GEO_IMAGE_WINDOWS_CORE_TAG

- name: Check location of self-hosted runner and define license server accordingly
if: runner.name == 'pygeometry-ci-2'
env:
LICENSE_SERVER_INTERNAL: ${{ secrets.LICENSE_SERVER_INTERNAL }}
run:
echo "ANSRV_GEO_LICENSE_SERVER=$env:LICENSE_SERVER_INTERNAL" | Out-File -FilePath $env:GITHUB_ENV -Append

- name: Start Geometry service and verify start
env:
TRANSPORT_MODE_SELECTION: ${{ secrets.TRANSPORT_MODE_SELECTION }}
PORT_MAPPING: "${{ env.ANSRV_GEO_PORT }}:50051"
run: |
.\.venv\Scripts\Activate.ps1
# Write command to file launch.txt for sanitizing purposes
echo "docker run --detach --name $env:GEO_CONT_NAME -e LICENSE_SERVER=$env:ANSRV_GEO_LICENSE_SERVER -p $env:PORT_MAPPING $env:ANSRV_GEO_IMAGE_WINDOWS_CORE_TAG $env:TRANSPORT_MODE_SELECTION" | Out-File -FilePath launch.txt
# Read the file and execute the command
Expand All @@ -162,9 +143,8 @@ jobs:
python -c "from ansys.geometry.core.connection.validate import validate; validate()"

- name: Run PyAnsys Geometry tests
timeout-minutes: 20 # On Windows self-hosted runners, sometimes hangs...
timeout-minutes: 20 # Sometimes hangs...
run: |
.\.venv\Scripts\Activate.ps1
pytest -v

- name: Stop the Geometry service
Expand All @@ -174,19 +154,6 @@ jobs:
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: Clean all Docker dangling images
if: always()
run: docker image prune -f

- name: Microsoft Teams Notification
uses: skitionek/notify-microsoft-teams@11e40c38c3a629ae65a985b582eca4897b01e79e # v1.0.9
if: failure()
Expand Down Expand Up @@ -215,11 +182,6 @@ jobs:
]
}


# =================================================================================================
# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ RUNNING ON SELF-HOSTED RUNNER ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
# =================================================================================================

linux-tests:
name: Linux Core Service
needs: manifests
Expand Down
1 change: 1 addition & 0 deletions doc/changelog.d/2286.maintenance.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Run on GitHub runners directly
Loading