构建 Docker 类型制品
功能介绍
在 CODING 持续集成任务构建过程当中,您可以构建 Docker 镜像,并上传至 CODING 制品库。
在使用该功能之前,请确保您对 Docker 类型制品库有初步了解,您可以点击阅读 在 CODING 中使用 Docker 制品库了解更多。
Jenkinsfile 配置
pipeline {
agent any
stages {
stage('检出') {
steps {
checkout([
$class: 'GitSCM',
branches: [[name: env.GIT_BUILD_REF]],
userRemoteConfigs: [[url: env.GIT_REPO_URL, credentialsId: env.CREDENTIALS_ID]]
])
}
}
stage('构建 Docker 镜像') {
steps {
script {
if (env.TAG_NAME ==~ /.*/ ) {
DOCKER_IMAGE_VERSION = "${env.TAG_NAME}"
} else if (env.MR_SOURCE_BRANCH ==~ /.*/ ) {
DOCKER_IMAGE_VERSION = "mr-${env.MR_RESOURCE_ID}-${env.GIT_COMMIT_SHORT}"
} else {
DOCKER_IMAGE_VERSION = "${env.BRANCH_NAME.replace('/', '-')}-${env.GIT_COMMIT_SHORT}"
}
// 注意:创建项目时链接标识不要使用下划线,而是连字符,比如 My Project 的标识应为 my-project
// 请修改 build/my-api 为你的制品库名称和镜像名称
CODING_DOCKER_IMAGE_NAME = "${env.PROJECT_NAME.toLowerCase()}/build/my-api"
// 本项目内的制品库已内置环境变量 CODING_ARTIFACTS_CREDENTIALS_ID,无需手动设置
docker.withRegistry("https://${env.CCI_CURRENT_TEAM}-docker.pkg.coding.net", "${env.CODING_ARTIFACTS_CREDENTIALS_ID}") {
docker.build("${CODING_DOCKER_IMAGE_NAME}:${DOCKER_IMAGE_VERSION}").push()
}
}
}
}
}
}
上述代码判断了不同情况,生成了不同的 Docker 版本号:
- mr-数字-hash:比如合并请求的 ID 为 236,生成的版本是 mr-236-cc5690b,常用于开发环境;
- 分支名-hash:比如合并到主干
main
后,生成的版本是main-dee9c6e
,常用于测试环境; - git tag:比如 git tag 1.0.0 生成的版本是 1.0.0,常用于预发布/生产环境;

感谢反馈有用
感谢反馈没用