1. 授权认证
  2. 获取用户个人信息
  3. 项目协同
  4. 代码托管
  5. 持续集成
  6. 制品仓库
  7. 测试管理
  8. 文档管理
  1. 项目协同
  2. 代码仓库
  3. DevOps 实践之旅
  4. 一分钟开始持续集成之旅
  5. 持续部署
  6. 制品库

构建 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,常用于预发布/生产环境;




上一篇PHP 自动化测试
最近更新
感谢反馈有用
感谢反馈没用

在阅读中是否遇到以下问题?

您希望我们如何改进?