提交测试

This commit is contained in:
2024-01-16 17:22:21 +08:00
parent 92862c0372
commit 73635fda01
654 changed files with 178015 additions and 2 deletions

View File

@@ -0,0 +1,167 @@
#!/usr/bin/env groovy
docker_registry_server = targetImageTag.split(':')[0..1].join(':')
// This will be the "RUN" displayed on Blue Ocean
currentBuild.displayName = targetImageTag.split(':')[2]
// This will be the "MESSAGE" displayed on Blue Ocean
currentBuild.description = sourceBranch + ": " + commitHash
podTemplate(
cloud:'sc-ipp-blossom-prod',
//volumes: [persistentVolumeClaim(mountPath: '/mount_binaries', claimName: 'kaolin-pvc', readOnly: false)],
yaml:'''
apiVersion: v1
kind: Pod
spec:
volumes:
- name: pvc-mount
persistentVolumeClaim:
claimName: 'kaolin-pvc'
containers:
- name: docker
image: docker:19.03.1
command:
- sleep
args:
- 1d
env:
- name: DOCKER_HOST
value: tcp://localhost:2375
volumeMounts:
- mountPath: /mount_binaries
name: pvc-mount
- name: docker-daemon
image: docker:19.03.1-dind
securityContext:
privileged: true
env:
- name: DOCKER_TLS_CERTDIR
value: ""
resources:
requests:
memory: 32Gi
cpu: 12
limits:
memory: 32Gi
cpu: 12
volumeMounts:
- mountPath: /mount_binaries
name: pvc-mount
''') {
node(POD_LABEL) {
container("docker") {
try {
gitlabCommitStatus("build-${configName}") {
stage("Checkout") {
checkout([
$class: 'GitSCM',
branches: [[name: "${commitHash}"]],
extensions: [[
$class: 'SubmoduleOption',
disableSubmodules: false,
parentCredentials: false,
recursiveSubmodules: true,
reference: '',
trackingSubmodules: false
]],
userRemoteConfigs: [[
credentialsId: 'kaolin-gitlab-access-token-as-password',
url: "${repoUrl}"
]]
])
}
docker.withRegistry("https://${docker_registry_server}", 'kaolin-gitlab-access-token-as-password') {
stage("Build") {
baseImage = docker.build(
"${targetImageTag}-base",
"""--no-cache --network host -f ./tools/linux/Dockerfile.base \
--build-arg CUDA_VERSION=${cudaVer} \
--build-arg CUDNN_VERSION=${cudnnVer} \
--build-arg PYTHON_VERSION=${pythonVer} \
--build-arg PYTORCH_VERSION=${torchVer} \
.
""")
targetImage = docker.build(
"${targetImageTag}",
"""--no-cache --network host -f ./tools/linux/Dockerfile.install \
--build-arg BASE_IMAGE=${targetImageTag}-base \
.
""")
}
if (buildWheel.toBoolean()) {
stage("Build wheel") {
cudaTag = cudaVer.split('\\.')[0..<2].join('')
targetImage.inside() {
sh """
ls .
python setup.py bdist_wheel --dist-dir .
"""
}
pythonVerTag = pythonVer.split('\\.').join('')
Integer MinorVal = pythonVer.split('\\.')[1].toInteger()
pythonVerAbiTag = (MinorVal < 8) ? pythonVerTag + 'm' : pythonVerTag
kaolinVer = sh(script: "cat ./version.txt", returnStdout: true).trim()
baseWheelName = "kaolin-${kaolinVer}-cp${pythonVerTag}-cp${pythonVerAbiTag}"
wheelName = "${baseWheelName}-linux_x86_64.whl"
}
stage("Reinstall from wheel") {
targetImage = docker.build(
"${targetImageTag}",
"""--no-cache --network host -f ./tools/linux/Dockerfile.install_wheel \
--build-arg BASE_IMAGE=${targetImageTag}-base \
--build-arg WHEEL_NAME=${wheelName} \
.
""")
}
stage("Push wheel to volume") {
sh """
mkdir -p /mount_binaries/whl/torch-${torchVer}_cu${cudaTag}
cp ./${wheelName} /mount_binaries/whl/torch-${torchVer}_cu${cudaTag}/${wheelName}
"""
}
stage("Push wheel to artifact") {
archiveArtifacts artifacts: "${wheelName}"
}
}
stage("Push") {
targetImage.push()
}
}
}
} catch (e) {
// In case of build failure, we need to update the following tests as we won't run them.
for (arch in archsToTest.split(';')) {
updateGitlabCommitStatus(name: "test-${configName}-${arch}", state: 'canceled')
}
throw e
}
stage("Launch tests") {
jobMap = [:]
for (arch in archsToTest.split(';')) {
jobMap["${arch}"] = prepareUbuntuTestJob(arch)
}
parallel jobMap
}
}
}
}
def prepareUbuntuTestJob(arch) {
return {
stage("Test ${arch}") {
build job: "ubuntu_test_template_CI",
parameters: [
string(name: 'sourceBranch', value: "${sourceBranch}"),
string(name: 'configName', value: "${configName}"),
string(name: 'imageTag', value: "${targetImageTag}"),
string(name: 'arch', value: "${arch}"),
string(name: 'commitHash', value: "${commitHash}")
],
// This node doesn't need to be held while tests run.
wait: false,
// Success of this script depend only on successful build
// and launch of tests, not successful tests.
propagate: false
}
}
}