博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
实战优化丨如何借助 CODING 实现云开发中的云函数的自动化部署
阅读量:2063 次
发布时间:2019-04-29

本文共 2955 字,大约阅读时间需要 9 分钟。

云开发中的云函数是云开发 Cloudbase 的一个重要的功能,开发者可以借助其中的云函数来实现一些复杂的业务逻辑,来实现诸如图片处理、数据处理等复杂的逻辑。同时,云函数的免运维、快速部署等特性也可以大大简化开发者的工作量,让开发者把更多的精力投放在业务逻辑的开发上。

在进行云开发中云函数的开发时,我们可能会经常重复“编写函数代码->部署”这个过程,这个过程繁琐而又不得不做,有没有一种方式可以让机器帮我们自动部署函数,减少我们做这些重复的工作,把更多的精力都投放在更有价值的事情上呢?我们可以借助 CODING CI,来实现云函数的自动化部署,简化我们的工作量。

接下来,我将介绍一下如何构建一个流水线,实现自动化部署云开发中的云函数。

1. 工作流梳理

我们先梳理一下流水线的工作流。这是一个只有单一步骤的简单工作流。在推送步骤中我们还是借助 TCB CLI 工具完成云开发中云函数的部署。流程的结果我们可以通过 WebHook 消息通知到企业微信。

2. 在 CODING 中创建 DevOps 项目

登录 CODING 工作台,进入全部项目模块,新建一个项目。选择新建项目时的所用到的模板,这里选择 DevOps 模板,进入下一步。填写项目名称、项目描述,完成创建。

3. 创建云开发环境

输入网址:https://console.cloud.tencent.com/tcb/env/index ,如果没有授权会弹出以下画面。

点击访问管理,进入授权。创建一个云开发环境,这里命名环境为 mytest

4. 设置 SecretId 和 SecretKey

在流水线中,一般不会使用特权账号的 SecretKey(主账号的最高权限 SecretKey,拥有腾讯云控制台的所有权),都是按需授权,所以需要对 SecretKey 的权限进行访问控制。使用主账号登录 https://console.cloud.tencent.com/cam/capi,根据提示创建子用户,选择自定义创建,选择类型为可访问资源并接收消息。填写用户信息,选择访问方式为编程访问。

对子用户进行权限策略关联,对于云开发产品的访问控制有一个预设策略名字叫 QcloudAccessForTCBRole,对账号授权该策略,将拥有云开发(TCB)对云资源的访问权限。直接在搜索框中搜索该策略即可。
下一步,完成子用户的创建,请保存好 SecretId 和 SecretKey 信息。

5. 创建 TCB 云开发项目

在本地使用 TCB CLI 创建一个云开发项目。

tcb init
如果您没有登录 tcb,这里需要扫码登录。选择关联的环境,这里我选择 mytest 环境,输入项目名称 mytest,选择开发语言,目前支持 PHP、Java 和 Node 三种语言,这里我选择 Node,选择云开发模板,这里我选择 Hello World 模板。

√ 选择关联环境 · mytest - [mytest-1ae5c0:空]√ 请输入项目名称 · mytest√ 选择开发语言 · Node√ 选择云开发模板 · Hello World√ 创建项目 mytest 成功!

我们将本地仓库与 CODING 远端仓库进行关联。

cd mytestgit init#这里需要注意 username 为你的 CODING 账户名,tcb-fun 是代码仓库名git remote add origin git@e.coding.net:username/tcb-fun.gitgit add .git commit -m "Initial commit"git push -u origin master

6. CODING CI 设置

SecretId 和 SecretKey 信息属于敏感信息,我们需要以 CODING 凭据的形式保存在项目配置中,使用凭据后你的敏感信息将不会出现在构建日志和 Jenkinsfile 中,这样会更加安全。进入项目,依次选择项目设置、开发者选项、凭据管理,录入一个凭据。CODING 为我们提供了原生调用腾讯云产品的能力,在这里我们选择凭据类型为云 API 秘钥,填写好凭据名称、SecretId 和 SecretKey 信息,授权在持续集成中使用凭据。接下来我们回到项目,选择构建计划模块,创建一个持续集成任务。

填写计划名称,选择代码源为 CODING 代码仓库,配置来源使用静态配置的 Jenkinsfile。
根据前面我们梳理的流程,开始撰写 Jenkinsfile 文件,这里我们需要选择文本编辑器。

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 凭据,选择默认值为刚刚添加的凭据信息,保存修改。

7. 测试与验证

通过以上步骤,我们已经构建好了云开发中云函数持续部署流水线,我们可以使用 push 代码来触发流水线自动部署。

在 CODING 项目的构建计划中可以看到每一次的构建任务的运行状态。点击构建任务,进入到任务详情,点击每一个步骤都可以看到日志详情。我们看到整个流水线已经跑完,状态正常,在日志中也看到云开发中云函数部署成功的提示。
我们回到云开发控制台,进入 mytest 环境,查看云函数列表,已经可以看到我们刚刚部署的云函数。测试调用云函数,其功能正常。

作者:校园布道师谈笑

转载地址:http://gqglf.baihongyu.com/

你可能感兴趣的文章
一次“不负责任”的 K8s 网络故障排查经验分享
查看>>
一次有趣的 Docker 网络问题排查经历
查看>>
KubeSphere Meetup 北京站火热报名中 | 搭载 CIC 2021 云计算峰会
查看>>
深入理解 Linux Cgroup 系列(一):基本概念
查看>>
深入理解 Linux Cgroup 系列(二):玩转 CPU
查看>>
云原生周报第 1 期 | 2019-06-24~2019-06-28
查看>>
Kubernetes Pod 驱逐详解
查看>>
kubectl 创建 Pod 背后到底发生了什么?
查看>>
[译] Kubernetes 儿童插图指南
查看>>
云原生周报第 2 期 | 2019-07-01~2019-07-05
查看>>
kubectl 创建 Pod 背后到底发生了什么?
查看>>
Kube-scheduler 源码分析(二):调度程序启动前逻辑
查看>>
kubernetes 1.15 有哪些让人眼前一亮的新特性?
查看>>
云原生周报:第 3 期
查看>>
深入理解 Linux Cgroup 系列(三):内存
查看>>
7月最新Java微服务资料
查看>>
Linux 指令
查看>>
wi10优化
查看>>
windows console 颜色设置
查看>>
VC unicode下Cstring转char*
查看>>