提交测试
This commit is contained in:
293
ci/gitlab_jenkins_templates/ubuntu_test_CI.jenkins
Normal file
293
ci/gitlab_jenkins_templates/ubuntu_test_CI.jenkins
Normal file
@@ -0,0 +1,293 @@
|
||||
#!/usr/bin/env groovy
|
||||
|
||||
docker_registry_server = ImageTag.split(':')[0..1].join(':')
|
||||
currentBuild.displayName = ImageTag.split(':')[2] + "-${arch}"
|
||||
currentBuild.description = sourceBranch + ": " + commitHash
|
||||
|
||||
if (arch == "MULTI") {
|
||||
gpu_list = """
|
||||
- "A100_PCIE_40GB"
|
||||
- "A100_PCIE_80GB"
|
||||
- "A100_80GB_PCIE"
|
||||
- "A100_PCIE_100GB"
|
||||
- "A10"
|
||||
- "A30"
|
||||
- "A40"
|
||||
- "GA100-E4720-HBM2"
|
||||
- "GA100-E4720-DVT"
|
||||
- "GA104-300-PG142-SKU10-TS3"
|
||||
- "GeForce_RTX_4090"
|
||||
- "H100_80GB_HBM3"
|
||||
- "GH100_P1010_PCIE_CR"
|
||||
- "Tesla_V100_PCIE_32GB"
|
||||
"""
|
||||
} else {
|
||||
gpu_list = """
|
||||
- "${arch}"
|
||||
"""
|
||||
}
|
||||
|
||||
node_blacklist = """
|
||||
- "a4u8g-0031.ipp1u1.colossus"
|
||||
"""
|
||||
|
||||
gitlabCommitStatus("test-${configName}-${arch}") {
|
||||
|
||||
podTemplate(
|
||||
cloud:'sc-ipp-blossom-prod',
|
||||
yaml:"""
|
||||
apiVersion: v1
|
||||
kind: Pod
|
||||
spec:
|
||||
volumes:
|
||||
- name: pvc-mount
|
||||
persistentVolumeClaim:
|
||||
claimName: 'kaolin-pvc'
|
||||
containers:
|
||||
- name: docker
|
||||
image: ${imageTag}
|
||||
command:
|
||||
- cat
|
||||
resources:
|
||||
requests:
|
||||
nvidia.com/gpu: 1
|
||||
limits:
|
||||
nvidia.com/gpu: 1
|
||||
tty: true
|
||||
volumeMounts:
|
||||
- mountPath: /mnt
|
||||
name: pvc-mount
|
||||
imagePullSecrets:
|
||||
- name: gitlabcred
|
||||
nodeSelector:
|
||||
kubernetes.io/os: linux
|
||||
affinity:
|
||||
nodeAffinity:
|
||||
requiredDuringSchedulingIgnoredDuringExecution:
|
||||
nodeSelectorTerms:
|
||||
- matchExpressions:
|
||||
- key: "nvidia.com/gpu_type"
|
||||
operator: "In"
|
||||
values:${gpu_list}
|
||||
- key: "kubernetes.io/hostname"
|
||||
operator: "NotIn"
|
||||
values:${node_blacklist}
|
||||
- key: "nvidia.com/driver_version"
|
||||
operator: "NotIn"
|
||||
values:
|
||||
- "545.23"
|
||||
""") {
|
||||
node(POD_LABEL) {
|
||||
container("docker") {
|
||||
timeout(time: 60, unit: 'MINUTES') {
|
||||
stage("Install deps") {
|
||||
sh 'pip install -r /kaolin/tools/ci_requirements.txt'
|
||||
sh 'apt update && apt install -y unzip && unzip /kaolin/examples/samples/rendered_clock.zip -d /kaolin/examples/samples/'
|
||||
}
|
||||
def build_passed = true
|
||||
try {
|
||||
stage('Disp info') {
|
||||
sh 'nvidia-smi'
|
||||
sh 'python --version'
|
||||
sh 'lscpu'
|
||||
sh 'free -h --si'
|
||||
}
|
||||
} catch(e) {
|
||||
build_passed = false
|
||||
echo e.toString()
|
||||
}
|
||||
try {
|
||||
stage("Pytest") {
|
||||
sh '''
|
||||
export KAOLIN_TEST_NVDIFFRAST=1
|
||||
export KAOLIN_TEST_SHAPENETV1_PATH=/mnt/data/ci_shapenetv1
|
||||
export KAOLIN_TEST_SHAPENETV2_PATH=/mnt/data/ci_shapenetv2
|
||||
export KAOLIN_TEST_MODELNET_PATH=/mnt/data/ModelNet
|
||||
export KAOLIN_TEST_SHREC16_PATH=/mnt/data/ci_shrec16
|
||||
pytest --durations=50 --import-mode=importlib -rs --cov=/kaolin/kaolin \
|
||||
--log-disable=PIL.PngImagePlugin \
|
||||
--log-disable=PIL.TiffImagePlugin \
|
||||
--log-disable=kaolin.rep.surface_mesh \
|
||||
/kaolin/tests/python/kaolin
|
||||
'''
|
||||
}
|
||||
} catch(e) {
|
||||
build_passed = false
|
||||
echo e.toString()
|
||||
}
|
||||
try {
|
||||
stage("Dash3D") {
|
||||
sh '''
|
||||
pytest -s --cov=/kaolin/kaolin /kaolin/tests/integration/
|
||||
'''
|
||||
}
|
||||
} catch(e) {
|
||||
build_passed = false
|
||||
echo e.toString()
|
||||
}
|
||||
try {
|
||||
if (arch == "TITAN_RTX") {
|
||||
stage("Doc examples") {
|
||||
// using wheel you don't have /kaolin/kaolin
|
||||
sh '''
|
||||
if [ -f "/kaolin/kaolin" ]; then
|
||||
pytest --doctest-modules --ignore=/kaolin/kaolin/experimental /kaolin/kaolin
|
||||
fi
|
||||
'''
|
||||
}
|
||||
}
|
||||
} catch(e) {
|
||||
build_passed = false
|
||||
echo e.toString()
|
||||
}
|
||||
// TUTORIALS
|
||||
try {
|
||||
stage("BBox Tutorial") {
|
||||
sh 'cd /kaolin/examples/tutorial && ipython bbox_tutorial.ipynb'
|
||||
}
|
||||
} catch(e) {
|
||||
build_passed = false
|
||||
echo e.toString()
|
||||
}
|
||||
try {
|
||||
stage("Camera and Rasterization Tutorial") {
|
||||
sh 'cd /kaolin/examples/tutorial && ipython camera_and_rasterization.ipynb'
|
||||
}
|
||||
} catch(e) {
|
||||
build_passed = false
|
||||
echo e.toString()
|
||||
}
|
||||
try {
|
||||
stage("DIB-R Tutorial") {
|
||||
sh 'cd /kaolin/examples/tutorial && ipython dibr_tutorial.ipynb'
|
||||
}
|
||||
} catch(e) {
|
||||
build_passed = false
|
||||
echo e.toString()
|
||||
}
|
||||
try {
|
||||
stage("Diffuse lighting Tutorial") {
|
||||
sh 'cd /kaolin/examples/tutorial && ipython diffuse_lighting.ipynb'
|
||||
}
|
||||
} catch(e) {
|
||||
build_passed = false
|
||||
echo e.toString()
|
||||
}
|
||||
try {
|
||||
stage("DMTet Tutorial") {
|
||||
sh 'cd /kaolin/examples/tutorial && ipython dmtet_tutorial.ipynb'
|
||||
}
|
||||
} catch(e) {
|
||||
build_passed = false
|
||||
echo e.toString()
|
||||
}
|
||||
try {
|
||||
stage("GLTF Visualizer") {
|
||||
sh 'cd /kaolin/examples/tutorial && ipython gltf_viz.ipynb'
|
||||
}
|
||||
} catch(e) {
|
||||
build_passed = false
|
||||
echo e.toString()
|
||||
}
|
||||
try {
|
||||
stage("Interactive Visualizer") {
|
||||
sh 'cd /kaolin/examples/tutorial && ipython interactive_visualizer.ipynb'
|
||||
}
|
||||
} catch(e) {
|
||||
build_passed = false
|
||||
echo e.toString()
|
||||
}
|
||||
try {
|
||||
stage("Spherical Gaussian lighting Tutorial") {
|
||||
sh 'cd /kaolin/examples/tutorial && ipython sg_specular_lighting.ipynb'
|
||||
}
|
||||
} catch(e) {
|
||||
build_passed = false
|
||||
echo e.toString()
|
||||
}
|
||||
try {
|
||||
stage("Understanding SPCs Tutorial") {
|
||||
sh 'cd /kaolin/examples/tutorial && ipython understanding_spcs_tutorial.ipynb'
|
||||
}
|
||||
} catch(e) {
|
||||
build_passed = false
|
||||
echo e.toString()
|
||||
}
|
||||
try {
|
||||
stage("Working with meshes Tutorial") {
|
||||
sh 'cd /kaolin/examples/tutorial && ipython working_with_meshes.ipynb'
|
||||
}
|
||||
} catch(e) {
|
||||
build_passed = false
|
||||
echo e.toString()
|
||||
}
|
||||
|
||||
// RECIPES
|
||||
try {
|
||||
stage("SPC from Pointcloud Recipe") {
|
||||
sh 'cd /kaolin/examples/recipes/dataload/ && python spc_from_pointcloud.py'
|
||||
}
|
||||
} catch(e) {
|
||||
build_passed = false
|
||||
echo e.toString()
|
||||
}
|
||||
try {
|
||||
stage("SPC Basics Recipe") {
|
||||
sh 'cd /kaolin/examples/recipes/spc/ && python spc_basics.py'
|
||||
}
|
||||
} catch(e) {
|
||||
build_passed = false
|
||||
echo e.toString()
|
||||
}
|
||||
try {
|
||||
stage("Occupancy Sampling Recipe") {
|
||||
sh 'cd /kaolin/examples/recipes/preprocess/ && python occupancy_sampling.py'
|
||||
}
|
||||
} catch(e) {
|
||||
build_passed = false
|
||||
echo e.toString()
|
||||
}
|
||||
try {
|
||||
stage("Fast Mesh Sampling Recipe") {
|
||||
sh 'cd /kaolin/examples/recipes/preprocess/ && python fast_mesh_sampling.py --shapenet-dir=/mnt/data/ci_shapenetv2/'
|
||||
}
|
||||
} catch(e) {
|
||||
build_passed = false
|
||||
echo e.toString()
|
||||
}
|
||||
try {
|
||||
stage("SPC Dual Octree Recipe") {
|
||||
sh 'cd /kaolin/examples/recipes/spc/ && python spc_dual_octree.py'
|
||||
}
|
||||
} catch(e) {
|
||||
build_passed = false
|
||||
echo e.toString()
|
||||
}
|
||||
try {
|
||||
stage("SPC Trilinear Interpolation Recipe") {
|
||||
sh 'cd /kaolin/examples/recipes/spc/ && python spc_trilinear_interp.py'
|
||||
}
|
||||
} catch(e) {
|
||||
build_passed = false
|
||||
echo e.toString()
|
||||
}
|
||||
try {
|
||||
stage("SPC Convolution 3D Recipe") {
|
||||
sh 'cd /kaolin/examples/recipes/spc/ && python spc_conv3d_example.py'
|
||||
}
|
||||
} catch(e) {
|
||||
build_passed = false
|
||||
echo e.toString()
|
||||
}
|
||||
if (build_passed) {
|
||||
currentBuild.result = "SUCCESS"
|
||||
} else {
|
||||
currentBuild.result = "FAILURE"
|
||||
error "Build failed. See logs..."
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
} // gitlabCommitStatus
|
||||
Reference in New Issue
Block a user