使用 Python 脚本部署应用

最近更新时间:2025-11-19 17:54:01

我的收藏
TSF 应用可以使用 Python 脚本来部署。

前提条件

在开始持续集成之前,需要完成下述的准备工作:
1. 保证机器上安装的 Python 不低于 3.0 版本,并已安装 pip Python 包管理工具。
2. 获取腾讯云的 访问密钥(SecretId 和 SecretKey)。
3. 在 TSF 平台创建了部署组
4. 了解 Python 脚本使用。

虚拟机应用部署准备

1. 机器上保证安装的 Python 不低于 3.0 版本,并已安装 pip 等 Python 包管理工具。
2. GitHub仓库 下载虚拟机部署 Python 脚本。
3. 修改脚本中的secret_id 、secret_key 为腾讯云访问密钥,region 为 TSF 服务所在地域。
secret_id = "改为您的 SecretId"
secret_key = "改为您的 SecretKey。"
region = "改为您的服务所在地域,如 ap-guangzhou"
4. 安装脚本依赖包。
pip install requests cos-python-sdk-v5
5. 准备脚本参数,要严格保证参数顺序。
path:本地文件路径,可以是针对脚本的相对路径,支持 .tar.gz.jar.war.zip 结尾的文件。
applicationId:应用 ID。在 TSF 控制台 > 应用管理中,选择目标应用第一列的应用 ID(如application-qab76pxv)。
pkg_version:程序包版本,最长32个字符,支持 a-z、A-Z、0-9、横杠(-)、下划线(_)。
appId:用户 APPID。在腾讯云控制台 账号中心 > 账号信息中获取 APPID(如1300555551)。
group_id:部署组 ID。在 TSF 控制台 > 应用管理 中,单击目标应用 ID,进入详情页,在部署组标签页中获取部署组的 ID(如group-gvk5pbdv)。
startup_params:启动参数。用户视情况可以自定义。
-Xms128m -Xmx512m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=512m
注意
执行的脚本参数中如果版本号不变,脚本会选择 TSF 平台已有的 jar 包进行再次部署。
6. 将以上参数按照顺序整理待用,格式如下:
python2.7.14 upload_virtual_machine_deploy.py ./consumer-demo/target/consumer-demo-1.10.0-RELEASE.jar application-qab76pxv v001 1300555551 group-gvk5pbdv '-Xms128m -Xmx512m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=512m'

容器应用部署准备

1. 保证机器上能够构建、上传镜像(镜像及 Dockerfile 编写参见 制作容器镜像,仓库使用请参见 镜像管理)。保证 Python 不低于3.0版本,并已安装 pip 等 Python 包管理工具。
2. 复制下述名为 upload_container_deploy.py 的 Python 脚本。
# -*- coding: utf-8 -*-
# tencentcloud-sdk-python

from tencentcloud.common import credential
from tencentcloud.common.profile.client_profile import ClientProfile
from tencentcloud.common.profile.http_profile import HttpProfile
from tencentcloud.common.exception.tencent_cloud_sdk_exception import TencentCloudSDKException
from tencentcloud.tsf.v20180326 import tsf_client, models

import sys
import json
import os
import time

# 密钥参数,替换为用户的secret_id和secret_key,建议使用环境变量管理
secret_id = "#"
secret_key = "#"
# docker build 命令
docker_build_command = "#"
# docker push 命令
docker_push_command = "#"
# 地域
region = "ap-guangzhou"

endpoint = "tsf.tencentcloudapi.com"

client = None


def docker_build():
os.system(docker_build_command)


def docker_push():
os.system(docker_push_command)


def init_client():
try:
cred = credential.Credential(secret_id, secret_key)
httpProfile = HttpProfile()
httpProfile.endpoint = endpoint
clientProfile = ClientProfile()
clientProfile.httpProfile = httpProfile
client = tsf_client.TsfClient(cred, region, clientProfile)
return client
except TencentCloudSDKException as err:
print(err)
raise TencentCloudSDKException


def describe_container_group_detail(group_id):
req = models.DescribeContainerGroupDetailRequest()
params = '{"GroupId":"' + group_id + '"}'
req.from_json_string(params)

resp = client.DescribeContainerGroupDetail(req)
print(resp.to_json_string())
return resp


def deploy_container_application(group_id, application_id, tag_name):
params = dict(GroupId=group_id,
ApplicationId=application_id,
TagName=tag_name,
IncrementalDeployment=True)

req = models.DeployContainerApplicationRequest()
req.from_json_string(json.dumps(params))
resp = client.DeployContainerApplication(req)
print(resp.to_json_string())


def get_tag_name():
tag_name = ""
try:
docker_build_tag_name = docker_build_command[docker_build_command.
rfind(":") + 1:]
docker_push_tag_name = docker_push_command[docker_push_command.
rfind(":") + 1:]
if docker_build_tag_name == docker_push_tag_name:
tag_name = docker_build_tag_name
else:
raise ValueError('Docker build tag name 和 push tag name 不一致')
except Exception:
raise ValueError('Docker tag name 异常')
return tag_name


if __name__ == "__main__":
# 部署组ID
group_id = sys.argv[1]
# 应用ID
application_id = sys.argv[2]
# 镜像版本名称,如v1
tag_name = sys.argv[3] if len(sys.argv) > 3 else get_tag_name()
docker_build()
docker_push()
# 等待镜像上传完成,可按需调整
time.sleep(10)
client = init_client()
deploy_container_application(group_id, application_id, tag_name)

3. 修改脚本中的 secret_id 、secret_key 为腾讯云访问密钥,region 为 TSF 服务所在地域。修改脚本中的 docker_build_command、docker_push_command 为实际的 docker build 和 push 命令。
secret_id = "改为Access Key ID"
secret_key = "改为Access Key Secret。"
docker_build_command = "改为 docker build 命令"
docker_push_command = "改为 docker push 命令"
region = "改为您的服务所在地域,如 ap-guangzhou"
4. 安装脚本依赖包。
pip3 install tencentcloud-sdk-python
5. 准备脚本参数,要严格保证参数顺序。
group_id:部署组 ID。在 TSF 控制台 > 应用管理中,单击目标应用 ID,进入详情页,在部署组标签页中获取部署组的 ID(如group-zvw397wa)。
application_id:应用 ID。在 TSF 控制台 > 应用管理中,单击目标应用 ID,进入详情页,在部署组标签页中获取部署组所属应用的 ID(如application-ymn61ag1)。
tag_name:镜像版本名称,如v1。
注意
目前容器应用部署脚本使用 group_id、 application_id 和 tag_name 作为参数进行增量部署更新镜像版本,但实际上用户可以修改脚本,将其他字段(如 JVM 启动参数 JvmOpts 等)作为增量部署参数,各字段含义参见 容器应用部署 API
6. 将以上参数按照顺序整理,并且加入第一步中用户自己的 docker build 、push 命令待用,格式如下:
python3 upload_container_deploy.py group-zvw397wa application-ymn61ag1 v1
注意
docker 相关命令必须按照 制作容器镜像镜像管理 调整为用户自己的账号和应用名。