实战优化丨如何借助 CODING 实现云开发中的云函数的自动化部署 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Coding.NET 轻量级社交
开源项目广场
使用帮助
意见反馈
CodingNET
V2EX    Coding

实战优化丨如何借助 CODING 实现云开发中的云函数的自动化部署

  •  1
     
  •   CodingNET 2020 年 6 月 28 日 2682 次点击
    这是一个创建于 2033 天前的主题,其中的信息可能已经有所发展或是发生改变。

    云开发中的云函数是云开发 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 mytest git init #这里需要注意 username 为你的 CODING 账户名,tcb-fun 是代码仓库名 git remote add origin [email protected]:username/tcb-fun.git git 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 环境,查看云函数列表,已经可以看到我们刚刚部署的云函数。测试调用云函数,其功能正常。 图片

    作者:校园布道师谈笑

    目前尚无回复
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3614 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 37ms UTC 10:37 PVG 18:37 LAX 02:37 JFK 05:37
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86