#!/usr/bin/env groovy docker_registry_server = ImageTag.split(':')[0..1].join(':') currentBuild.displayName = ImageTag.split(':')[2] + "-${arch}" currentBuild.description = sourceBranch + ": " + commitHash // to manage image secrets: // 1) log into docker // docker login gitlab-master.nvidia.com:5005 // 2) create secret // kubectl create secret docker-registry test-secret -n kaolin --docker-server=gitlab-master.nvidia.com:5005 --docker-username azook --docker-password XXX // 3) add to service account // https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/#add-imagepullsecrets-to-a-service-account // kubectl patch kaolin-sa default -p '{"imagePullSecrets": [{"name": "myregistrykey"}]}' // 4) add to pod template gitlabCommitStatus("test-${configName}-${arch}") { podTemplate(cloud:'sc-ipp-blossom-prod', slaveConnectTimeout: 4000, yaml: """ apiVersion: v1 kind: Pod spec: volumes: - name: pvc-mount persistentVolumeClaim: claimName: 'kaolin-pvc' containers: - name: jnlp image: jenkins/jnlp-agent:latest-windows env: - name: JENKINS_AGENT_WORKDIR value: C:/Jenkins/agent - name: windows image: ${imageTag} resources: limits: nvidia.com/gpu: 1 restartPolicy: Never backoffLimit: 4 tty: true volumeMounts: - mountPath: c:/mnt name: pvc-mount imagePullSecrets: - name: gitlabcred nodeSelector: kubernetes.io/os: windows nvidia.com/node_type: ${arch} """ ) { node(POD_LABEL) { container("windows") { if (testWheel.toBoolean()) { stage('Test') { powershell ''' python -c "import kaolin; print(kaolin.__version__)" python -c "import torch; print(torch.__version__)" ''' } stage('Move wheels') { powersheel ''' cudaTag = cudaVer.split('\\.')[0..<2].join('') /tmp/kaolin-*.whl ''' } //mv /tmp/mount_binaries/tmp/torch-${torchVer}+cu${cudaTag} } else { stage('Enable cuda') { powershell ''' $Env:driver_store=$(ls $($($(Get-WmiObject Win32_VideoController).InstalledDisplayDrivers | sort -Unique).ToString().Split(',')| sort -Unique).ToString().Replace("\\DriverStore\\", "\\HostDriverStore\\")).Directory.FullName cp "$Env:driver_store\\nvcuda64.dll" C:\\Windows\\System32\\nvcuda.dll cp "$Env:driver_store\\nvapi64.dll" C:\\Windows\\System32\\nvapi64.dll ''' } stage("Check cuda") { powershell ''' dir c:\\ dir c:\\kaolin dir c:\\data ''' powershell ''' c:\\data\\deviceQuery.exe c:\\data\\bandwidthTest.exe ''' } stage("Check mount") { catchError(stageResult: "failure") { powershell ''' dir c:\\ dir c:\\mnt ''' } } stage("Fix paging memory") { // addresses this error on Windows with pytorch consuming too much paging memory: https://stackoverflow.com/a/69489193 powershell ''' python c:\\data\\fixNvPe.py --input=C:\\Users\\Administrator\\miniconda3\\Lib\\site-packages\\torch\\lib\\*.dll ''' } stage("Prepare data") { powershell ''' python --version Expand-Archive c:\\kaolin\\examples\\samples\\rendered_clock.zip c:\\kaolin\\examples\\samples ''' } stage("DIB-R Tutorial") { catchError(stageResult: "failure") { powershell ''' cd c:\\kaolin\\examples\\tutorial ipython dibr_tutorial.ipynb ''' } } stage("DMTet Tutorial") { catchError(stageResult: "failure") { powershell ''' cd c:\\kaolin\\examples\\tutorial ipython dmtet_tutorial.ipynb ''' } } stage("Understanding SPCs Tutorial") { catchError(stageResult: "failure") { powershell ''' cd c:\\kaolin\\examples\\tutorial ipython understanding_spcs_tutorial.ipynb --matplotlib ''' } } stage("Diffuse lighting Tutorial") { catchError(stageResult: "failure") { powershell ''' cd c:\\kaolin\\examples\\tutorial ipython diffuse_lighting.ipynb ''' } } stage("Spherical Gaussian lighting Tutorial") { catchError(stageResult: "failure") { powershell ''' cd c:\\kaolin\\examples\\tutorial ipython sg_specular_lighting.ipynb ''' } } // requires nvdiffrast. not currently supported on Windows // stage("Camera and Rasterization Tutorial") { // catchError(stageResult: "failure") { // powershell ''' // cd c:\\kaolin\\examples\\tutorial // ipython camera_and_rasterization.ipynb // ''' // } // } stage("SPC from Pointcloud Recipe") { catchError(stageResult: "failure") { powershell ''' cd c:\\kaolin\\examples\\recipes\\dataload python spc_from_pointcloud.py ''' } } stage("SPC Basics Recipe") { catchError(stageResult: "failure") { powershell ''' cd c:\\kaolin\\examples\\recipes\\spc python spc_basics.py ''' } } stage("Occupancy Sampling Recipe") { catchError(stageResult: "failure") { powershell ''' cd c:\\kaolin\\examples\\recipes\\preprocess python occupancy_sampling.py ''' } } stage("Fast Mesh Sampling Recipe") { catchError(stageResult: "failure") { powershell ''' cd c:\\kaolin\\examples\\recipes\\preprocess python fast_mesh_sampling.py --shapenet-dir=c:/mnt/data/ci_shapenetv2/ ''' } } stage("SPC Dual Octree Recipe") { catchError(stageResult: "failure") { powershell ''' cd c:\\kaolin\\examples\\recipes\\spc python spc_dual_octree.py ''' } } stage("SPC Trilinear Interpolation Recipe") { catchError(stageResult: "failure") { powershell ''' cd c:\\kaolin\\examples\\recipes\\spc python spc_trilinear_interp.py ''' } } stage("SPC Convolution 3D Recipe") { catchError(stageResult: "failure") { powershell ''' cd c:\\kaolin\\examples\\recipes\\spc python spc_conv3d_example.py ''' } } stage("Run pytest - io") { catchError(stageResult: "failure") { timeout(time: 5, unit: "MINUTES") { powershell ''' set CI=true pytest -s /kaolin/tests/python/kaolin/io ''' } } } stage("Run pytest - metrics") { catchError(stageResult: "failure") { timeout(time: 5, unit: "MINUTES") { powershell ''' set CI=true pytest -s /kaolin/tests/python/kaolin/metrics ''' } } } stage("Run pytest - ops") { catchError(stageResult: "failure") { timeout(time: 50, unit: "MINUTES") { powershell ''' set CI=true pytest -s /kaolin/tests/python/kaolin/ops ''' } } } stage("Run pytest - render") { catchError(stageResult: "failure") { timeout(time: 50, unit: "MINUTES") { powershell ''' set CI=true set KAOLIN_TEST_NVDIFFRAST=0 pytest -s /kaolin/tests/python/kaolin/render ''' } } } stage("Run pytest - rep") { catchError(stageResult: "failure") { timeout(time: 5, unit: "MINUTES") { powershell ''' set CI=true pytest -s /kaolin/tests/python/kaolin/rep ''' } } } stage("Run pytest - utils") { catchError(stageResult: "failure") { timeout(time: 5, unit: "MINUTES") { powershell ''' set CI=true pytest -s /kaolin/tests/python/kaolin/utils ''' } } } stage("Run pytest - visualize") { catchError(stageResult: "failure") { timeout(time: 5, unit: "MINUTES") { powershell ''' set CI=true pytest -s /kaolin/tests/python/kaolin/visualize ''' } } } stage("Update build status") { // update build result gitlab status // catchError only updates the pipeline if (currentBuild.getCurrentResult() == "FAILURE") { error "Build failed. See logs..." } } } } } } } // gitlabCommitStatus