DMS支持通过第三方DevOps流水线(包含阿里云云效流水线Flow和在Jenkins配置的流水线)触发Airflow任务自动化CICD(持续集成和持续交付/部署)。本文为您介绍如何搭建云效流水线和Jenkins流水线。
背景信息
流水线Flow是一款企业级、自动化的持续集成和持续交付的工具,可以帮助企业实现从代码开发到部署到生产环境的全流程自动化。该工具能够提升开发效率、加快交付速度和减少出错率。
前提条件
配置云效流水线
步骤一:创建流水线
步骤二:配置触发源来触发流水线运行
流水线的触发源包括Webhook和GitHub仓库两种方式。
手动配置Webhook
-
在流水线触发设置页面,打开Webhook触发开关。
开启后,在通用Webhook(代码源提交触发请勿使用)区域获取Webhook URL,单击URL右侧的复制按钮复制该地址,用于外部系统触发流水线。
-
复制通用Webhook地址,并单击右上角的仅保存。
-
打开您的GitHub仓库,在顶部菜单栏选择Settings,再单击左侧导航栏的Webhooks。
-
单击Add webhook。
-
将复制的通用Webhook地址填入Payload URL参数区域,并选择触发类型(其他参数保持默认值即可),再单击Add webhook。
关联GitHub仓库
-
进入流水线 Flow流程配置页面,单击添加流水线源。
-
在代码源页面选择Github,再单击添加。
初次配置需要添加服务连接,进行GitHub授权,即可添加Git仓库。
在 新建服务连接 对话框中,连接类型 选择 Github,填写 服务连接名 和 服务连接 ID,在 服务授权/证书 处单击 新建 完成 GitHub 授权,使用范围 根据需要选择 私密、公开 或 自定义。
-
添加GitHub仓库后,选择代码仓库以及默认分支,并选择开启代码源触发。
此处需要复制Webhook地址。
-
打开目标GitHub仓库,在顶部菜单栏选择Settings,再单击左侧导航栏的Webhooks。
-
单击Add webhook。
该按钮位于仓库 Settings 页面左侧导航栏 Webhooks 菜单对应页面的右上角。
-
将复制的通用Webhook地址填入Payload URL参数区域,并选择触发类型,单击添加。其他参数保持默认值即可。
关联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步骤即可创建并配置多个任务节点。
流水线编辑页面中,单击+添加流水线源后依次连接dev环境、pre环境、product环境三个部署阶段,每个阶段包含对应的命令任务,各阶段之间通过触发器串联。
-
单击页面右上角的仅保存。
步骤五:运行并查看流水线运行记录
配置触发源完成后,将由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。