这里我们使用 Coding 进行部署。
- 前置操作请参考【Web Function】云函数 与 DevOps
https://cloud.tencent.com/developer/article/1845071
首先我们选定两个模板
模板会自动创建鉴权文件,不用我们配置鉴权。
- 构建镜像并推送至 TCR 个人版
- 基于 Serverless 快速部署静态页面
这里我们使用 Serverless 为基础 Jenkinsfile,他会自动帮我们申请部署权限。
复制 tcr 模板的内容到 serverless 模板内
代码语言:javascript
复制
stage('构建镜像') {
steps {
// 确保仓库中有可用的 Dockerfile
sh "docker build -t ${DOCKER_REPOSITORY_NAME}:${DOCKER_IMAGE_NAME} ."
}
}
stage('推送镜像') {
steps {
script {
docker.withRegistry("https://${DOCKER_REGISTRY_HOSTNAME}", "${DOCKER_REGISTRY_CREDENTIAL}") {
docker.image("${DOCKER_REPOSITORY_NAME}:${DOCKER_IMAGE_NAME}").push()
}
}
}
}
tcr 的环境变量
代码语言:javascript
复制
environment {
DOCKER_REGISTRY_HOSTNAME = "${TCR_REGISTRY_HOSTNAME}"
DOCKER_REGISTRY_CREDENTIAL = "${TCR_REGISTRY_CREDENTIAL}"
DOCKER_REPOSITORY_NAME = "${TCR_NAMESPACE_NAME}/${TCR_REPOSITORY_NAME}"
DOCKER_IMAGE_NAME = "${TCR_IMAGE_NAME}"
}
现在我们可以看到构建镜像和推送镜像内容
下一步,我们获取镜像链接
脚本内容如下
代码语言:javascript
复制
env.sha=sh(script: "docker inspect --format='{{index .RepoDigests 0}}' ${DOCKER_REPOSITORY_NAME}:${DOCKER_IMAGE_NAME} | cut -d'@' -f2",returnStdout:true).trim()
env.sls_image_url = sh(script: "echo ${DOCKER_REGISTRY_HOSTNAME}/${DOCKER_REPOSITORY_NAME}:${DOCKER_IMAGE_NAME}@$sha",returnStdout:true).trim()
sh 'echo image url $sls_image_url'
配置 yml 文件
对于 slsplus 使用的是压缩json字符串。内容对比如下
如需其他配置,请查阅
https://github.com/serverless-components/tencent-scf/blob/master/docs/configure.md
将我们的镜像配置添加进去
最后核查我们的环境变量。这里我们需要 tcr 的环境变量,也需要 serverless的环境变量。