全部產品
Search
文件中心

Alibaba Cloud DevOps:代碼源觸發

更新時間:Jun 03, 2026

本文介紹如何配置流水線代碼源觸發,以及代碼源觸發事件和過濾條件。

配置代碼源觸發

開啟代碼源觸發,配置WebHook後,在相應的代碼地址和分支上提交代碼後就可以觸發流水線的運行了。

雲效 Codeup 開啟代碼源觸發

  1. 在 Flow 流水線,點擊編輯流水線,點擊編輯代碼源。

  2. 點擊 開啟代碼源觸發,Flow 會自動將 Webhook 地址插入到雲效 Codeup 相應程式碼程式庫中。

開啟後,在觸發事件地區勾選所需事件類型,包括代碼提交TAG建立合并請求完成後合并請求 建立/更新,還可按需開啟分支或標籤過濾代碼路徑過濾,配置完成後單擊添加

開啟後,在雲效 Codeup 程式碼程式庫的 Webhooks 設定頁面可看到 Flow 自動註冊的 Webhook 條目,其觸發事件包括推送事件標籤推送事件合并請求事件

其他代碼類型開啟代碼源觸發

  1. 進入目標Flow流水線編輯頁,單擊編輯代碼源。開啟代碼源觸發,並複製對應的Webhook。

    觸發事件中勾選代碼提交,並將複製的Webhook地址添加到對應代碼倉庫的Webhook觸發設定中。

  2. 將複製的Webhook地址配置到相應的程式碼程式庫中。雲效支援Gitlab、Github、Gitee、通用Git代碼倉庫類型開啟代碼源觸發,各類型代碼倉庫配置Webhook方法參考如下。

    Gitlab 配置 Webhook

    訪問Gitlab的程式碼程式庫地址,選擇將流水線複製的 WebHook 添加到 URL 中。

    Trigger 地區勾選 Push events 作為觸發事件。

    Github 配置 Webhook

    訪問 Github 的程式碼程式庫地址,選擇,單擊 Add Webhook,將 Flow 流水線上複製的 Webhook 地址填入 Payload URL中,Content Type 選擇 application/json

    事件觸發方式保持預設選項 Just the push event.

    Gitee 配置 Webhook

    訪問碼雲 Gitee的程式碼程式庫地址,選擇,將 Flow 流水線複製的 Webhook 地址添加到 URL 中。

    通用 Git 配置 Webhook

    以Gitlab為例,訪問Gitlab的程式碼程式庫地址,選擇將流水線複製出來的 WebHook 添加到 URL 中。

    SVN 配置 Webhook

    1. 在編輯流水線頁面開啟代碼源觸發,複製Webhook地址。

      觸發事件勾選代碼提交,Webhook 地址為 http://flow-openapi.aliyun.com/scm

    2. 在SVN服務端版本庫的 hooks 目錄下找到對應的鉤子指令碼模板,每一個對應一個事件,使用時去掉尾碼。

      14:32  post-commit.tmpl
      14:32  post-lock.tmpl
      14:32  post-revprop-change.tmpl
      14:32  post-unlock.tmpl
      14:32  pre-commit.tmpl
      14:32  pre-lock.tmpl
      14:32  pre-revprop-change.tmpl
      14:32  pre-unlock.tmpl
      14:32  start-commit.tmpl
    3. 以post-commit為例,post-commit就是一個Shell指令碼,將期望的操作編寫進該指令碼內,SVN檢測到代碼有變更後(包括提交代碼、建立分支和建立tag操作),就會執行該指令碼。下面是樣本指令碼,代碼提交觸發Flow流水線運行:

      #!/bin/sh
      # 倉庫的路徑和提交的修訂編號作為參數傳遞給指令碼
      REPOS="$1"
      REV="$2"
      # 使用 svnlook 查看本次提交中發生變化的目錄
      CHANGED_DIRS=$(svnlook dirs-changed -r "$REV" "$REPOS")
      # 取出第一個發生變化的目錄路徑(通常是最上層目錄)
      FIRST_CHANGED_PATH=$(echo "$CHANGED_DIRS" | head -n 1)
      # 假設倉庫的分支結構遵循標準的格式(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

代碼提交

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 使用目標分支作為流水線運行時使用的分支。

過濾條件

分支或標籤過濾

代碼提交觸發的過濾條件支援Regex。 可以輸入一個普通分支,比如master或者dev。或使用JavaRegex文法,以下是幾個樣本:

  • 匹配多個分支,比如 master 和 dev,可以輸入master|dev

  • 匹配以 feature 開頭的分支,可以輸入^feature.*

代碼路徑過濾

通過配置代碼路徑過濾,可以對不同代碼源觸發事件的代碼路徑進行過濾,目前僅支援 CodeUp 代碼源 Push 事件。只有在代碼路徑過濾規則下的代碼發生更新時,才會觸發流水線運行,填寫過濾條件支援Regex。例如:過濾條件為auth-srv/.*時,僅當auth-srv目錄下的代碼有更新時才會觸發流水線運行。