身為 Code Stream 管理員或開發人員,您可以使用 Gerrit 觸發器整合 Code Stream 雲端服務與 Gerrit 代碼檢閱生命週期。當您在 Gerrit 專案上建立修補程式集、發佈草稿、合併程式碼變更或直接在 Git 分支上推送變更時,事件會觸發管線執行。

為 Gerrit 新增觸發器時,請選取 Gerrit 接聽程式、伺服器上的 Gerrit 專案,並設定 Gerrit 事件。在此範例中,您先設定 Gerrit 接聽程式,然後在三個不同管線上有兩個事件的 Gerrit 觸發器中使用該接聽程式。

必要條件

程序

  1. Code Stream 中,按一下觸發器 > Gerrit
  2. (選擇性) 按一下接聽程式索引標籤,然後按一下新增接聽程式
    備註: 如果已定義您打算用於 Gerrit 觸發器的 Gerrit 接聽程式,請略過此步驟。
    1. 選取專案。
    2. 輸入 Gerrit 接聽程式的名稱。
    3. 選取 Gerrit 端點。
    4. 輸入 API Token。
      CSP API Token 會向您驗證與 Code Stream 的外部 API 連線。取得 API Token:
      1. 登入 vRealize Automation Cloud
      2. 按一下您名稱旁邊的下拉式箭頭。
      3. 按一下我的帳戶
      4. 按一下 API Token
      5. 按一下產生 Token
        1. 輸入 Token 名稱。
        2. 在 [組織角色] 下,選取組織擁有者
        3. 在 [服務角色] 下,按一下以展開 VMware Code Stream,然後選取 Code Stream 管理員
        4. 按一下產生

          已產生 Token 視窗會顯示具有您所指定名稱的 Token,以及您組織的名稱。

      6. 按一下複製圖示。

        按一下複製可確保您擷取精確字串,並且比使用指標複製字串更為可靠。

      如果您已建立變數,則 API Token 會顯示您輸入的變數名稱。如果您已複製 Token,則 API Token 會顯示已遮罩的 Token。

      用於觸發器 SaaS 的 Gerrit 接聽程式

    5. 若要驗證 Token 和端點詳細資料,請按一下驗證
      您的 Token 將在 90 天後到期。
    6. 按一下建立
    7. 在接聽程式卡上,按一下連線
      接聽程式會開始監控 Gerrit 伺服器上的所有活動,並接聽該伺服器上任何已啟用的觸發器。若要停止接聽該伺服器上的觸發器,請停用觸發器。
  3. 按一下觸發器索引標籤,然後按一下新增 Gerrit 觸發器
  4. 選取 Gerrit 伺服器上的專案。
  5. 輸入名稱。
    Gerrit 觸發器名稱必須是唯一的。
  6. 選取已設定的 Gerrit 接聽程式。
    Code Stream 使用 Gerrit 接聽程式選取項目來提供伺服器上可用的 Gerrit 專案的清單。
  7. 選取 Gerrit 伺服器上的專案。
  8. 輸入存放庫中要監控的分支。
  9. (選擇性) 提供檔案包含或排除做為觸發器的條件。
    • 請提供檔案包含項目以觸發管線。當 commit 中的任何檔案與包含路徑或 Regex 指定的檔案相符時,會觸發管線。指定 Regex 時, Code Stream 只會觸發變更集中檔案名稱與提供的運算式相符的管線。為單一存放庫中的多個管線設定觸發器時,規則運算式篩選器很有用。
    • 請提供檔案排除以使管線不會觸發。當 commit 中的所有檔案與排除路徑或 Regex 中指定的檔案相符時,管線不會觸發。
    • 開啟 [排列排除優先順序] 時,可確保不會觸發管線。即使 commit 中的任何檔案與排除路徑或 Regex 中指定的檔案相符,管線也不會觸發。預設設定為關閉。
    如果同時符合包含和排除的條件,則不會觸發管線。

    在下列範例中,檔案包含和檔案排除都是觸發器的條件。

    檔案包含和排除範例

    • 對於檔案包含,認可對 runtime/src/main/a.java 或任何 java 檔案的任何變更都將觸發事件組態中設定的管線。
    • 對於檔案排除,僅認可這兩個檔案中的變更不會觸發事件組態中設定的管線。
  10. 按一下新增組態
    1. 對於 Gerrit 事件,選取已建立修補程式集已發佈草稿已合併變更。或者,若要繞過 Gerrit 直接推送至 Git,則選取直接 Git 推送
    2. 選取要觸發的管線。
      如果管線已設定使用自訂新增的輸入參數,[輸入參數] 清單會顯示參數和值。您可以輸入將透過觸發事件傳遞到管線的輸入參數的值。或者,您可以將這些值保留空白,或使用預設值。
      備註: 如果已定義預設值:
      • 針對輸入參數輸入的任何值都將覆寫管線模型中定義的預設值。
      • 如果已變更管線模型中的參數值,則不會更新用於設定觸發器的預設值。

      如需 Gerrit 觸發器的自動插入輸入參數的相關資訊,請參閱必要條件

    3. 對於已建立修補程式集已發佈草稿已合併變更,某些動作預設會與標籤一起出現。您可以變更標籤或新增註解。然後,當管線執行時,標籤或註解會在 [活動] 索引標籤中針對管線顯示為已採取動作
    4. 按一下儲存
    若要在多個管線上新增多個觸發事件,請再次按一下 新增組態
    在下列範例中,您會看到三個管線的事件:
    • 如果 Gerrit 專案中發生已合併變更事件,會觸發 Gerrit-Pipeline
    • 如果 Gerrit 專案中發生已建立修補程式集事件,會觸發 Gerrit-Trigger-PipelineGerrit-Demo-Pipeline

    接聽程式和 Gerrit 觸發器組態

  11. 按一下建立
    觸發器會顯示為新卡,且依預設會停用。
  12. 在觸發器卡上,按一下啟用
    當觸發器啟用時,它會使用 Gerrit 接聽程式開始監控 Gerrit 專案分支上發生的事件。
    當您建立觸發器時,需包括進行程式碼認可的存放庫。例如,如果您想要建立具有相同檔案包含或排除條件但使用不同存放庫的觸發器,您可以在觸發器卡上按一下 動作 > 複製。然後,在新的觸發器上按一下 開啟並變更參數。

結果

恭喜您!您已成功設定在三個不同管線上有兩個事件的 Gerrit 觸發器。

後續步驟

認可 Gerrit 專案中的程式碼變更之後,針對 Code Stream 中的 Gerrit 事件勾選 [活動] 索引標籤。請確認活動清單包含與觸發器中設定的每個管線執行對應的項目。發生事件時,僅會執行 Gerrit 觸發器中與特定事件類型相關的管線。在此範例中,如果已建立修補程式集,僅會執行 Gerrit-Trigger-PipelineGerrit-Demo-Pipeline

[活動] 索引標籤上的欄中的資訊說明了每個 Gerrit 觸發器事件。您可以選擇要顯示的欄。
  • 如果觸發器是直接 git 推送,則 [變更主題] 和 [執行] 欄為空白。
  • [Gerrit 觸發器] 欄顯示已建立事件的觸發器。
  • [接聽程式] 預設為關閉。選取此項後,它會顯示收到事件的 Gerrit 接聽程式。一個接聽程式可以與多個觸發器建立關聯。
  • [觸發器類型] 預設為關閉。選取此項後,會顯示是手動還是自動觸發觸發器。

Gerrit 觸發器活動

若要控制執行完成或失敗的活動,請按一下 [活動] 畫面上任何項目左側的三個點。
  • 如果此管線因管線模型錯誤或其他問題而無法執行,請更正錯誤,然後選取重新執行以再次執行。
  • 如果此管線因網路連線問題或其他問題而無法執行,請選取繼續以重新啟動相同的管線執行。如此一來可節省執行時間。
  • 使用檢視執行以轉移至 [執行] 畫面。請參閱如何執行管線和查看結果
  • 使用刪除從 [活動] 畫面中刪除項目。
如果 Gerrit 事件無法觸發管線,您可以按一下 手動觸發按鈕,然後輸入 Gerrit 觸發器的名稱和 Change-Id。

由於 Gerrit 伺服器和管線雲端 Proxy 之間的連線中斷,Gerrit 事件可能會遺失。連線中斷可能會持續長達 10 分鐘。如果 Gerrit 伺服器已升級或重新啟動,則可能會發生連線中斷的情況。如果管線雲端 Proxy 已升級,也會發生此情況。