From db185383e0bf5c16137b7851b7e61b2ec5925078 Mon Sep 17 00:00:00 2001 From: Peixin Li Date: Thu, 4 Mar 2021 11:17:46 +0800 Subject: [PATCH 1/5] remove docker build in pre-merge Signed-off-by: Peixin Li --- jenkins/Jenkinsfile-blossom.premerge | 38 +++++++--------------------- 1 file changed, 9 insertions(+), 29 deletions(-) diff --git a/jenkins/Jenkinsfile-blossom.premerge b/jenkins/Jenkinsfile-blossom.premerge index 3d7799cee90..b6ad5341b29 100644 --- a/jenkins/Jenkinsfile-blossom.premerge +++ b/jenkins/Jenkinsfile-blossom.premerge @@ -28,8 +28,6 @@ import ipp.blossom.* def pluginPremerge def githubHelper // blossom github helper -def IMAGE_PREMERGE // temp image for premerge test -def PREMERGE_TAG def skipped = false pipeline { @@ -89,7 +87,7 @@ pipeline { agent { kubernetes { - label "premerge-docker-${BUILD_TAG}" + label "premerge-prepare-${BUILD_TAG}" cloud 'sc-ipp-blossom-prod' yaml pod.getDockerBuildYAML() workspaceVolume persistentVolumeClaimWorkspaceVolume(claimName: "${PVC}", readOnly: false) @@ -104,13 +102,13 @@ pipeline { changelog: false, poll: true, scm: [ - $class: 'GitSCM', branches: [[name: githubHelper.getMergedSHA()]], + $class : 'GitSCM', branches: [[name: githubHelper.getMergedSHA()]], doGenerateSubmoduleConfigurations: false, - submoduleCfg: [], - userRemoteConfigs: [[ - credentialsId: 'github-token', - url: githubHelper.getCloneUrl(), - refspec: '+refs/pull/*/merge:refs/remotes/origin/pr/*']] + submoduleCfg : [], + userRemoteConfigs : [[ + credentialsId: 'github-token', + url : githubHelper.getCloneUrl(), + refspec : '+refs/pull/*/merge:refs/remotes/origin/pr/*']] ] ) @@ -118,18 +116,8 @@ pipeline { def CUDA_NAME = sh(returnStdout: true, script: '. jenkins/version-def.sh>&2 && echo -n $CUDA_CLASSIFIER | sed "s/-/./g"') - IMAGE_TAG = "dev-ubuntu16-${CUDA_NAME}" - CACHE_IMAGE_NAME = "${ARTIFACTORY_NAME}/sw-spark-docker/plugin:${IMAGE_TAG}" - - sh "docker pull $CACHE_IMAGE_NAME || true" - - PREMERGE_TAG = "${IMAGE_TAG}-${BUILD_TAG}" - IMAGE_PREMERGE = "${ARTIFACTORY_NAME}/sw-spark-docker-local/plugin:${PREMERGE_TAG}" - def CUDA_VER = "$CUDA_NAME" - "cuda" - docker.build(IMAGE_PREMERGE, "-f jenkins/Dockerfile-blossom.ubuntu16 --build-arg CUDA_VER=$CUDA_VER --cache-from $CACHE_IMAGE_NAME -t $IMAGE_PREMERGE .") - uploadDocker(IMAGE_PREMERGE) - - pluginPremerge = pod.getGPUYAML("${IMAGE_PREMERGE}", "${GPU_TYPE}", '8', '32Gi') // cpu: 8, memory: 32Gi + def IMAGE_PREMERGE = "$ARTIFACTORY_NAME/sw-spark-docker-local/plugin:dev-ubuntu16-$CUDA_NAME-blossom-dev" + pluginPremerge = pod.getGPUYAML("${IMAGE_PREMERGE}", "${GPU_TYPE}", '8', '32Gi') } } } @@ -177,7 +165,6 @@ pipeline { return } - deleteDockerTempTag(PREMERGE_TAG) // clean premerge temp image if (currentBuild.currentResult == "SUCCESS") { githubHelper.updateCommitStatus("$BUILD_URL", "Success", GitHubCommitState.SUCCESS) } else { @@ -200,10 +187,3 @@ void uploadDocker(String IMAGE_NAME) { """ } } - -void deleteDockerTempTag(String tag) { - if (!tag?.trim()) { // return if the tag is null or empty - return - } - sh "curl -u $URM_CREDS_USR:$URM_CREDS_PSW -XDELETE https://${ARTIFACTORY_NAME}/artifactory/sw-spark-docker-local/plugin/${tag} || true" -} From fd71fc1feaf06cae71677792caa838ff6cc0901a Mon Sep 17 00:00:00 2001 From: Peixin Li Date: Mon, 8 Mar 2021 09:45:58 +0800 Subject: [PATCH 2/5] Revert "remove docker build in pre-merge" This reverts commit bbc9c5d56d48ec18a1ddb428054d470a1eaa0041. --- jenkins/Jenkinsfile-blossom.premerge | 38 +++++++++++++++++++++------- 1 file changed, 29 insertions(+), 9 deletions(-) diff --git a/jenkins/Jenkinsfile-blossom.premerge b/jenkins/Jenkinsfile-blossom.premerge index b6ad5341b29..3d7799cee90 100644 --- a/jenkins/Jenkinsfile-blossom.premerge +++ b/jenkins/Jenkinsfile-blossom.premerge @@ -28,6 +28,8 @@ import ipp.blossom.* def pluginPremerge def githubHelper // blossom github helper +def IMAGE_PREMERGE // temp image for premerge test +def PREMERGE_TAG def skipped = false pipeline { @@ -87,7 +89,7 @@ pipeline { agent { kubernetes { - label "premerge-prepare-${BUILD_TAG}" + label "premerge-docker-${BUILD_TAG}" cloud 'sc-ipp-blossom-prod' yaml pod.getDockerBuildYAML() workspaceVolume persistentVolumeClaimWorkspaceVolume(claimName: "${PVC}", readOnly: false) @@ -102,13 +104,13 @@ pipeline { changelog: false, poll: true, scm: [ - $class : 'GitSCM', branches: [[name: githubHelper.getMergedSHA()]], + $class: 'GitSCM', branches: [[name: githubHelper.getMergedSHA()]], doGenerateSubmoduleConfigurations: false, - submoduleCfg : [], - userRemoteConfigs : [[ - credentialsId: 'github-token', - url : githubHelper.getCloneUrl(), - refspec : '+refs/pull/*/merge:refs/remotes/origin/pr/*']] + submoduleCfg: [], + userRemoteConfigs: [[ + credentialsId: 'github-token', + url: githubHelper.getCloneUrl(), + refspec: '+refs/pull/*/merge:refs/remotes/origin/pr/*']] ] ) @@ -116,8 +118,18 @@ pipeline { def CUDA_NAME = sh(returnStdout: true, script: '. jenkins/version-def.sh>&2 && echo -n $CUDA_CLASSIFIER | sed "s/-/./g"') - def IMAGE_PREMERGE = "$ARTIFACTORY_NAME/sw-spark-docker-local/plugin:dev-ubuntu16-$CUDA_NAME-blossom-dev" - pluginPremerge = pod.getGPUYAML("${IMAGE_PREMERGE}", "${GPU_TYPE}", '8', '32Gi') + IMAGE_TAG = "dev-ubuntu16-${CUDA_NAME}" + CACHE_IMAGE_NAME = "${ARTIFACTORY_NAME}/sw-spark-docker/plugin:${IMAGE_TAG}" + + sh "docker pull $CACHE_IMAGE_NAME || true" + + PREMERGE_TAG = "${IMAGE_TAG}-${BUILD_TAG}" + IMAGE_PREMERGE = "${ARTIFACTORY_NAME}/sw-spark-docker-local/plugin:${PREMERGE_TAG}" + def CUDA_VER = "$CUDA_NAME" - "cuda" + docker.build(IMAGE_PREMERGE, "-f jenkins/Dockerfile-blossom.ubuntu16 --build-arg CUDA_VER=$CUDA_VER --cache-from $CACHE_IMAGE_NAME -t $IMAGE_PREMERGE .") + uploadDocker(IMAGE_PREMERGE) + + pluginPremerge = pod.getGPUYAML("${IMAGE_PREMERGE}", "${GPU_TYPE}", '8', '32Gi') // cpu: 8, memory: 32Gi } } } @@ -165,6 +177,7 @@ pipeline { return } + deleteDockerTempTag(PREMERGE_TAG) // clean premerge temp image if (currentBuild.currentResult == "SUCCESS") { githubHelper.updateCommitStatus("$BUILD_URL", "Success", GitHubCommitState.SUCCESS) } else { @@ -187,3 +200,10 @@ void uploadDocker(String IMAGE_NAME) { """ } } + +void deleteDockerTempTag(String tag) { + if (!tag?.trim()) { // return if the tag is null or empty + return + } + sh "curl -u $URM_CREDS_USR:$URM_CREDS_PSW -XDELETE https://${ARTIFACTORY_NAME}/artifactory/sw-spark-docker-local/plugin/${tag} || true" +} From 6e1417c39b59bdcb50cc11354176d1231cc3fc60 Mon Sep 17 00:00:00 2001 From: Peixin Li Date: Mon, 8 Mar 2021 11:03:03 +0800 Subject: [PATCH 3/5] add dockerfile-modified logic --- jenkins/Jenkinsfile-blossom.premerge | 35 ++++++++++++++++++++-------- 1 file changed, 25 insertions(+), 10 deletions(-) diff --git a/jenkins/Jenkinsfile-blossom.premerge b/jenkins/Jenkinsfile-blossom.premerge index 3d7799cee90..d2a165ce89d 100644 --- a/jenkins/Jenkinsfile-blossom.premerge +++ b/jenkins/Jenkinsfile-blossom.premerge @@ -28,6 +28,7 @@ import ipp.blossom.* def pluginPremerge def githubHelper // blossom github helper +def TEMP_IMAGE_BUILD = true def IMAGE_PREMERGE // temp image for premerge test def PREMERGE_TAG def skipped = false @@ -118,16 +119,27 @@ pipeline { def CUDA_NAME = sh(returnStdout: true, script: '. jenkins/version-def.sh>&2 && echo -n $CUDA_CLASSIFIER | sed "s/-/./g"') - IMAGE_TAG = "dev-ubuntu16-${CUDA_NAME}" - CACHE_IMAGE_NAME = "${ARTIFACTORY_NAME}/sw-spark-docker/plugin:${IMAGE_TAG}" + // check if pre-merge dockerfile modified + def dockerfileModified = sh(returnStdout: true, + script: 'BASE=$(git --no-pager log --oneline -1 | awk \'{ print $NF }\'); ' + + 'git --no-pager diff --name-only HEAD $(git merge-base HEAD $BASE) ' + + '-- jenkins/Dockerfile-blossom.ubuntu16 || true') + if (!dockerfileModified?.trim()) { + TEMP_IMAGE_BUILD = false + } + + if (TEMP_IMAGE_BUILD) { + IMAGE_TAG = "dev-ubuntu16-${CUDA_NAME}" + PREMERGE_TAG = "${IMAGE_TAG}-${BUILD_TAG}" + IMAGE_PREMERGE = "${ARTIFACTORY_NAME}/sw-spark-docker-local/plugin:${PREMERGE_TAG}" + def CUDA_VER = "$CUDA_NAME" - "cuda" + docker.build(IMAGE_PREMERGE, "-f jenkins/Dockerfile-blossom.ubuntu16 --build-arg CUDA_VER=$CUDA_VER -t $IMAGE_PREMERGE .") + uploadDocker(IMAGE_PREMERGE) + } else { + // if no pre-merge dockerfile change, use nightly image + IMAGE_PREMERGE = "$ARTIFACTORY_NAME/sw-spark-docker-local/plugin:dev-ubuntu16-$CUDA_NAME-blossom-dev" + } - sh "docker pull $CACHE_IMAGE_NAME || true" - - PREMERGE_TAG = "${IMAGE_TAG}-${BUILD_TAG}" - IMAGE_PREMERGE = "${ARTIFACTORY_NAME}/sw-spark-docker-local/plugin:${PREMERGE_TAG}" - def CUDA_VER = "$CUDA_NAME" - "cuda" - docker.build(IMAGE_PREMERGE, "-f jenkins/Dockerfile-blossom.ubuntu16 --build-arg CUDA_VER=$CUDA_VER --cache-from $CACHE_IMAGE_NAME -t $IMAGE_PREMERGE .") - uploadDocker(IMAGE_PREMERGE) pluginPremerge = pod.getGPUYAML("${IMAGE_PREMERGE}", "${GPU_TYPE}", '8', '32Gi') // cpu: 8, memory: 32Gi } @@ -177,12 +189,15 @@ pipeline { return } - deleteDockerTempTag(PREMERGE_TAG) // clean premerge temp image if (currentBuild.currentResult == "SUCCESS") { githubHelper.updateCommitStatus("$BUILD_URL", "Success", GitHubCommitState.SUCCESS) } else { githubHelper.updateCommitStatus("$BUILD_URL", "Fail", GitHubCommitState.FAILURE) } + + if (TEMP_IMAGE_BUILD) { + deleteDockerTempTag("${PREMERGE_TAG}") // clean premerge temp image + } } } } From bb96c9c4cf057e7e2a065f9e09c2e9430f7b22cb Mon Sep 17 00:00:00 2001 From: Peixin Li Date: Tue, 9 Mar 2021 09:24:22 +0800 Subject: [PATCH 4/5] make dockerfile location a var --- jenkins/Jenkinsfile-blossom.premerge | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/jenkins/Jenkinsfile-blossom.premerge b/jenkins/Jenkinsfile-blossom.premerge index d2a165ce89d..e176bfd1e9c 100644 --- a/jenkins/Jenkinsfile-blossom.premerge +++ b/jenkins/Jenkinsfile-blossom.premerge @@ -29,6 +29,7 @@ def pluginPremerge def githubHelper // blossom github helper def TEMP_IMAGE_BUILD = true +def PREMERGE_DOCKERFILE = 'jenkins/Dockerfile-blossom.ubuntu16' def IMAGE_PREMERGE // temp image for premerge test def PREMERGE_TAG def skipped = false @@ -123,7 +124,7 @@ pipeline { def dockerfileModified = sh(returnStdout: true, script: 'BASE=$(git --no-pager log --oneline -1 | awk \'{ print $NF }\'); ' + 'git --no-pager diff --name-only HEAD $(git merge-base HEAD $BASE) ' + - '-- jenkins/Dockerfile-blossom.ubuntu16 || true') + "-- ${PREMERGE_DOCKERFILE} || true") if (!dockerfileModified?.trim()) { TEMP_IMAGE_BUILD = false } From fae44ea0e66a3883c0571db484b5db4a9423392d Mon Sep 17 00:00:00 2001 From: Peixin Li Date: Tue, 9 Mar 2021 22:52:33 +0800 Subject: [PATCH 5/5] use var in docker build --- jenkins/Jenkinsfile-blossom.premerge | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/jenkins/Jenkinsfile-blossom.premerge b/jenkins/Jenkinsfile-blossom.premerge index e176bfd1e9c..b7c010c562a 100644 --- a/jenkins/Jenkinsfile-blossom.premerge +++ b/jenkins/Jenkinsfile-blossom.premerge @@ -134,7 +134,7 @@ pipeline { PREMERGE_TAG = "${IMAGE_TAG}-${BUILD_TAG}" IMAGE_PREMERGE = "${ARTIFACTORY_NAME}/sw-spark-docker-local/plugin:${PREMERGE_TAG}" def CUDA_VER = "$CUDA_NAME" - "cuda" - docker.build(IMAGE_PREMERGE, "-f jenkins/Dockerfile-blossom.ubuntu16 --build-arg CUDA_VER=$CUDA_VER -t $IMAGE_PREMERGE .") + docker.build(IMAGE_PREMERGE, "-f ${PREMERGE_DOCKERFILE} --build-arg CUDA_VER=$CUDA_VER -t $IMAGE_PREMERGE .") uploadDocker(IMAGE_PREMERGE) } else { // if no pre-merge dockerfile change, use nightly image