腾讯云弹性微服务 TEM - 使用 Coding 部署插件创建持续集成
文档简介:
操作场景:
弹性微服务应用可以使用 CODING 构建持续集成方案,更多关于 CODING 持续集成功能和使用的说明,请参见 CODING 持续集成。
本文以 Java 应用为例,介绍如何使用 Coding 以 镜像 及 JAR/WAR 包 方式部署应用至弹性微服务。
操作场景
弹性微服务应用可以使用 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 initgit add .git commit -m "init"git remote add origin ***/tem-test/tem-demo.gitgit 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 tcclitccli configure set secretId $SECRET_ID secretKey $SECRET_KEY region $REGION output jsontccli tem ResumeApplication --version 2021-07-01 --ApplicationId $APPLICATION_ID --EnvironmentId $ENVIRONMENT_ID