mirror of https://github.com/milvus-io/milvus.git
Publish milvus image on arm64 (#26509)
Signed-off-by: Bennu-Li <yunmei.li@zilliz.com>pull/26513/head
parent
d13ca54414
commit
fe16cdbca8
|
@ -38,7 +38,9 @@ if [ -z "$IMAGE_ARCH" ]; then
|
|||
|
||||
fi
|
||||
|
||||
BUILD_ARGS=""
|
||||
echo ${IMAGE_ARCH}
|
||||
|
||||
BUILD_ARGS="${BUILD_ARGS:-}"
|
||||
|
||||
pushd "${toplevel}"
|
||||
|
||||
|
|
|
@ -14,7 +14,7 @@ pipeline {
|
|||
|
||||
options {
|
||||
timestamps()
|
||||
timeout(time: 36, unit: 'MINUTES')
|
||||
timeout(time: 100, unit: 'MINUTES')
|
||||
// parallelsAlwaysFailFast()
|
||||
disableConcurrentBuilds()
|
||||
}
|
||||
|
@ -27,38 +27,46 @@ pipeline {
|
|||
}
|
||||
|
||||
stages {
|
||||
stage('Generat Image Tag') {
|
||||
steps {
|
||||
script {
|
||||
def date = sh(returnStdout: true, script: 'date +%Y%m%d').trim()
|
||||
def gitShortCommit = sh(returnStdout: true, script: 'git rev-parse --short HEAD').trim()
|
||||
def imageTag = "${env.BRANCH_NAME}-${date}-${gitShortCommit}"
|
||||
sh "echo ${imageTag} > imageTag.txt"
|
||||
stash includes: 'imageTag.txt', name: 'imageTag'
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
stage('Publish Milvus Images & Build Centos Milvus'){
|
||||
parallel {
|
||||
stage('Publish Milvus Images') {
|
||||
stage('Build Milvus Images on amd') {
|
||||
steps {
|
||||
container('main') {
|
||||
script {
|
||||
dir ("imageTag"){
|
||||
try{
|
||||
unstash 'imageTag'
|
||||
imageTag=sh(returnStdout: true, script: 'cat imageTag.txt | tr -d \'\n\r\'')
|
||||
}catch(e){
|
||||
print "No Image Tag info remained ,please rerun build to build new image."
|
||||
exit 1
|
||||
}
|
||||
}
|
||||
|
||||
sh './build/set_docker_mirror.sh'
|
||||
sh "build/builder.sh /bin/bash -c \"make install\""
|
||||
|
||||
def date = sh(returnStdout: true, script: 'date +%Y%m%d').trim()
|
||||
def gitShortCommit = sh(returnStdout: true, script: 'git rev-parse --short HEAD').trim()
|
||||
|
||||
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="${env.BRANCH_NAME}-${date}-${gitShortCommit}"
|
||||
build/build_image.sh
|
||||
docker push \${MILVUS_IMAGE_REPO}:\${MILVUS_IMAGE_TAG}
|
||||
docker tag \${MILVUS_IMAGE_REPO}:\${MILVUS_IMAGE_TAG} \${MILVUS_IMAGE_REPO}:${env.BRANCH_NAME}-latest
|
||||
docker tag \${MILVUS_IMAGE_REPO}:\${MILVUS_IMAGE_TAG} \${MILVUS_HARBOR_IMAGE_REPO}:\${MILVUS_IMAGE_TAG}
|
||||
docker push \${MILVUS_IMAGE_REPO}:${env.BRANCH_NAME}-latest
|
||||
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}'"
|
||||
sh """
|
||||
export MILVUS_IMAGE_REPO="${env.TARGET_REPO}/milvus"
|
||||
export MILVUS_HARBOR_IMAGE_REPO="${env.HARBOR_REPO}/milvus/milvus"
|
||||
export MILVUS_IMAGE_TAG="${env.BRANCH_NAME}-${date}-${gitShortCommit}"
|
||||
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
|
||||
"""
|
||||
|
@ -67,28 +75,134 @@ pipeline {
|
|||
}
|
||||
}
|
||||
}
|
||||
stage('Build Centos Milvus Image'){
|
||||
|
||||
|
||||
stage('Build Milvus Images on arm') {
|
||||
agent {
|
||||
kubernetes {
|
||||
defaultContainer 'main'
|
||||
yamlFile "ci/jenkins/pod/rte.yaml"
|
||||
customWorkspace '/home/jenkins/agent/workspace'
|
||||
}
|
||||
label 'arm'
|
||||
}
|
||||
steps {
|
||||
container('main') {
|
||||
script {
|
||||
sh """
|
||||
sed -i "s/amd64/arm64/g" .env
|
||||
cp -r /tmp/krte/cache/.docker .
|
||||
build/builder.sh /bin/bash -c "make install"
|
||||
"""
|
||||
|
||||
dir ("imageTag"){
|
||||
try{
|
||||
unstash 'imageTag'
|
||||
imageTag=sh(returnStdout: true, script: 'cat imageTag.txt | tr -d \'\n\r\'')
|
||||
}catch(e){
|
||||
print "No Image Tag info remained ,please rerun build to build new image."
|
||||
exit 1
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
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}'"
|
||||
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"
|
||||
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
|
||||
"""
|
||||
}
|
||||
}
|
||||
}
|
||||
post {
|
||||
always {
|
||||
script {
|
||||
sh './build/set_docker_mirror.sh'
|
||||
sh "OS_NAME=centos7 build/builder.sh /bin/bash -c \"make install\""
|
||||
sh "OS_NAME=centos7 build/build_image.sh "
|
||||
sh """
|
||||
pwd
|
||||
sudo rm -rf .env .docker
|
||||
sudo rm -rf *
|
||||
"""
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
stage ('publish multi-platform image') {
|
||||
// agent {
|
||||
// label 'arm'
|
||||
// }
|
||||
steps {
|
||||
script {
|
||||
dir ("imageTag"){
|
||||
try{
|
||||
unstash 'imageTag'
|
||||
imageTag=sh(returnStdout: true, script: 'cat imageTag.txt | tr -d \'\n\r\'')
|
||||
}catch(e){
|
||||
print "No Image Tag info remained ,please rerun build to build new image."
|
||||
exit 1
|
||||
}
|
||||
}
|
||||
|
||||
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 ARM_MILVUS_IMAGE_TAG="${imageTag}-arm64"
|
||||
export AMD_MILVUS_IMAGE_TAG="${imageTag}-amd64"
|
||||
export MILVUS_IMAGE_TAG="${imageTag}"
|
||||
|
||||
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
|
||||
docker manifest annotate \${MILVUS_IMAGE_REPO}:\${MILVUS_IMAGE_TAG} \${MILVUS_IMAGE_REPO}:\${ARM_MILVUS_IMAGE_TAG} --os linux --arch arm64
|
||||
docker manifest push \${MILVUS_IMAGE_REPO}:\${MILVUS_IMAGE_TAG}
|
||||
|
||||
docker manifest create \${MILVUS_IMAGE_REPO}:${env.BRANCH_NAME}-latest \${MILVUS_IMAGE_REPO}:\${AMD_MILVUS_IMAGE_TAG} \${MILVUS_IMAGE_REPO}:\${ARM_MILVUS_IMAGE_TAG}
|
||||
docker manifest annotate \${MILVUS_IMAGE_REPO}:${env.BRANCH_NAME}-latest \${MILVUS_IMAGE_REPO}:\${AMD_MILVUS_IMAGE_TAG} --os linux --arch amd64
|
||||
docker manifest annotate \${MILVUS_IMAGE_REPO}:${env.BRANCH_NAME}-latest \${MILVUS_IMAGE_REPO}:\${ARM_MILVUS_IMAGE_TAG} --os linux --arch arm64
|
||||
docker manifest push \${MILVUS_IMAGE_REPO}:${env.BRANCH_NAME}-latest
|
||||
|
||||
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}'
|
||||
|
||||
export MILVUS_IMAGE_REPO="${env.TARGET_REPO}/milvus"
|
||||
export MILVUS_HARBOR_IMAGE_REPO="${env.HARBOR_REPO}/milvus/milvus"
|
||||
|
||||
export ARM_MILVUS_IMAGE_TAG="${imageTag}-arm64"
|
||||
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
|
||||
docker manifest annotate \${MILVUS_HARBOR_IMAGE_REPO}:\${MILVUS_IMAGE_TAG} \${MILVUS_HARBOR_IMAGE_REPO}:\${ARM_MILVUS_IMAGE_TAG} --os linux --arch arm64
|
||||
|
||||
docker manifest push \${MILVUS_HARBOR_IMAGE_REPO}:\${MILVUS_IMAGE_TAG}
|
||||
"""
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
post {
|
||||
unsuccessful {
|
||||
|
|
Loading…
Reference in New Issue