与本地 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环境,安装指南

  1. 下载阿里云云开发平台CI/CD hook
  2. 解压zip包,解压后包括两个文件 “workbench.cicd.js和package.json”
  3. 进入解压后的目录并安装依赖:
  1. npm install
  1. 设置环境变量,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

image.png

b. CI_WORKBENCH_ID是云开发平台创建的工程ID,与每个gitlab仓库相对应,因此需要针对CI_WORKBENCH_ID做单独的配置;

进入云开发平台查看CI_WORKBENCH_ID,点击应用进入「应用详情页」,点击左侧「基本信息」,获得应用的appid。

appid


获取CI_WORKBENCH_ID后在gitlab的仓库页设置环境变量:

image.png

c. CI_GITFLOW_PATH(可选配置项)指向定义部署规范的文件路径,开发者可以自行定义“发布分支与部署云开发平台环境的映射关系”(云开发平台提供三套环境:日常、预发和线上)。CI_GITFLOW_PATH必须指向JSON文件。

默认采用的gitflow规则如下:

  1. {
  2. "TEST": "master",
  3. "PRE": "release\/v[0-9]+\\.[0-9]+\\.[0-9]+",
  4. "RELEASE": "^v[0-9]+\\.[0-9]+\\.[0-9]+$"
  5. }
  1. 在customer hook中执行阿里云云开发平台CI/CD hook
  1. #原先固有操作
  2. ...
  3. #执行阿里云云开发平台CI/CD hook
  4. node /absolute/path/workbench.cicd.js
  5. #原先固有逻辑
  6. ...
  1. 项目开发者首次发布项目时需要进入阿里云开发平台WEB IDE,拷贝“.workbench及项目脚手架包含的所有文件”到本地仓库的根目录下,此后需要开发者在本地维护“.workbench”的路由配置。

测试CI/CD

按照配置的gitflow(可通过CI_GITFLOW_PATH指定分支与部署规范)提交到远程分支,查看构建日志即可。