DMS支持通过第三方DevOps流水线(包含阿里云云效流水线Flow和在Jenkins配置的流水线)触发Airflow任务自动化CICD(持续集成和持续交付/部署)。本文为您介绍如何搭建云效流水线和Jenkins流水线。
背景信息
流水线Flow是一款企业级、自动化的持续集成和持续交付的工具,可以帮助企业实现从代码开发到部署到生产环境的全流程自动化。该工具能够提升开发效率、加快交付速度和减少出错率。
前提条件
配置云效流水线
步骤一:创建流水线
步骤二:配置触发源来触发流水线运行
流水线的触发源包括Webhook和GitHub仓库两种方式。
手动配置Webhook
在流水线触发设置页面,打开Webhook触发开关。
复制通用Webhook地址,并单击右上角的仅保存。
打开您的GitHub仓库,在顶部菜单栏选择Settings,再单击左侧导航栏的Webhooks。
单击Add webhook。
将复制的通用Webhook地址填入Payload URL参数区域,并选择触发类型(其他参数保持默认值即可),再单击Add webhook。
关联GitHub仓库
关联GitLab仓库
在流水线 Flow流程配置页面,单击添加流水线源。
在代码源页面选择自建Gitlab。
填写代码仓库、默认分支参数信息、选择凭证类型为组织公钥(组织公钥是在GitLab账户中设置中生成),并开启代码源触发。其他参数值保持默认即可。
开启代码源触发后,请复制Webhook地址。
打开目标GitLab仓库,进入Webhook设置页面,在Webhook网址参数区域填写Webhook地址,并根据需求选择触发源。
单击Add webhook即可。
步骤三:配置全局环境变量
全局环境变量在整个流水线的各个任务节点都可以被使用。
在流水线 Flow编辑页面,单击变量和缓存。
在字符变量区域,单击新建变量。
添加下列变量以及默认值,再单击添加。
变量及说明如下:
变量名称
是否必填
说明
ALIBABA_CLOUD_ACCESS_KEY_ID
是
ALIBABA_CLOUD_ACCESS_KEY_SECRET
是
DMS_CICD_PROJECT_ID
是
DMS_CICD_BRANCH_NAME
是
部署分支
DMS_CICD_WORKSPACE_ID
是
步骤四:配置任务流
删除流程中阶段1的空任务节点。
在流程配置页面,选中并删除空任务节点。
创建新节点。
单击新阶段区域的新的任务,找到执行命令节点。
编辑执行任务节点。
进入节点编辑页面,配置任务节点相关参数。您仅需配置如下参数,其他参数保持默认值即可。
参数项
说明
任务名称
每个任务节点对应一个部署环境,建议每个任务节点的名称都能体现出该节点的环境信息。如:dev环境。
构建集群
保持默认选择(云效北京构建集群)即可。
下载流水线
选择不下载流水线源。
任务步骤
展开执行命令的文本框,再填入如下脚本。
wget 'https://dms-cicd-tool-cn-hangzhou.oss-cn-hangzhou.aliyuncs.com/dms_cicd_tool' chmod +x ./dms_cicd_tool ./dms_cicd_tool
为任务节点配置环境变量。
在节点编辑页面的环境变量区域,选择
。变量名称
含义
是否必填
示例值
DMS_CICD_DEPLOY_COMMON
部署任务备注
否
DEV环境部署测试
DMS_CICD_DEPLOY_PARAM
部署任务额外参数
否
{"param1":"value1"}
说明该变量为局部变量,即只在该任务节点生效。
参照2、3、4步骤即可创建并配置多个任务节点。
示例如下:
单击页面右上角的仅保存。
步骤五:运行并查看流水线运行记录
配置触发源完成后,将由Webhook自动触发任务运行。您也可以选择手动运行任务。
手动运行任务
单击流水线编辑页面右上方的保存并运行。
查看运行记录
在运行历史页面,单击查看,即可查看所有流水线运行的具体情况,包含任务节点的运行耗时和运行日志。单击任务节点区域的日志,即可查看目标节点的运行结果以及部署失败原因等信息。
说明任务节点运行成功标志:在执行命令区域出现
XXX success
。任务节点运行失败标志:在执行命令区域出现
XXX failed
。
配置Jenkins流水线
步骤一:配置流水线脚本
登录Jenkins。
若您未下载Jenkins,则请进入Jenkins官网下载安装。
在左侧导航栏单击新建任务。
输入任务名称,单击流水线页签。
根据实际情况修改如下脚本中的ALIBABA_CLOUD_ACCESS_KEY_ID、ALIBABA_CLOUD_ACCESS_KEY_SECRET和Webhook Token等信息,并将内容复制到文本框中,再单击保存。
pipeline { agent any environment { DMS_CICD_PROJECT_ID=xxxx DMS_CICD_BRANCH_NAME="master" ALIBABA_CLOUD_ACCESS_KEY_ID="xxxxx" ALIBABA_CLOUD_ACCESS_KEY_SECRET="xxxxx" DMS_CICD_WORKSPACE_ID=xxxx } stages { stage('Build') { steps { sh 'wget "https://dms-cicd-tool-cn-hangzhou.oss-cn-hangzhou.aliyuncs.com/dms_cicd_tool"' sh 'chmod +x ./dms_cicd_tool' echo 'Build step finished' } } stage('Deploy') { steps { sh './dms_cicd_tool' echo 'Deploy finished' } } } }
步骤二:配置Trigger
后续Airflow任务由Trigger自动触发运行。您也可以在Airflow空间手动运行任务。
确保Jenkins已安装插件Generic Webhook Trigger。
进入流水线项目,单击系统管理 > 插件管理,选中Generic Webhook Trigger并填写GitLab Token。
GitLab Token可在关联GitLab操作中获取。
设置GitHub触发。
在目标GitHub仓库的顶部菜单栏单击Settings,再单击左侧导航栏的Webhooks。
单击Add webhook。
将流水线的通用Webhook地址填入Payload URL区域,在Secret区域填入Token,并选择触发类型。
单击添加。
设置Gitlub触发。
打开目标Gitlub仓库,选择
。将流水线的通用Webhook地址填入Payload URL区域,在Secret区域填入Token,并选择触发来源。
单击Add Webhook。
其他操作
查看REPO项目ID
进入工作空间,单击左侧菜单栏的,在REPOS区域单击目标仓库右侧的
图标,即可查看REPO项目ID。