diff --git a/build/build_image.sh b/build/build_image.sh index 0e2fb13dad..e548af271f 100755 --- a/build/build_image.sh +++ b/build/build_image.sh @@ -35,12 +35,12 @@ if [ -z "$IMAGE_ARCH" ]; then else IMAGE_ARCH="arm64" fi - fi echo ${IMAGE_ARCH} -BUILD_ARGS="${BUILD_ARGS:-}" + +BUILD_ARGS="${BUILD_ARGS:---build-arg TARGETARCH=${IMAGE_ARCH}}" pushd "${toplevel}" diff --git a/build/builder.sh b/build/builder.sh index 4c7cbbf081..9802764c7a 100755 --- a/build/builder.sh +++ b/build/builder.sh @@ -23,6 +23,12 @@ if [[ "${1-}" == "down" ]]; then exit 0 fi +PLATFORM_ARCH="${PLATFORM_ARCH:-${IMAGE_ARCH}}" + +export IMAGE_ARCH=${PLATFORM_ARCH} + +echo ${IMAGE_ARCH} + mkdir -p "${DOCKER_VOLUME_DIRECTORY:-.docker}/${IMAGE_ARCH}-${OS_NAME}-ccache" mkdir -p "${DOCKER_VOLUME_DIRECTORY:-.docker}/${IMAGE_ARCH}-${OS_NAME}-go-mod" mkdir -p "${DOCKER_VOLUME_DIRECTORY:-.docker}/${IMAGE_ARCH}-${OS_NAME}-vscode-extensions" diff --git a/ci/jenkins/PublishImages.groovy b/ci/jenkins/PublishImages.groovy index 9020e4f4f8..2139fe5834 100644 --- a/ci/jenkins/PublishImages.groovy +++ b/ci/jenkins/PublishImages.groovy @@ -39,12 +39,15 @@ pipeline { } } - stage('Publish Milvus Images & Build Centos Milvus'){ + stage('Build & Publish Milvus Images'){ parallel { stage('Build Milvus Images on amd') { steps { container('main') { script { + sh './build/set_docker_mirror.sh' + sh "build/builder.sh /bin/bash -c \"make install\"" + dir ("imageTag"){ try{ unstash 'imageTag' @@ -55,8 +58,17 @@ pipeline { } } - sh './build/set_docker_mirror.sh' - sh "build/builder.sh /bin/bash -c \"make install\"" + withCredentials([usernamePassword(credentialsId: "${env.DOCKER_CREDENTIALS_ID}", usernameVariable: 'DOCKER_USERNAME', passwordVariable: 'DOCKER_PASSWORD')]){ + sh "docker login -u '${DOCKER_USERNAME}' -p '${DOCKER_PASSWORD}'" + sh """ + export MILVUS_IMAGE_REPO="${env.TARGET_REPO}/milvus" + export MILVUS_HARBOR_IMAGE_REPO="${env.HARBOR_REPO}/milvus/milvus" + export MILVUS_IMAGE_TAG="${imageTag}-amd64" + build/build_image.sh + docker push \${MILVUS_IMAGE_REPO}:\${MILVUS_IMAGE_TAG} + docker logout + """ + } withCredentials([usernamePassword(credentialsId: "${env.CI_DOCKER_CREDENTIAL_ID}", usernameVariable: 'CI_REGISTRY_USERNAME', passwordVariable: 'CI_REGISTRY_PASSWORD')]){ @@ -65,7 +77,6 @@ pipeline { export MILVUS_IMAGE_REPO="${env.TARGET_REPO}/milvus" export MILVUS_HARBOR_IMAGE_REPO="${env.HARBOR_REPO}/milvus/milvus" export MILVUS_IMAGE_TAG="${imageTag}-amd64" - BUILD_ARGS="--build-arg TARGETARCH=amd64" build/build_image.sh docker tag \${MILVUS_IMAGE_REPO}:\${MILVUS_IMAGE_TAG} \${MILVUS_HARBOR_IMAGE_REPO}:\${MILVUS_IMAGE_TAG} docker push \${MILVUS_HARBOR_IMAGE_REPO}:\${MILVUS_IMAGE_TAG} docker logout @@ -84,9 +95,8 @@ pipeline { steps { script { sh """ - sed -i "s/amd64/arm64/g" .env cp -r /tmp/krte/cache/.docker . - build/builder.sh /bin/bash -c "make install" + PLATFORM_ARCH="arm64" build/builder.sh /bin/bash -c "make install" """ dir ("imageTag"){ @@ -99,6 +109,18 @@ pipeline { } } + withCredentials([usernamePassword(credentialsId: "${env.DOCKER_CREDENTIALS_ID}", usernameVariable: 'DOCKER_USERNAME', passwordVariable: 'DOCKER_PASSWORD')]){ + sh "docker login -u '${DOCKER_USERNAME}' -p '${DOCKER_PASSWORD}'" + sh """ + export MILVUS_IMAGE_REPO="${env.TARGET_REPO}/milvus" + export MILVUS_HARBOR_IMAGE_REPO="${env.HARBOR_REPO}/milvus/milvus" + export MILVUS_IMAGE_TAG="${imageTag}-arm64" + BUILD_ARGS="--build-arg TARGETARCH=arm64" build/build_image.sh + docker push \${MILVUS_IMAGE_REPO}:\${MILVUS_IMAGE_TAG} + docker logout + """ + } + withCredentials([usernamePassword(credentialsId: "${env.CI_DOCKER_CREDENTIAL_ID}", usernameVariable: 'CI_REGISTRY_USERNAME', passwordVariable: 'CI_REGISTRY_PASSWORD')]){ sh "docker login ${env.HARBOR_REPO} -u '${CI_REGISTRY_USERNAME}' -p '${CI_REGISTRY_PASSWORD}'" @@ -106,11 +128,11 @@ pipeline { export MILVUS_IMAGE_REPO="${env.TARGET_REPO}/milvus" export MILVUS_HARBOR_IMAGE_REPO="${env.HARBOR_REPO}/milvus/milvus" export MILVUS_IMAGE_TAG="${imageTag}-arm64" - IMAGE_ARCH='arm64' BUILD_ARGS="--build-arg TARGETARCH=arm64" build/build_image.sh docker tag \${MILVUS_IMAGE_REPO}:\${MILVUS_IMAGE_TAG} \${MILVUS_HARBOR_IMAGE_REPO}:\${MILVUS_IMAGE_TAG} docker push \${MILVUS_HARBOR_IMAGE_REPO}:\${MILVUS_IMAGE_TAG} docker logout docker rmi \${MILVUS_IMAGE_REPO}:\${MILVUS_IMAGE_TAG} -f + docker rmi \${MILVUS_HARBOR_IMAGE_REPO}:\${MILVUS_IMAGE_TAG} -f """ } } @@ -118,6 +140,9 @@ pipeline { post { always { script { + // if (currentBuild.currentResult == "SUCCESS") { + // sh "cp -r .docker /tmp/krte/cache/" + // } sh """ pwd sudo rm -rf .env .docker @@ -131,9 +156,6 @@ pipeline { } } stage ('publish multi-platform image') { - // agent { - // label 'arm' - // } steps { script { dir ("imageTag"){ @@ -159,10 +181,6 @@ pipeline { docker pull \${MILVUS_HARBOR_IMAGE_REPO}:\${ARM_MILVUS_IMAGE_TAG} docker tag \${MILVUS_HARBOR_IMAGE_REPO}:\${ARM_MILVUS_IMAGE_TAG} \${MILVUS_IMAGE_REPO}:\${ARM_MILVUS_IMAGE_TAG} - docker push \${MILVUS_IMAGE_REPO}:\${AMD_MILVUS_IMAGE_TAG} - docker push \${MILVUS_IMAGE_REPO}:\${ARM_MILVUS_IMAGE_TAG} - - docker manifest create \${MILVUS_IMAGE_REPO}:\${MILVUS_IMAGE_TAG} \${MILVUS_IMAGE_REPO}:\${AMD_MILVUS_IMAGE_TAG} \${MILVUS_IMAGE_REPO}:\${ARM_MILVUS_IMAGE_TAG} docker manifest annotate \${MILVUS_IMAGE_REPO}:\${MILVUS_IMAGE_TAG} \${MILVUS_IMAGE_REPO}:\${AMD_MILVUS_IMAGE_TAG} --os linux --arch amd64 @@ -189,7 +207,6 @@ pipeline { export AMD_MILVUS_IMAGE_TAG="${imageTag}-amd64" export MILVUS_IMAGE_TAG="${imageTag}" - docker manifest create \${MILVUS_HARBOR_IMAGE_REPO}:\${MILVUS_IMAGE_TAG} \${MILVUS_HARBOR_IMAGE_REPO}:\${AMD_MILVUS_IMAGE_TAG} \${MILVUS_HARBOR_IMAGE_REPO}:\${ARM_MILVUS_IMAGE_TAG} docker manifest annotate \${MILVUS_HARBOR_IMAGE_REPO}:\${MILVUS_IMAGE_TAG} \${MILVUS_HARBOR_IMAGE_REPO}:\${AMD_MILVUS_IMAGE_TAG} --os linux --arch amd64