操作场景
本文以 Java 应用为例,介绍如何使用 Coding 以 镜像 及 JAR/WAR 包 方式部署应用至弹性微服务。
准备工作
准备 Demo 应用
在控制台完成首次部署(可选)
首次部署时,有较多的参数需要设置。这部分信息如果全部固化到 CI/CD 流程里,就会显得特别复杂。
说明:
Coding 构建计划里配置的发布方式应当与 TEM 保持一致,例如:如果弹性微服务应用为镜像部署方式,则 Coding 构建计划内也使用镜像部署。
确认 TCR 镜像信息
如果您需要通过镜像部署应用,需要将镜像推送至 TCR 镜像仓库并部署,因此需要获取相应 TCR 镜像仓库的 docker login 的 Registry。
![](https://qcloudimg.tencent-cloud.cn/image/document/80350a40b3e9f561192bda6492f7f4e9.png)
![](https://qcloudimg.tencent-cloud.cn/image/document/80350a40b3e9f561192bda6492f7f4e9.png)
Coding 平台操作
创建 Coding 项目和仓库
1. 创建全功能 DevOps 项目
![](https://qcloudimg.tencent-cloud.cn/image/document/935bdcfa42ec8ee80caefabf43bd30ab.png)
![](https://qcloudimg.tencent-cloud.cn/image/document/935bdcfa42ec8ee80caefabf43bd30ab.png)
2. 创建代码仓库。
![](https://qcloudimg.tencent-cloud.cn/image/document/c0a83b6930fe37f82cb0e044b616e589.png)
![](https://qcloudimg.tencent-cloud.cn/image/document/c0a83b6930fe37f82cb0e044b616e589.png)
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
后,会触发构建计划。如您有特殊需求,可自行配置构建计划的触发规则。采用镜像方式部署时:
![](https://qcloudimg.tencent-cloud.cn/image/document/5385d53eb77fbc1c68319991cc23050e.png)
![](https://qcloudimg.tencent-cloud.cn/image/document/5385d53eb77fbc1c68319991cc23050e.png)
采用程序包方式部署时:
![](https://qcloudimg.tencent-cloud.cn/image/document/cddeb753930f269bd99c38e2d8f0b05a.png)
![](https://qcloudimg.tencent-cloud.cn/image/document/cddeb753930f269bd99c38e2d8f0b05a.png)
配置构建计划
1. 模板选择自定义构建计划。
![](https://qcloudimg.tencent-cloud.cn/image/document/d2fa9fa5254ebfbe0a17ef59d5ffc18f.png)
![](https://qcloudimg.tencent-cloud.cn/image/document/d2fa9fa5254ebfbe0a17ef59d5ffc18f.png)
2. 在流程配置中,添加构建模块(执行 Shell 脚本)。由于 DEMO 中使用的 gradle 构建,可参考以下命令:
(cd /root/.gradle && rm init.gradle)./gradlew clean build
![](https://qcloudimg.tencent-cloud.cn/image/document/230ff6119bbc305e17f00fea448b38ea.png)
![](https://qcloudimg.tencent-cloud.cn/image/document/230ff6119bbc305e17f00fea448b38ea.png)
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 自行完成镜像推送。
![](https://qcloudimg.tencent-cloud.cn/image/document/d79a59810e80eb26d7a22bab58a035f4.png)
![](https://qcloudimg.tencent-cloud.cn/image/document/d79a59810e80eb26d7a22bab58a035f4.png)
5. 在流程配置中,添加 TEM 部署模块。
![](https://qcloudimg.tencent-cloud.cn/image/document/a092288787015613a63b0989d06b6430.png)
![](https://qcloudimg.tencent-cloud.cn/image/document/a092288787015613a63b0989d06b6430.png)
TEM 部署插件配置
1. 配置通用信息与应用基本信息。
![](https://qcloudimg.tencent-cloud.cn/image/document/1bf28a491f7323ad4a91ce6199a08534.png)
![](https://qcloudimg.tencent-cloud.cn/image/document/1bf28a491f7323ad4a91ce6199a08534.png)
插件版本:选择最新。
SecretId/SecretKey: 腾讯云的 API 密钥。
地域:TEM 的服务地域。
应用名称:支持根据名称新建应用, 或选择存量应用部署至新环境。
环境名称:根据环境名称指定一个存量环境,若无合适环境,请前往创建环境。
2. 配置镜像:配置关联的镜像 TAG,如 commitId 等。
![](https://qcloudimg.tencent-cloud.cn/image/document/d51ba99812a86be3240e17d13303d5a3.png)
![](https://qcloudimg.tencent-cloud.cn/image/document/d51ba99812a86be3240e17d13303d5a3.png)
3. 配置 JAR / WAR 包:除了配置部署版本以外,还需要额外配置 JAR/WAR 的文件路径。
![](https://qcloudimg.tencent-cloud.cn/image/document/572be10153f2a4d6cbebe4fb8158e1d4.png)
![](https://qcloudimg.tencent-cloud.cn/image/document/572be10153f2a4d6cbebe4fb8158e1d4.png)
4. 部署配置。
![](https://qcloudimg.tencent-cloud.cn/image/document/f2d79d4369a8c22e31352b861df84a47.png)
![](https://qcloudimg.tencent-cloud.cn/image/document/f2d79d4369a8c22e31352b861df84a47.png)
发布触发策略:
自动触发:发布全自动执行。
全手动触发:发布不同批次间,需要用户人工确认才会继续执行。
小批量验证后自动触发:小批量验证完成后,经人工确认,后续批次自动触发。
发布批次:实例的发布批次数。
批次间等待时间:发布批次之间的间隔时间,以秒为单位,用来减少可能的服务抖动。
发布过程中保障的最小可用实例数:
-1 代表保证全量实例可用。
0 代表不保障发布过程中一定有实例可用。
n 代表发布过程中保障有n个实例可用。
部署详情
部署操作是异步的,在部署操作执行完之后,会返回访问部署详情的链接。
![](https://qcloudimg.tencent-cloud.cn/image/document/9a1e99876db3e7ecbc0dfb0c764fab16.png)
![](https://qcloudimg.tencent-cloud.cn/image/document/9a1e99876db3e7ecbc0dfb0c764fab16.png)
手工确认的分批次发布场景(可选)
1. 增加 Coding 插件(人工确认)。
![](https://qcloudimg.tencent-cloud.cn/image/document/6f2dfefa76347ca18c449e1dd86326b4.png)
![](https://qcloudimg.tencent-cloud.cn/image/document/6f2dfefa76347ca18c449e1dd86326b4.png)
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