前言

近期公司在做一款可用性监测产品,需要把代码部署到多个地域。由于仅仅涉及到网络请求与数据上报,直接在不同地域购买服务器显得有些小题大做,也不利于成本控制。最后选用阿里云的函数计算(FC)与腾讯云的无服务器云函数(SCF)产品。

问题

刚开始只有几个节点,还能勉强手动上传代码包解决。但随着节点数量越来越多,代码稍微改动,都要重复上传几十次代码包,这样一来工作量就非常大了,而且特别耗时间。

解决

公司代码托管使用Coding企业版,决定使用里面的持续集成功能去搞定。

整体思路是先把代码包压缩,代码测试完毕后,读取目录下存有节点信息的json文件,并调用腾讯云与阿里云的API上传代码包。

部署、测试代码语言使用Node.js。

编写节点信息

node.json
在阿里云中比腾讯云多出一个“服务”,由于我在阿里云上部署的代码,服务与函数名称是相同的,故这里只使用了funcname,如果你的实际情况和我不同,则需要稍作修改。

{
    "node1": {
        "type": "qcloud", //平台类型
        "region": "ap-guangzhou", //地域名称
        "funcname": "node-ap-guangzhou" //函数名称
    },
    "node2": {
        "type": "aliyun", //平台类型
        "region": 
阅读更多

最近使用到Jenkins来进行持续集成,代码库在自建的Gitlab上,而Jenkins里已有提供GitLab Plugin插件,很方便地就完成了部署。但是若使用其它的例如阿里云Code和腾讯云TGit系统却没有对应的插件,网上也没有好的解决方案。尝试使用过Generic Webhook Trigger Plugin,但是多个项目都使用的话,会把所有项目都触发构建。

因为我的需求比较简单,只需响应Push请求然后拉取代码发布到FTP上,后来决定直接使用“触发远程构建(例如,使用脚本)”这个系统自带触发器,步骤如下:

  1. 由于我的Jenkins系统设定了必须登录,触发时需要身份验证,于是新建一个Jenkins用户用于Webhook,赋予Overall Read、Job Create&Discover&Read权限(也可使用管理员帐号,但是为了系统安全,还是建了一个低权限的帐号用于Webhook)
  2. 在项目配置的构建触发器中勾选“触发远程构建 (例如,使用脚本)”,由于使用Webhook时直接登录帐号,身份验证令牌可不填。记录下Use the following URL to trigger build remotely:后的URL即可。?token=TOKEN_NAME可省略
  3. 登录Git平台,在Webhook配置中填写上一步的URL并带上登录验证信息,勾选勾选Push events,最终URL类似于如下:
    http://USERNAME:PASSWORD
阅读更多