【Web Function】云函数 镜像部署

这里我们使用 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的环境变量。

最后我们配置分支触发条件,以后推送代码之后就可以自动部署我们的云函数了。