文档中心>弹性微服务>持续集成>使用 Coding 部署插件创建持续集成

使用 Coding 部署插件创建持续集成

最近更新时间:2024-02-01 10:08:21

我的收藏

操作场景

弹性微服务应用可以使用 CODING 构建持续集成方案,更多关于 CODING 持续集成功能和使用的说明,请参见 CODING 持续集成
本文以 Java 应用为例,介绍如何使用 Coding 以 镜像 及 JAR/WAR 包 方式部署应用至弹性微服务。

准备工作

准备 Demo 应用

DEMO 代码由 Spring Ini̇ti̇ali̇ze 自动生成,使用 Gradle 构建,依赖 Spring Web、Actuator 和 Prometheus 等。

在控制台完成首次部署(可选)

首次部署时,有较多的参数需要设置。这部分信息如果全部固化到 CI/CD 流程里,就会显得特别复杂。
因此,如果您的业务涉及较多部署配置项,建议您在 弹性微服务控制台 中完成首次发布,或者通过Python部署脚本的方式配置持续集成。
说明:
Coding 构建计划里配置的发布方式应当与 TEM 保持一致,例如:如果弹性微服务应用为镜像部署方式,则 Coding 构建计划内也使用镜像部署。

确认 TCR 镜像信息

如果您需要通过镜像部署应用,需要将镜像推送至 TCR 镜像仓库并部署,因此需要获取相应 TCR 镜像仓库的 docker login 的 Registry。




Coding 平台操作

创建 Coding 项目和仓库

1. 创建全功能 DevOps 项目



2. 创建代码仓库。



3. 添加 remote 仓库,并推送代码。
git init
git add .
git commit -m "init"
git remote add origin ***/tem-test/tem-demo.git
git push -u origin master

构建计划概览

默认git push origin master 后,会触发构建计划。如您有特殊需求,可自行配置构建计划的触发规则。
采用镜像方式部署时:



采用程序包方式部署时:




配置构建计划

1. 模板选择自定义构建计划。



2. 在流程配置中,添加构建模块(执行 Shell 脚本)。由于 DEMO 中使用的 gradle 构建,可参考以下命令:
(cd /root/.gradle && rm init.gradle)
./gradlew clean build



3. 镜像部署时在流程配置中,添加镜像构建模块(执行 Shell 脚本)
"docker build -t ${DOCKER_NAMESPACE}/${DOCKER_IMAGE_NAME}:${DOCKER_IMAGE_VERSION} -f ${DOCKERFILE_PATH} ${DOCKER_BUILD_CONTEXT}"
您可自行在环境变量中定义相关变量:
DOCKER_NAMESPACE: 命名空间。
DOCKER_IMAGE_NAME:镜像仓库名称。
DOCKER_IMAGE_VERSION:镜像版本号,e.g. ${GIT_COMMIT}。
DOCKERFILE_PATH:dockerfile 文件位置,e.g. Dockerfile。
DOCKER_BUILD_CONTEXT:Docker 构建目录,e.g. 使用当前目录。
4. 镜像部署时在流程配置中,添加镜像推送模块(TCR 插件),腾讯云内网目前只支持 TCR(由于镜像拉取是大流量操作,对带宽要求比较高,不建议 NAT 接出公网)。您也可用使用 docker login && docker push 自行完成镜像推送。



5. 在流程配置中,添加 TEM 部署模块。




TEM 部署插件配置

1. 配置通用信息与应用基本信息。



插件版本:选择最新。
SecretId/SecretKey: 腾讯云的 API 密钥
地域:TEM 的服务地域。
应用名称:支持根据名称新建应用, 或选择存量应用部署至新环境。
环境名称:根据环境名称指定一个存量环境,若无合适环境,请前往创建环境
2. 配置镜像:配置关联的镜像 TAG,如 commitId 等。



3. 配置 JAR / WAR 包:除了配置部署版本以外,还需要额外配置 JAR/WAR 的文件路径。



4. 部署配置。



发布触发策略:
自动触发:发布全自动执行。
全手动触发:发布不同批次间,需要用户人工确认才会继续执行。
小批量验证后自动触发:小批量验证完成后,经人工确认,后续批次自动触发。
发布批次:实例的发布批次数。
批次间等待时间:发布批次之间的间隔时间,以秒为单位,用来减少可能的服务抖动。
发布过程中保障的最小可用实例数:
-1 代表保证全量实例可用。
0 代表不保障发布过程中一定有实例可用。
n 代表发布过程中保障有n个实例可用。

部署详情

部署操作是异步的,在部署操作执行完之后,会返回访问部署详情的链接。




手工确认的分批次发布场景(可选)

1. 增加 Coding 插件(人工确认)。



2. 继续下一批(执行 Shell 脚本)。
pip install tccli
tccli configure set secretId $SECRET_ID secretKey $SECRET_KEY region $REGION output json
tccli tem ResumeApplication --version 2021-07-01 --ApplicationId $APPLICATION_ID --EnvironmentId $ENVIRONMENT_ID