diff --git a/Jenkins/Dockerfile.torch-cpu b/Jenkins/Dockerfile.torch-cpu index b388a01cbf5..394dc1a0ded 100644 --- a/Jenkins/Dockerfile.torch-cpu +++ b/Jenkins/Dockerfile.torch-cpu @@ -37,7 +37,7 @@ # Docker image file to build and test AIMET for PyTorch in a CPU environment ARG REGISTRY -FROM ${REGISTRY}ubuntu:bionic as target +FROM ${REGISTRY}ubuntu:bionic ARG DEBIAN_FRONTEND=noninteractive diff --git a/Jenkins/Jenkinsfile b/Jenkins/Jenkinsfile index 18b07cc4ba7..032c43a2916 100755 --- a/Jenkins/Jenkinsfile +++ b/Jenkins/Jenkinsfile @@ -10,7 +10,7 @@ pipeline { agent { label "${params.BUILD_LABEL_CPU}" } options { timestamps() - timeout( time: 3, unit: 'HOURS' ) + timeout( time: "${params.BUILD_TIMEOUT}", unit: 'HOURS' ) } environment{ def workspace = pwd() @@ -67,16 +67,21 @@ pipeline { echo 'Running commit checks...' script{ env.REPO_OR_FORK_URL = "${REPO_URL}" + using_linaro=env.USE_LINARO if (env.CHANGE_FORK != null) { env.REPO_OR_FORK_URL = "https://github.com/${env.CHANGE_FORK}/aimet" } sh "bash -l -c \"git clone ${env.REPO_OR_FORK_URL} -b ${env.CHANGE_BRANCH} commit_checks_repo\"" + if (didDockerFileChange("tf-gpu")) { + // setting USE LINARO value to EMPTY to rebuild docker image + using_linaro="" + } if ("${env.QCInternalValidation}" == "true") { withCredentials([usernameColonPassword(credentialsId: 'neoci-pat', variable: 'USERPASS')]) { - sh "AIMET_VARIANT=\"tf-gpu\" bash -l -c \"cd ${REPO_NAME} && ${env.DEPENDENCY_DATA_PATH}/commit_check/commit-checks.sh -e AIMET_VARIANT ${env.USE_LINARO} ${env.PREBUILT_DOCKER_IMAGE_URL}\"" + sh "AIMET_VARIANT=\"tf-gpu\" bash -l -c \"cd ${REPO_NAME} && ${env.DEPENDENCY_DATA_PATH}/commit_check/commit-checks.sh -e AIMET_VARIANT ${using_linaro} ${env.PREBUILT_DOCKER_IMAGE_URL}\"" } } else { - sh "AIMET_VARIANT=\"tf-gpu\" bash -l -c \"cd ${REPO_NAME} && ${env.DEPENDENCY_DATA_PATH}/commit_check/commit-checks.sh -e AIMET_VARIANT ${env.USE_LINARO} ${env.PREBUILT_DOCKER_IMAGE_URL}\"" + sh "AIMET_VARIANT=\"tf-gpu\" bash -l -c \"cd ${REPO_NAME} && ${env.DEPENDENCY_DATA_PATH}/commit_check/commit-checks.sh -e AIMET_VARIANT ${using_linaro} ${env.PREBUILT_DOCKER_IMAGE_URL}\"" } } sh "bash -l -c \"rm -rf commit_checks_repo\"" @@ -611,10 +616,23 @@ pipeline { } } +def didDockerFileChange(aimet_variant) { + def changedFiles = pullRequest.files.collect { + it.getFilename() + } + echo "Changed files - ${changedFiles}" + if (changedFiles.contains("Jenkins/Dockerfile.${aimet_variant}".toString())) { + echo "*** Jenkins/Dockerfile.${aimet_variant} changed in PR, so building docker image locally. ***" + return true + } + echo "*** Jenkins/Dockerfile.${aimet_variant} NOT changed in PR, so using pre-built docker image. ***" + return false +} + def runStage(aimet_variant, options) { echo "*** Running stage ${options} for ${aimet_variant} variant on ${env.NODE_NAME} in workspace ${env.WORKSPACE_ROOT} ***" - + using_linaro=env.USE_LINARO if (aimet_variant == "default") { sh """ bash -l -c "cd ${REPO_NAME} && ./buildntest.sh ${options}" @@ -622,27 +640,29 @@ def runStage(aimet_variant, options) { } else { - def changedFiles = pullRequest.files.collect { - it.getFilename() - } - print changedFiles - if (!changedFiles.contains("Jenkins/Dockerfile.${aimet_variant}".toString())) { - print "Jenkins/Dockerfile.${aimet_variant} not found in changed file list, so using Linaro Docker image for ${aimet_variant}" + if (didDockerFileChange(aimet_variant)) { + // setting USE LINARO value to EMPTY to rebuild docker image + using_linaro="" } sh """ - AIMET_VARIANT=${aimet_variant} bash -l -c "cd ${REPO_NAME} && ./buildntest.sh -e AIMET_VARIANT ${options} ${env.USE_LINARO} ${env.PREBUILT_DOCKER_IMAGE_URL}" + AIMET_VARIANT=${aimet_variant} bash -l -c "cd ${REPO_NAME} && ./buildntest.sh -e AIMET_VARIANT ${options} ${using_linaro} ${env.PREBUILT_DOCKER_IMAGE_URL}" """ } } def callAimetExtra(target_branch) { echo target_branch + using_linaro=env.USE_LINARO + if (didDockerFileChange("tf-gpu") || didDockerFileChange("tf-cpu") || didDockerFileChange("torch-gpu") || didDockerFileChange("torch-cpu")) { + // setting USE LINARO value to EMPTY to rebuild docker image + using_linaro="" + } if (target_branch != "develop") { echo "Running AIMET additional stages on ${CHANGE_TARGET} branch ..." - build job: "AIMET-Extra", parameters: [string(name: 'AIMET_GIT_COMMIT', value: "${CHANGE_BRANCH}"), string(name: 'PROJECT_BRANCH', value: target_branch)] + build job: "AIMET-Extra", parameters: [string(name: 'AIMET_GIT_COMMIT', value: "${CHANGE_BRANCH}"), string(name: 'PROJECT_BRANCH', value: target_branch), string(name: 'USE_LINARO', value: "${using_linaro}")] } else { echo "Running AIMET additional stages on develop branch ..." - build job: "AIMET-Extra", parameters: [string(name: 'AIMET_GIT_COMMIT', value: "${CHANGE_BRANCH}")] + build job: "AIMET-Extra", parameters: [string(name: 'AIMET_GIT_COMMIT', value: "${CHANGE_BRANCH}"), string(name: 'USE_LINARO', value: "${using_linaro}")] } }