本文介绍如何配置流水线代码源触发,以及代码源触发事件和过滤条件。
配置代码源触发
开启代码源触发,配置WebHook后,在相应的代码地址和分支上提交代码后就可以触发流水线的运行了。
云效 Codeup 开启代码源触发
在 Flow 流水线,点击编辑流水线,点击编辑代码源。
点击 开启代码源触发,Flow 会自动将 Webhook 地址插入到云效 Codeup 相应代码库中。
其他代码类型开启代码源触发
进入目标Flow流水线编辑页,单击编辑代码源。开启代码源触发,并复制对应的Webhook。
将复制的Webhook地址配置到相应的代码库中。云效支持Gitlab、Github、Gitee、通用Git代码仓库类型开启代码源触发,各类型代码仓库配置Webhook方法参考如下。
Gitlab 配置 WebhookGithub 配置 WebhookGitee 配置 Webhook通用 Git 配置 WebhookSVN 配置 Webhook访问Gitlab的代码库地址,选择 ,将流水线复制的 WebHook 添加到 URL 中。
访问 Github 的代码库地址,选择
,单击 Add Webhook,将 Flow 流水线上复制的 Webhook 地址填入 Payload URL中,Content Type 选择 application/json。访问码云 Gitee的代码库地址,选择 ,将 Flow 流水线复制的 Webhook 地址添加到 URL 中。
以Gitlab为例,访问Gitlab的代码库地址,选择 ,将流水线复制出来的 WebHook 添加到 URL 中。
在编辑流水线页面开启代码源触发,复制Webhook地址。
在SVN服务端版本库的 hooks 目录下找到对应的钩子脚本模板,每一个对应一个事件,使用时去掉后缀。
以post-commit为例,post-commit就是一个Shell脚本,将期望的操作编写进该脚本内,SVN检测到代码有变更后(包括提交代码、创建分支和创建tag操作),就会执行该脚本。下面是示例脚本,代码提交触发Flow流水线运行:
#!/bin/sh # 仓库的路径和提交的修订号作为参数传递给脚本 REPOS="$1" REV="$2" # 获取发生变更的目录列表 CHANGED_DIRS=$(svnlook dirs-changed -r "$REV" "$REPOS") # 假设仓库的分支结构遵循标准的格式(branches/分支名),那么可以从输出中解析分支名 FIRST_CHANGED_PATH=$(echo "$CHANGED_DIRS" | head -n 1) # 使用sed来提取分支名。这里假设路径遵循 "branches/分支名" 的结构 BRANCH_NAME=$(echo $FIRST_CHANGED_PATH | sed 's#.*/\(branches/.*\)/#\1#') # 编写curl命令请求流水线提供的webhook地址:webhook地址替换为自己流水线里提供的,请求数据按照下面的示例编写 curl --location --request POST 'http://flow-openapi.aliyun.com/scm/webhook/MwfQPTyf4nif2UdWBooR' \ --header 'Content-Type: application/json' \ --data-raw "{ \"ref\": \"refs/heads/$BRANCH_NAME\", \"repository\": { \"clone_url\": \"svn://8.142.XX.XXXcom/svn/repos/demo\" } }"
触发事件
可以使用 触发事件 配置来对代码源Webhook事件进行过滤。 不同代码源支持的触发事件如下:
阿里云Code | 云效Codeup | 通用Git | Github | Gitlab | Coding | Bitbucket | 自建Gitlab | SVN |
阿里云Code | 云效Codeup | 通用Git | Github | Gitlab | Coding | Bitbucket | 自建Gitlab | SVN | |
代码提交 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✘ | ✓ | ✓ |
Tag创建 | ✓ | ✓ | ✘ | ✘ | ✓ | ✘ | ✘ | ✓ | ✘ |
合并请求新建/更新 | ✘ | ✓ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ |
合并请求完成后 | ✘ | ✓ | ✘ | ✘ | ✘ | ✘ | ✘ | ✓ | ✘ |
代码提交:从本地 push 分支到远程分支(或在代码管理平台的Web端进行文件修改),例如从本地的master push到 origin/master。Flow 会将 push 的目标分支与过滤条件进行匹配,如果匹配成功,则会触发流水线,并使用 push 的目标分支作为流水线运行时使用的分支。
Tag创建:从本地 push tag 到服务端 tag(或在代码管理平台的 Web 端进行 Tag 创建),例如将本地的tag release/0.0.1 push 服务端。Flow 会将 push 的目标 Tag 名称与过滤条件进行匹配,如果匹配成功,则会触发流水线,并使用目标 Tag 作为流水线运行时使用的代码版本。
合并请求新建/更新:在代码管理平台的 Web 端创建合并请求,Codeup 支持此类事件。例如从远程的 dev 分支(源分支)发起一个合并请求到 master 分支(目标分支)。Flow 会将合并请求的目标分支与过滤条件进行匹配,如果匹配成功,则会触发流水线,并使用源分支作为流水线运行时使用的分支。
合并请求完成后:与合并 合并请求新建/更新 相比唯一的差别是:Flow 使用目标分支作为流水线运行时使用的分支。
过滤条件
分支或标签过滤
代码提交触发的过滤条件支持正则表达式。 可以输入一个普通分支,比如master或者dev。或使用Java正则表达式语法,以下是几个示例:
匹配多个分支,比如 master 和 dev,可以输入
master|dev
。匹配以 feature 开头的分支,可以输入
^feature.*
。
代码路径过滤
通过配置代码路径过滤,可以对不同代码源触发事件的代码路径进行过滤,目前仅支持 CodeUp 代码源 Push 事件。只有在代码路径过滤规则下的代码发生更新时,才会触发流水线运行,填写过滤条件支持正则表达式。例如:过滤条件为auth-srv/.*
时,仅当auth-srv目录下的代码有更新时才会触发流水线运行。
- 本页导读 (1)
- 配置代码源触发
- 云效 Codeup 开启代码源触发
- 其他代码类型开启代码源触发
- 触发事件
- 过滤条件
- 分支或标签过滤
- 代码路径过滤