与本地 CI/CD hook 集成
阿里云云开发平台平台不仅支持在线 CloudIDE 开发、测试和 CI/CD,同时支持本地开发。在本地环境下,云开发平台在不影响原有开发流程的前提下提供 hook 文件支撑项目本地 CI/CD,让您的原有项目轻松升级到云原生 Serverless 架构。
Hook 文件需要集成在代码托管平台的触发器逻辑中,文档以 Gitlab 举例。Gitlab 提供了两种钩子:WEB Hooks 和 Custom Hooks,WEB Hooks 触发时调用提供的HTTP/HTTPS 接口而 Custom Hooks 则调用相关脚本,最终这两种 Hooks 都会调用或实现相关的 CI/CD 逻辑实现项目自动化部署。
集成阿里云开发平台CI/CD hook
前置条件:安装Node.js环境,安装指南
- 下载阿里云云开发平台CI/CD hook
- 解压zip包,解压后包括两个文件 “workbench.cicd.js和package.json”
- 进入解压后的目录并安装依赖:
npm install
- 设置环境变量,CI/CD hook依赖4个环境变量:CI_WORKBENCH_ID(云开发平台创建的工程ID)、CI_ACCESS_KEY(阿里云账号的Access key)、CI_ACCESS_SECRETE(阿里云账号对应的AccessKey Secrete)、CI_GITFLOW_PATH(可选,指定gitflow文件的路径,下文详细介绍)。
a. 这4个环境变量的作用域并不相同,与访问权限控制相关的变量 “CI_ACCESS_KEY、CI_ACCESS_SECRETE”设置为系统的全局变量,以后每次执行云开发平台的CI/CD hook时都可使用这对key;点击获取key
b. CI_WORKBENCH_ID是云开发平台创建的工程ID,与每个gitlab仓库相对应,因此需要针对CI_WORKBENCH_ID做单独的配置;
进入云开发平台查看CI_WORKBENCH_ID,点击应用进入「应用详情页」,点击左侧「基本信息」,获得应用的appid。
获取CI_WORKBENCH_ID后在gitlab的仓库页设置环境变量:
c. CI_GITFLOW_PATH(可选配置项)指向定义部署规范的文件路径,开发者可以自行定义“发布分支与部署云开发平台环境的映射关系”(云开发平台提供三套环境:日常、预发和线上)。CI_GITFLOW_PATH必须指向JSON文件。
默认采用的gitflow规则如下:
{
"TEST": "master",
"PRE": "release\/v[0-9]+\\.[0-9]+\\.[0-9]+",
"RELEASE": "^v[0-9]+\\.[0-9]+\\.[0-9]+$"
}
- 在customer hook中执行阿里云云开发平台CI/CD hook
#原先固有操作
...
#执行阿里云云开发平台CI/CD hook
node /absolute/path/workbench.cicd.js
#原先固有逻辑
...
- 项目开发者首次发布项目时需要进入阿里云开发平台WEB IDE,拷贝“.workbench及项目脚手架包含的所有文件”到本地仓库的根目录下,此后需要开发者在本地维护“.workbench”的路由配置。
测试CI/CD
按照配置的gitflow(可通过CI_GITFLOW_PATH指定分支与部署规范)提交到远程分支,查看构建日志即可。