前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >DevOps 之 Coding CI

DevOps 之 Coding CI

原创
作者头像
鲍远林
修改2021-10-14 17:25:34
2.1K0
修改2021-10-14 17:25:34
举报
文章被收录于专栏:泛互云原生

CD 篇见:https://cloud.tencent.com/developer/article/1889088

CODING DevOps 包括代码托管、项目管理、测试管理、持续集成、制品库等多款产品和服务,涵盖软件开发从构想到交付的一切所需,使研发团队在云端高效协同,实践敏捷开发与 DevOps,提升软件交付质量与速度。

本文通过 CODING DevOps 平台,实现下图所示的持续集成和持续部署功能。具体来说,当开发人员将代码提交到 git 仓库时,自动触发如下一系列操作:

  • Coding CI 拉取开发最近提交的代码,然后编译打包,构建 docker 镜像并推送到容器镜像服务 TCR;
  • 镜像上传完成后,自动触发 Coding CD 功能,将最近的镜像部署到容器服务 TKE 托管的开发/测试或生产环境。
ci-cd-flow.png
ci-cd-flow.png

NOTE:本文重点在于介绍 Coding CI/CD 功能的使用,对于基于的代码仓库配置,java 下的 maven 工程配置的基础功能点请参考相关文档。

创建 DevOps 项目

在 coding 控制台 https://console.cloud.tencent.com/coding 的【前往 CODING DevOps】->【立即使用】进入工作台。

create-coding-project.png
create-coding-project.png

接着,在上图所示的工作台页面中,点击左侧的导航栏选择【项目】-> 【创建项目】会弹出一个项目模板窗口,选择 “DevOps 项目” 后会进入下图所示的项目基本信息填写页面。填写好项目基本信息后,一个空的 Coding DevOps 项目就创建好了。

create-coding-project-basic-info.png
create-coding-project-basic-info.png

创建代码仓库

作为 CI/CD 的前提,需要先创建代码仓库,管理所有项目的源码。Coding 本身提供了代码仓库功能,进入项目后,在左侧的导航栏中选择 【代码仓库】->【创建代码仓库】可新建仓库。下图展示的是 QCBM 项目的代码仓库。

create-code-base.png
create-code-base.png

持续集成

Coding 中的持续集成

创建构建计划

创建 CI 流水线
Step 1. 配置基本信息

进入项目后,点击左侧的【持续集成】->【构建计划】选择新建构建计划,接着会弹出“选择构建计划模板”页面,在此选择 “镜像仓库” TAB 下的 “构建镜像并推送至 TCR 个人版(容器服务-镜像仓库)”。接下来,会进入流水线的基本配置页面,这里给流水线取个名称 qcbm-ci-pipline,同时配置代码好仓库和环境变量。其中,环境变量里的 个人版镜像仓库访问凭证 需要正确配置,否则推送不了 docker 镜像。第一次配置 CI 流水线时,可按下图那样选择 一键录入 TCR 凭据并使用,Coding 会自动生成一个 TCR 的访问凭据。

ci-tcr-pingju.png
ci-tcr-pingju.png

点击 “确定” 后会生成一个简单的 CI 流水线 (如下图):

basic-trc-pipline.png
basic-trc-pipline.png

点击流水线右边的 “环境变量” 可以看到之前步骤中设置的变量取值。

ci-pipline-default-env.png
ci-pipline-default-env.png

接下来,我们模板生成的基础上配置需要的流水线。

Step 2. 流水线基础配置

点击流水线 qcbm-ci-pipline 图形界面中的 开始,在弹出的“基础配置”对话框中可修改配置,这里我们添加了 QCBM 后台微服务的 docker 镜像名作为环境变量,如下:

  • USER_SERVICE_IMAGE_NAME = "${TCR_REGISTRY_HOSTNAME}/${TCR_NAMESPACE_NAME}/user-service"
  • STORE_SERVICE_IMAGE_NAME = "${TCR_REGISTRY_HOSTNAME}/${TCR_NAMESPACE_NAME}/store-service"
  • ORDER_SERVICE_IMAGE_NAME = "${TCR_REGISTRY_HOSTNAME}/${TCR_NAMESPACE_NAME}/order-service"
  • FAVORITES_SERVICE_IMAGE_NAME = "${TCR_REGISTRY_HOSTNAME}/${TCR_NAMESPACE_NAME}/favorites-service"
  • QCBM_GATEWAY_IMAGE_NAME = "${TCR_REGISTRY_HOSTNAME}/${TCR_NAMESPACE_NAME}/qcbm-gateway"
ci-pipline-start.png
ci-pipline-start.png

Note: TCR_REGISTRY_HOSTNAME 和 TCR_NAMESPACE_NAME 为 Step 1 中配置的环境变量。

Step 3. 检出代码

Step 1 使用模板生成的流水线已包含检出代码这一步,即为图中所示的 “2-1 检出”,这里保持不变。

Step 4. 编译打包

点击 “2-1 检出” 后的 +号,为流水增加一个步骤:编译打包。对应的步骤操作,选择 “命令” -> “执行 shell 脚本”。

ci-pipline-package.png
ci-pipline-package.png

在弹出来得对话框中,添加 mavne 打包命令 mvn package 如下图:

ci-pipline-package-cmd.png
ci-pipline-package-cmd.png
Step 5. 构建镜像

点击流水线中的 “4-1 构建镜像”,将阶段名称该为 “构建 user-service 镜像”。接着点击“执行shell脚本”,在弹出的脚本配置窗口中删除默认的命令 echo hello CODING,然后配置如下命令:

代码语言:txt
复制
cd user-service
docker build -t ${USER_SERVICE_IMAGE_NAME}:${GIT_COMMIT_SHORT} .

_NOTE:_user-service 为 QCBM 后台工程 qcbm-backend 的子工程,且构建 user-service 镜像的 Dockerfile 位于 user-service 子工程目录下,所以先进入目录 user-service,然后才能执行镜像构建命令。 USER_SERVICE_IMAGE_NAME 为 Step 2 中添加的环境变量。GIT_COMMIT_SHORT 为短版的 git commit ID,这里采用 commit ID 作为 tag,可以将镜像和代码版本对应起来。

build-user-image-cmd.png
build-user-image-cmd.png

接着,点击 增加并行阶段 为 store-service / order-service / favorites-service / qcbm-gateway 各添加一个 docker 镜像构建步骤,如下图:

build-all-image-cmd.png
build-all-image-cmd.png
Step 6. 推送镜像到 TCR

点击流水线中的 “5-1 推送镜像”,将阶段名称该为 “推送 user-service 镜像”。接着点击“执行 Pipeline 脚本”,将脚本修改成如下,保持此处的镜像名及 tag 和 Step 5 中构建镜像时所用的名称和 tag 一致。

代码语言:txt
复制
docker.withRegistry("https://${DOCKER_REGISTRY_HOSTNAME}", "${DOCKER_REGISTRY_CREDENTIAL}") {
    docker.image("${USER_SERVICE_IMAGE_NAME}:${GIT_COMMIT_SHORT}").push()
}
push-user-imge.png
push-user-imge.png

接着,点击 增加并行阶段 为 store-service / order-service / favorites-service / qcbm-gateway 各添加一个 docker 镜像推送步骤,如下图:

push-all-img.png
push-all-img.png

至此,CI 流水线 qcbm-ci-pipline 已创建完成,该流水线具备从 拉取代码 -> 编译打包 -> 构建镜像 -> 推送镜像至TCR 的功能。点击 “保存” 按钮,保存整个流水线的配置。

为流水线 qcbm-ci-pipline 添加触发规则

上一节中创建的流水线 qcbm-ci-pipline,可以手动但不能自动执行。为了实现开发远程提交代码到代码仓库,便触发 CI 还需要添加触发规则。

点击 触发规则 tab 页,可设置 CI 流水线规则:

  • 代码源触发:勾选此项后,当有代码更新或合并时,会自动触发流水线,具体配置可按团队代码管理要求进行配置。
  • 定时触发:在 Daily Build 场景下,可配置个固定时间和周期,定期执行。
  • API 触发:Coding 对外提供了流水线触发 API,方便用户集成到自己的工具中。
  • 手动触发:此处可指定手动触发时的代码分支。
pipeline-trigger.png
pipeline-trigger.png

设置了触发规则后,保存修改,一条带有自动触发功能的 CI 流水线就创建完成了。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 创建 DevOps 项目
  • 创建代码仓库
  • 持续集成
    • 创建构建计划
      • 创建 CI 流水线
      • 为流水线 qcbm-ci-pipline 添加触发规则
相关产品与服务
CODING DevOps
CODING DevOps 一站式研发管理平台,包括代码托管、项目管理、测试管理、持续集成、制品库等多款产品和服务,涵盖软件开发从构想到交付的一切所需,使研发团队在云端高效协同,实践敏捷开发与 DevOps,提升软件交付质量与速度。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档