@@ -504,314 +504,3 @@ jobs:
504504 with :
505505 library-name : ${{ env.PACKAGE_NAME }}
506506 python-version : ${{ env.MAIN_PYTHON_VERSION }}
507-
508- # =================================================================================================
509- # vvvvvvvvvvvvvvvvvvvvvvvvvvvvvv RUNNING ON SELF-HOSTED RUNNER vvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
510- # =================================================================================================
511-
512- fetch-release-artifacts :
513- name : Fetch release artifacts
514- needs : [testing-windows, testing-linux, docs]
515- if : github.event_name == 'push' && contains(github.ref, 'refs/tags')
516- runs-on :
517- group : ansys-network
518- labels : [self-hosted, Windows, pygeometry]
519- env :
520- REUSE_LAST_ARTIFACTS : ${{ vars.REUSE_LAST_ARTIFACTS == 1 }}
521-
522- steps :
523- - name : Check out repository pyansys-geometry-binaries
524- uses : actions/checkout@v4
525- with :
526- repository : ' ansys/pyansys-geometry-binaries'
527- token : ${{ secrets.BINARIES_TOKEN }}
528-
529- - name : Download binaries (if conditions met)
530- if : env.REUSE_LAST_ARTIFACTS == 'false'
531- run : |
532- curl.exe -X GET -H "X-JFrog-Art-Api: ${{ secrets.ARTIFACTORY_KEY }}" ${{ secrets.ARTIFACTORY_URL }}/${{ env.ARTIFACTORY_VERSION }}/DockerWindows.zip --output windows-dms-binaries.zip
533- curl.exe -X GET -H "X-JFrog-Art-Api: ${{ secrets.ARTIFACTORY_KEY }}" ${{ secrets.ARTIFACTORY_URL }}/${{ env.ARTIFACTORY_VERSION }}/DockerCoreWindows.zip --output windows-core-binaries.zip
534- curl.exe -X GET -H "X-JFrog-Art-Api: ${{ secrets.ARTIFACTORY_KEY }}" ${{ secrets.ARTIFACTORY_URL }}/${{ env.ARTIFACTORY_VERSION }}/DockerCoreLinux.zip --output linux-core-binaries.zip
535-
536- - name : Reuse last binaries (if conditions met)
537- if : env.REUSE_LAST_ARTIFACTS == 'true'
538- env :
539- VERSION_WITH_PREFIX : ${{ github.ref_name }}
540- run : |
541- # We are on a Windows machine. We need to copy the binaries from the previous tag,
542- # based on the current tag. We will also remove the trailing "v" from the tag. This will give
543- # us the folder from where we need to copy the binaries.
544- $env:VERSION=$env:VERSION_WITH_PREFIX.substring(1)
545- $env:PREVIOUS_VERSION=$env:VERSION.substring(0, $env:VERSION.Length - 1)
546- $env:PREVIOUS_PATCH_VERSION_NUMBER=$env:VERSION.substring($env:VERSION.Length - 1)
547- $env:PREVIOUS_PATCH_VERSION_NUMBER=[int]$env:PREVIOUS_PATCH_VERSION_NUMBER - 1
548- $env:PREVIOUS_VERSION=$env:PREVIOUS_VERSION + $env:PREVIOUS_PATCH_VERSION_NUMBER
549- # Fetch the LFS files from the previous version
550- git lfs fetch origin --include="$env:PREVIOUS_VERSION/*"
551- git lfs checkout $env:PREVIOUS_VERSION
552- # Copy the binaries from the previous version
553- cp ./$env:PREVIOUS_VERSION/windows-dms-binaries.zip windows-dms-binaries.zip
554- cp ./$env:PREVIOUS_VERSION/windows-core-binaries.zip windows-core-binaries.zip
555- cp ./$env:PREVIOUS_VERSION/linux-core-binaries.zip linux-core-binaries.zip
556-
557- - name : Upload DMS Windows binaries as workflow artifacts
558- uses : actions/upload-artifact@v4
559- with :
560- name : windows-dms-binaries.zip
561- path : windows-dms-binaries.zip
562- retention-days : 1
563-
564- - name : Upload Linux Core service binaries as workflow artifacts
565- uses : actions/upload-artifact@v4
566- with :
567- name : linux-core-binaries.zip
568- path : linux-core-binaries.zip
569- retention-days : 1
570-
571- - name : Upload Windows Core service binaries as workflow artifacts
572- uses : actions/upload-artifact@v4
573- with :
574- name : windows-core-binaries.zip
575- path : windows-core-binaries.zip
576- retention-days : 1
577-
578- - name : Publish the binaries to private repo
579- env :
580- VERSION_WITH_PREFIX : ${{ github.ref_name }}
581- run : |
582- $env:VERSION=$env:VERSION_WITH_PREFIX.substring(1)
583- mkdir $env:VERSION -ErrorAction SilentlyContinue
584- Remove-Item -Recurse -Force .\$env:VERSION\*
585- mv windows-dms-binaries.zip .\$env:VERSION\
586- mv windows-core-binaries.zip .\$env:VERSION\
587- mv linux-core-binaries.zip .\$env:VERSION\
588- git config user.email ${{ secrets.BINARIES_EMAIL }}
589- git config user.name ${{ secrets.BINARIES_USERNAME }}
590- git add *
591- git commit -m "adding binaries for ${{ github.ref_name }}"
592- git push origin main
593-
594- build-windows-container :
595- name : Building Geometry Service - Windows
596- runs-on : [self-hosted, Windows, pygeometry]
597- needs : [fetch-release-artifacts]
598- strategy :
599- fail-fast : false
600- matrix :
601- include :
602- - mode : " dms"
603- docker-file : " windows-dms-dockerfile.zip"
604- zip-file : " windows-dms-binaries.zip"
605- - mode : " coreservice"
606- docker-file : " windows-core-dockerfile.zip"
607- zip-file : " windows-core-binaries.zip"
608- steps :
609- - name : Checkout repository
610- uses : actions/checkout@v4
611-
612- - name : Set up Python
613- uses : actions/setup-python@v5
614- with :
615- python-version : ${{ env.MAIN_PYTHON_VERSION }}
616-
617- - name : Download Windows binaries for ${{ matrix.mode }}
618- uses : actions/download-artifact@v4
619- with :
620- name : ${{ matrix.zip-file }}
621- path : docker/${{ matrix.zip-file }}
622-
623- - name : Build Docker image
624- working-directory : docker
625- run : |
626- docker build -f windows/${{ matrix.mode }}/Dockerfile -t ghcr.io/ansys/geometry:windows-tmp .
627-
628- - name : Check location of self-hosted runner and define license server accordingly
629- if : runner.name == 'pygeometry-ci-2'
630- run :
631- echo "ANSRV_GEO_LICENSE_SERVER=${{ secrets.INTERNAL_LICENSE_SERVER }}" | Out-File -FilePath $env:GITHUB_ENV -Append
632-
633- - name : Launch Geometry service
634- run : |
635- 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-tmp
636-
637- - name : Validate connection using PyAnsys Geometry
638- run : |
639- python -m venv .venv
640- .\.venv\Scripts\Activate.ps1
641- python -m pip install --upgrade pip
642- pip install -e .[tests]
643- python -c "from ansys.geometry.core.connection.validate import validate; validate()"
644-
645- - name : Restore images cache
646- uses : actions/cache@v4
647- with :
648- path : .\tests\integration\image_cache
649- key : pyvista-image-cache-${{ runner.os }}-v-${{ env.RESET_IMAGE_CACHE }}-${{ hashFiles('pyproject.toml') }}
650- restore-keys : pyvista-image-cache-${{ runner.os }}-v-${{ env.RESET_IMAGE_CACHE }}
651-
652- - name : Testing
653- run : |
654- .\.venv\Scripts\Activate.ps1
655- pytest -v --use-existing-service=yes
656-
657- - name : " Compressing Windows Dockerfile"
658- 659- with :
660- files : docker/windows/${{ matrix.mode }}/Dockerfile
661- dest : ${{ matrix.docker-file }}
662-
663- - name : Upload Windows Dockerfile
664- uses : actions/upload-artifact@v4
665- with :
666- name : ${{ matrix.docker-file }}
667- path : ${{ matrix.docker-file }}
668- retention-days : 7
669-
670- - name : Stop the Geometry service
671- if : always()
672- run : |
673- docker stop ${{ env.GEO_CONT_NAME }}
674- docker logs ${{ env.GEO_CONT_NAME }}
675- docker rm ${{ env.GEO_CONT_NAME }}
676-
677- - name : Stop any remaining containers
678- if : always()
679- run : |
680- $dockerContainers = docker ps -a -q
681- if (-not [string]::IsNullOrEmpty($dockerContainers)) {
682- docker stop $dockerContainers
683- docker rm $dockerContainers
684- }
685-
686- - name : Delete the Docker images (and untagged ones)
687- if : always()
688- run : |
689- docker image rm ghcr.io/ansys/geometry:windows-tmp
690- docker system prune -f
691-
692- # =================================================================================================
693- # ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ RUNNING ON SELF-HOSTED RUNNER ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
694- # =================================================================================================
695-
696- build-linux-container :
697- name : Building Geometry Service - Linux
698- runs-on : ubuntu-latest
699- needs : [fetch-release-artifacts]
700- steps :
701- - name : Checkout repository
702- uses : actions/checkout@v4
703-
704- - name : Set up Python
705- uses : actions/setup-python@v5
706- with :
707- python-version : ${{ env.MAIN_PYTHON_VERSION }}
708-
709- - name : Download Linux binaries
710- uses : actions/download-artifact@v4
711- with :
712- name : linux-core-binaries.zip
713- path : docker/linux-core-binaries.zip
714-
715- - name : Build Docker image
716- working-directory : docker
717- run : |
718- docker build -f linux/coreservice/Dockerfile -t ghcr.io/ansys/geometry:linux-tmp .
719-
720- - name : Launch Geometry service
721- run : |
722- 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-tmp
723-
724- - name : Validate connection using PyAnsys Geometry
725- run : |
726- python -m pip install --upgrade pip
727- pip install -e .[tests]
728- python -c "from ansys.geometry.core.connection.validate import validate; validate()"
729-
730- - name : Restore images cache
731- uses : actions/cache@v4
732- with :
733- path : .\tests\integration\image_cache
734- key : pyvista-image-cache-${{ runner.os }}-v-${{ env.RESET_IMAGE_CACHE }}-${{ hashFiles('pyproject.toml') }}
735- restore-keys : pyvista-image-cache-${{ runner.os }}-v-${{ env.RESET_IMAGE_CACHE }}
736-
737- - name : Run pytest
738- uses : ansys/actions/tests-pytest@v8
739- env :
740- ALLOW_PLOTTING : true
741- with :
742- python-version : ${{ env.MAIN_PYTHON_VERSION }}
743- pytest-extra-args : " --use-existing-service=yes"
744- checkout : false
745- requires-xvfb : true
746-
747- - name : " Compressing Linux Dockerfile"
748- 749- with :
750- files : docker/linux/coreservice/Dockerfile
751- dest : linux-core-dockerfile.zip
752-
753- - name : Upload Linux Dockerfile
754- uses : actions/upload-artifact@v4
755- with :
756- name : linux-core-dockerfile.zip
757- path : linux-core-dockerfile.zip
758- retention-days : 7
759-
760- - name : Stop the Geometry service
761- if : always()
762- run : |
763- docker stop ${{ env.GEO_CONT_NAME }}
764- docker logs ${{ env.GEO_CONT_NAME }}
765- docker rm ${{ env.GEO_CONT_NAME }}
766-
767- release :
768- name : Release project
769- if : github.event_name == 'push' && contains(github.ref, 'refs/tags')
770- needs : [package, build-windows-container, build-linux-container, update-changelog]
771- runs-on : ubuntu-latest
772- # Specifying a GitHub environment is optional, but strongly encouraged
773- environment : release
774- permissions :
775- id-token : write
776- contents : write
777- steps :
778- - name : Release to the public PyPI repository
779- uses : ansys/actions/release-pypi-public@v8
780- with :
781- library-name : ${{ env.PACKAGE_NAME }}
782- use-trusted-publisher : true
783-
784- - name : Release to GitHub
785- uses : ansys/actions/release-github@v8
786- with :
787- token : ${{ secrets.GITHUB_TOKEN }}
788- library-name : ${{ env.PACKAGE_NAME }}
789- additional-artifacts : windows-dms-dockerfile.zip windows-core-dockerfile.zip linux-core-dockerfile.zip
790-
791- upload_dev_docs :
792- name : Upload dev documentation
793- if : github.ref == 'refs/heads/main'
794- runs-on : ubuntu-latest
795- needs : [package]
796- steps :
797- - name : Deploy the latest documentation
798- uses : ansys/actions/doc-deploy-dev@v8
799- with :
800- cname : ${{ env.DOCUMENTATION_CNAME }}
801- token : ${{ secrets.PYANSYS_CI_BOT_TOKEN }}
802- bot-user : ${{ secrets.PYANSYS_CI_BOT_USERNAME }}
803- bot-email : ${{ secrets.PYANSYS_CI_BOT_EMAIL }}
804-
805- upload_docs_release :
806- name : Upload release documentation
807- if : github.event_name == 'push' && contains(github.ref, 'refs/tags')
808- runs-on : ubuntu-latest
809- needs : [release]
810- steps :
811- - name : Deploy the stable documentation
812- uses : ansys/actions/doc-deploy-stable@v8
813- with :
814- cname : ${{ env.DOCUMENTATION_CNAME }}
815- token : ${{ secrets.PYANSYS_CI_BOT_TOKEN }}
816- bot-user : ${{ secrets.PYANSYS_CI_BOT_USERNAME }}
817- bot-email : ${{ secrets.PYANSYS_CI_BOT_EMAIL }}
0 commit comments