全部產品
Search
文件中心

Alibaba Cloud DevOps:代碼源觸發

更新時間:May 16, 2025

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

配置代碼源觸發

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

雲效 Codeup 開啟代碼源觸發

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

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

image

image

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

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

    image

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

    Gitlab 配置 Webhook

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

    高的 (24)

    Github 配置 Webhook

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

    高的 (25)

    Gitee 配置 Webhook

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

    通用 Git 配置 Webhook

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

    SVN 配置 Webhook

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

      高的 (26)

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

      image.png

    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目錄下的代碼有更新時才會觸發流水線運行。