diff --git a/.github/workflows/backwards_compatibility.yml b/.github/workflows/backwards_compatibility.yml index ba4612e646..1647e4064c 100644 --- a/.github/workflows/backwards_compatibility.yml +++ b/.github/workflows/backwards_compatibility.yml @@ -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: @@ -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: @@ -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 diff --git a/.github/workflows/ci_cd.yml b/.github/workflows/ci_cd.yml index d42ff7f936..84bd447754 100644 --- a/.github/workflows/ci_cd.yml +++ b/.github/workflows/ci_cd.yml @@ -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 @@ -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 @@ -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' @@ -258,21 +247,6 @@ 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: @@ -280,7 +254,6 @@ jobs: 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 @@ -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 @@ -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] @@ -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 }} diff --git a/.github/workflows/nightly_docker_test.yml b/.github/workflows/nightly_docker_test.yml index 783ee5fcae..869600fd4c 100644 --- a/.github/workflows/nightly_docker_test.yml +++ b/.github/workflows/nightly_docker_test.yml @@ -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: @@ -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 @@ -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 @@ -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 @@ -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() @@ -215,11 +182,6 @@ jobs: ] } - -# ================================================================================================= -# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ RUNNING ON SELF-HOSTED RUNNER ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -# ================================================================================================= - linux-tests: name: Linux Core Service needs: manifests diff --git a/doc/changelog.d/2286.maintenance.md b/doc/changelog.d/2286.maintenance.md new file mode 100644 index 0000000000..e018f5f796 --- /dev/null +++ b/doc/changelog.d/2286.maintenance.md @@ -0,0 +1 @@ +Run on GitHub runners directly