使用 CODING CI 工具实现 CloudBase 云开发云函数自动化部署
云函数是云开发 Serverless 解决方案中的一个重要产品,使用云函数可让开发者将自身的业务逻辑代码上传,并通过云开发的调用触发函数,从而实现后端的业务运作。
CODING 是国内首个一站式云端软件服务平台,为开发者提供了 CODING DevOps 整套研发流程管理系统解决方案。CODING 已于 2019 年 8 月进驻腾讯云,开始为腾讯云用户提供 DevOps 研发管理协作工具。
在进行云函数的开发时,我们可能会经常重复“编写函数代码->部署”这个过程,使用 CODING CI 功能可以实现自动化部署云函数,达到省时省力的目的。
接下来,我将介绍一下如何构建一个流水线,实现自动化部署云函数。
工作流梳理
我们先梳理一下流水线的工作流。这是一个只有单一步骤的简单工作流。
[图片: 20200518092353]
https://static.txisfine.cn/upload/20200518092353.png/pkwatermark
在推送步骤中我们还是借助 TCB CLI 工具完成云函数的部署。流程的结果我们可以通过 WebHook 消息通知到企业微信。
在 CODING 中创建 DevOps 项目
登录 CODING 工作台,进入全部项目模块,新建一个项目。
[图片: 20200522132558]
https://static.txisfine.cn/upload/20200522132558.png/pkwatermark
[图片: 20200522132015]
https://static.txisfine.cn/upload/20200522132015.png/pkwatermark
[图片: 20200522132441]
https://static.txisfine.cn/upload/20200522132441.png/pkwatermark
创建云开发环境
输入网址:https://console.cloud.tencent.com/tcb/env/index,如果没有授权会弹出以下画面。
[图片: 20200522133420]
https://static.txisfine.cn/upload/20200522133420.png/pkwatermark
mytest。
[图片: 20200522133654]
https://static.txisfine.cn/upload/20200522133654.png/pkwatermark
设置 SecretId 和 SecretKey
在流水线中,一般不会使用特权账号的 SecretKey(主账号的最高权限 SecretKey,拥有腾讯云控制台的所有权),都是按需授权,所以需要对 SecretKey 的权限进行访问控制。 使用主账号登录 https://console.cloud.tencent.com/cam/capi,根据提示创建子用户,选择自定义创建,选择类型为可访问资源并接收消息。 填写用户信息,选择访问方式为编程访问。
[图片: 20200522140636]
https://static.txisfine.cn/upload/20200522140636.png/pkwatermark
[图片: 20200522151542]
https://static.txisfine.cn/upload/20200522151542.png/pkwatermark
[图片: 20200522144606]
https://static.txisfine.cn/upload/20200522144606.png/pkwatermark
创建 TCB 云开发项目
在本地使用 TCB CLI 创建一个云开发项目。
```tcb init
```
如果您没有登录 tcb,这里需要扫码登录。
选择关联的环境,这里我选择 mytest 环境,输入项目名称 mytest,选择开发语言,目前支持 PHP、Java 和 Node 三种语言,这里我选择 Node,选择云开发模板,这里我选择 Hello World 模板。
√ 选择关联环境 · mytest - [mytest-1ae5c0:空]
√ 请输入项目名称 · mytest
√ 选择开发语言 · Node
√ 选择云开发模板 · Hello World
√ 创建项目 mytest 成功!
```
我们将本地仓库与 CODING 远端仓库进行关联。
```cd mytest
git init
# 这里需要注意username为你的CODING账户名,tcb-fun是代码仓库名
git remote add origin git@e.coding.net:username/tcb-fun.git
git add .
git commit -m "Initial commit"
git push -u origin master
```
CODING CI 设置
SecretId 和 SecretKey 信息属于敏感信息,我们需要以 CODING 凭据的形式保存在项目配置中,使用凭据后你的敏感信息将不会出现在构建日志和 Jenkinsfile 中,这样会更加安全。 进入项目,依次选择项目设置、开发者选项、凭据管理,录入一个凭据。
[图片: 20200522144117]
https://static.txisfine.cn/upload/20200522144117.png/pkwatermark
[图片: 20200522144535]
https://static.txisfine.cn/upload/20200522144535.png/pkwatermark
[图片: 20200522141806]
https://static.txisfine.cn/upload/20200522141806.png/pkwatermark
[图片: 20200522141950]
https://static.txisfine.cn/upload/20200522141950.png/pkwatermark
pipeline {
agent any
stages {
stage('检出') {
steps {
echo '[检出]正在从目标代码库检出最新源码...'
checkout([
$class: 'GitSCM', branches: [[name: env.GIT_BUILD_REF]],
userRemoteConfigs: [[
url: env.GIT_REPO_URL,
credentialsId: env.CREDENTIALS_ID
]]
])
echo '[检出]检出源码成功.'
}
}
stage('部署') {
steps {
echo '[部署]准备部署云函数.'
sh 'npm i -g @cloudbase/cli'
withCredentials([cloudApi(credentialsId: env.CREDENTIALSID, secretIdVariable: 'CLOUD_API_SECRET_ID', secretKeyVariable: 'CLOUD_API_SECRET_KEY')]){
sh 'tcb login --apiKeyId "${CLOUD_API_SECRET_ID}" --apiKey "${CLOUD_API_SECRET_KEY}"'
}
sh 'tcb functions:deploy --force --all'
echo '[部署]部署云函数成功.'
}
}
stage('事件消息') {
steps {
echo '[事件消息]持续部署流程完成.'
}
}
}
}
```
保存 Jenkinsfile,下一步需要我们将凭据添加到环境变量中。 切换到变量与缓存选项卡,在流程环境变量中添加环境变量,变量名填写 CREDENTIALSID,类别选择 Coding 凭据,选择默认值为刚刚添加的凭据信息,保存修改。
[图片: 20200522145331]
https://static.txisfine.cn/upload/20200522145331.png/pkwatermark
测试与验证
通过以上步骤,我们已经构建好了云函数持续部署流水线,我们可以使用 push 代码来触发流水线自动部署云函数。
在 CODING 项目的构建计划中可以看到每一次的构建任务的运行状态。
[图片: 20200522151819]
https://static.txisfine.cn/upload/20200522151819.png/pkwatermark
[图片: 20200522151953]
https://static.txisfine.cn/upload/20200522151953.png/pkwatermark
mytest 环境,查看云函数列表,已经可以看到我们刚刚部署的云函数。测试调用云函数,云函数功能正常。
[图片: 20200522152605]
https://static.txisfine.cn/upload/20200522152605.png/pkwatermark
敏捷在 CODING 如何落地
我觉得 CODING 的这个课程不错,从理论到实战,讲解如何落地敏捷开发,喜欢的朋友可以去听听~
优普丰敏捷学院 5 位大咖联合打造 CODING 敏捷实践第一期实战课程,通过课程学习,将获得腾讯云大学、优普丰及 CODING 联名限量版证书!
[图片: 20200518102524]
https://static.txisfine.cn/upload/20200518102524.png/pkwatermark
课程地址:CODING 敏捷开发课程