podTemplate { node('pod-templ-jenkins-slave-common') { env.IMAGE_NAME = "${IOT_IMAGES_REGISTRY}/${IOT}/${JOB_NAME}" env.IMAGE_NAME_SHORT = "${IOT}/${JOB_NAME}" env.SVN_Add = "${SVN_ADDRESS}/AI-Query/trunk/web" stage('Run shell') { checkout([$class: 'SubversionSCM', filterChangelog: false, locations: [[cancelProcessOnExternalsFail: true, credentialsId: 'svn-build', depthOption: 'infinity', ignoreExternalsOption: true, local: '.', remote: "${SVN_Add}"]], quietOperation: true, workspaceUpdater: [$class: 'UpdateUpdater']]) container('image-builder') { sh''' find . -depth -name '.svn' -type d -exec rm -rf {} + /kaniko/executor --context=${BUILD_WORKSPACE} --dockerfile=./Dockerfile --destination=${IMAGE_NAME}:${IMAGE_VERSION} --cache=false --cleanup ''' } buildName "${IMAGE_NAME_SHORT}:${IMAGE_VERSION}" buildDescription "${IMAGE_NAME}:${IMAGE_VERSION}" } } } // podTemplate { // node('pod-templ-jenkins-slave-common') { // // 阿里云镜像仓库配置 - 根据实际情况修改 // env.ALIYUN_REGISTRY = "registry.cn-hangzhou.aliyuncs.com" // env.ALIYUN_NAMESPACE = "free_sun" // 阿里云容器仓库命名空间 // env.IMAGE_NAME = "${ALIYUN_REGISTRY}/${ALIYUN_NAMESPACE}/${JOB_NAME}" // 完整镜像名称 // env.IMAGE_NAME_SHORT = "${ALIYUN_NAMESPACE}/${JOB_NAME}" // 简短镜像名称 // env.DOCKER_USERNAME='15751773176' // env.DOCKER_PASSWORD='223456' // env.SVN_Add = "${SVN_ADDRESS}/AI-Query/trunk/web" // // 阿里云仓库认证凭据ID - 需要在Jenkins中预先配置 // env.ALIYUN_CREDENTIALS_ID = "aliyun-docker-credentials" // stage('拉取代码') { // checkout([ // $class: 'SubversionSCM', // filterChangelog: false, // locations: [[ // cancelProcessOnExternalsFail: true, // credentialsId: 'svn-build', // depthOption: 'infinity', // ignoreExternalsOption: true, // local: '.', // remote: "${SVN_Add}" // ]], // quietOperation: true, // workspaceUpdater: [$class: 'UpdateUpdater'] // ]) // } // stage('构建并推送镜像到阿里云仓库') { // container('image-builder') { // // 使用阿里云凭据进行认证并构建推送镜像 // // withCredentials([usernamePassword( // // credentialsId: "${ALIYUN_CREDENTIALS_ID}", // // passwordVariable: 'DOCKER_PASSWORD', // // usernameVariable: 'DOCKER_USERNAME' // // )]) { // sh ''' // # 清理SVN版本控制文件 // find . -depth -name '.svn' -type d -exec rm -rf {} + // # 配置kaniko使用阿里云仓库认证 // # 创建临时目录存储docker配置(解决只读文件系统问题) // mkdir -p ${WORKSPACE}/.docker // # echo "{\"auths\":{\"${ALIYUN_REGISTRY}\":{\"username\":\"${DOCKER_USERNAME}\",\"password\":\"${DOCKER_PASSWORD}\"}}}" > ${WORKSPACE}/.docker/config.json // docker login ${ALIYUN_REGISTRY} -u ${DOCKER_USERNAME} -p ${DOCKER_PASSWORD} // # 使用kaniko构建并推送到阿里云仓库 // /kaniko/executor \ // --context=${BUILD_WORKSPACE} \ // --dockerfile=./Dockerfile \ // --destination=${IMAGE_NAME}:${IMAGE_VERSION} \ // --destination=${IMAGE_NAME}:latest \ // --cache=false \ // --cleanup // ''' // // } // } // // 设置构建名称和描述 // buildName "${IMAGE_NAME_SHORT}:${IMAGE_VERSION}" // buildDescription "${IMAGE_NAME}:${IMAGE_VERSION}" // } // // stage('验证推送结果') { // // container('image-builder') { // // withCredentials([usernamePassword( // // credentialsId: "${ALIYUN_CREDENTIALS_ID}", // // passwordVariable: 'DOCKER_PASSWORD', // // usernameVariable: 'DOCKER_USERNAME' // // )]) { // // sh ''' // // # 验证镜像是否成功推送到阿里云仓库 // // echo "${DOCKER_PASSWORD}" | docker login ${ALIYUN_REGISTRY} -u ${DOCKER_USERNAME} --password-stdin // // docker pull ${IMAGE_NAME}:${IMAGE_VERSION} // // docker images | grep ${IMAGE_NAME} // // docker logout ${ALIYUN_REGISTRY} // // ''' // // } // // } // // } // } // }