1. 授权认证
  2. 获取用户个人信息
  3. 项目协同
  4. 代码托管
  5. 持续集成
  6. 制品仓库
  7. 测试管理
  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 {
          DOCKER_IMAGE_VERSION = "commit-${env.GIT_COMMIT.substring(0, 7)}"
          if (env.TAG_NAME ==~ /.*/ ) {
            DOCKER_IMAGE_VERSION = "${env.TAG_NAME}"
          } else if (env.MR_SOURCE_BRANCH ==~ /.*/ ) {
            DOCKER_IMAGE_VERSION = "mr-${env.MR_RESOURCE_ID}"
          }
          // 注意:创建项目时链接标识不要使用下划线,而是连字符,比如 My Project 的标识应为 my-project
          // 请修改 build/my-demo 为你的制品库名称和镜像名称
          CODING_DOCKER_IMAGE_NAME = "${env.PROJECT_NAME.toLowerCase()}/build/my-demo"
          // 本项目内的制品库已内置环境变量 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 版本号:

  • 默认 commit-1234567:截取 git commit id 的前 7 位,一般用于测试环境;
  • git tag:用于生产环境;
  • mr-123:当发起合并请求时,使用合并请求的 id,一般用于开发环境;
上一篇Java Spring Boot 自动化测试
最近更新
感谢反馈有用
感谢反馈没用