設定管線時,您可以新增管線針對所需動作執行的特定工作類型。每個工作類型均與另一個應用程式整合,並且在建置、測試和交付應用程式時啟用管線。

若要執行管線,無論您必須從存放庫提取構件以進行部署、執行遠端指令碼,還是需要團隊成員對使用者作業進行核准, Code Stream 都具有適當的工作類型供您選取!

Code Stream 支援取消各種類型工作上的管線執行。在管線執行上按一下取消時,工作、階段或整個管線將進入取消狀態並取消管線執行。

Code Stream 中,可以在使用以下工作時取消工作、階段或整個管線上的管線執行:
  • Jenkins
  • SSH
  • PowerShell
  • 使用者作業
  • 管線
  • 雲端範本
  • vRO
  • 輪詢

Code Stream 不會將取消行為散佈到這些工作的第三方系統:CI、自訂整合或 Kubernetes。 Code Stream 將工作標記為已取消並立即停止擷取狀態,而不會等待工作完成。按一下取消時,工作可能會在第三方系統上完成或失敗,但會在 Code Stream 中立即停止執行。

在管線中使用工作之前,請確認對應的端點可用。

表 1. 取得核准或設定決定點
工作類型 執行的作業 範例和詳細資料
使用者作業

使用者作業工作會啟用所需的核准,以控制何時執行管線以及何時必須等待核准。

請參閱如何執行管線和查看結果。和如何在 Code Stream 中管理使用者存取和核准

條件

新增決定點,以根據條件運算式確定繼續執行或停止管線。條件為 true 時,管線執行連續工作。條件為 false 時,管線將停止。

請參閱如何在 Code Stream 中使用 [條件] 工作中的變數繫結來執行或停止管線

表 2. 自動執行持續整合和部署
工作類型 執行的作業 範例和詳細資料
雲端範本

從 GitHub 部署自動執行雲端範本,並佈建應用程式,針對您的部署自動執行該雲端範本的持續整合和持續交付 (CICD)。

請參閱如何在 Code Stream 中自動發行從 YAML 雲端範本部署的應用程式

依序選取建立更新雲端範本版本後,雲端範本參數隨即出現。您可以將可容納變數繫結的這些元素新增至雲端範本工作中的輸入文字區域:

  • 整數
  • 列舉字串
  • 布林值
  • 陣列變數

當您在輸入中使用變數繫結時,請注意這些例外狀況。對於列舉,您必須從固定集中選取一個列舉值。對於布林值,您必須在輸入文字區域中輸入值。

Cloud Assembly 中的雲端範本包含輸入變數時,雲端範本參數會出現在雲端範本工作中。例如,如果雲端範本具有輸入類型 Integer,您可以直接輸入整數或使用變數繫結來輸入整數以作為變數。

CI

透過從登錄端點提取 Docker 建置映像並將其部署至 Kubernetes 叢集,CI 工作能夠將代碼持續整合到管線中。

CI 工作將記錄的 100 行顯示為輸出,在下載記錄時顯示 500 行。

CI 工作需要暫時連接埠 32768 到 61000。

請參閱使用智慧管線範本前在 Code Stream 中規劃 CICD 原生建置

自訂

自訂工作將 Code Stream 與您自己的建置工具、測試工具和部署工具整合。

請參閱如何將自己的建置工具、測試工具和部署工具與 Code Stream 整合

Kubernetes

自動將軟體應用程式部署至 Kubernetes 叢集。

請參閱如何在 Code Stream 中自動將應用程式發行至 Kubernetes 叢集

管線

將管線嵌套於主要管線中。嵌套管線後,此管線將作為主要管線中的工作。

在主要管線的 [工作] 索引標籤上,您可以透過按一下巢狀管線的連結輕鬆導覽至該管線。巢狀管線將在新的瀏覽器索引標籤中開啟。

若要在執行中尋找巢狀管線,請在搜尋區域中輸入 nested

表 3. 整合開發、測試和部署應用程式
工作類型... 它執行的作業... 範例和詳細資料...
Bamboo

與 Bamboo 持續整合 (CI) 伺服器互動,該伺服器持續建置、測試和整合軟體,為部署準備就緒,並在開發人員認可變更時觸發程式碼建置。它會公開 Bamboo 建置產生的構件位置,讓工作可輸出用於建置和部署的其他工作的參數。

連線至 Bamboo 伺服器端點,並從管線啟動 Bamboo 建置計劃。

Jenkins

觸發建置和測試原始程式碼的 Jenkins 工作,執行測試案例,並且可以使用自訂指令碼。

請參閱如何整合 Code Stream 與 Jenkins

TFS

允許您將管線連線至 Team Foundation Server,以便管理和叫用建置專案,包括可建置和測試程式碼的已設定工作。

如需 Code Stream 支援的 Team Foundation Server 版本,請參閱 什麼是 Code Stream 中的端點

vRO

透過在 vRealize Orchestrator 中執行預先定義的工作流程或自訂工作流程,來延伸 Code Stream 的功能。

Code Stream 支援 vRealize Orchestrator 的基本驗證和以 Token 為基礎的驗證。 Code Stream 使用 API Token 對 vRealize Orchestrator 叢集進行驗證。透過以 Token 為基礎的驗證, Code Stream 支援使用雲端擴充性 Proxy 的 vRealize Orchestrator 端點。因此,在 Code Stream 中,您可以透過使用雲端擴充性 Proxy 的 vRealize Orchestrator 端點觸發工作流程。

請參閱如何將 Code Stream 與 vRealize Orchestrator 整合

表 4. 透過 API 整合其他應用程式
工作類型... 它執行的作業... 範例和詳細資料...
REST

Code Stream 與其他使用 REST API 的應用程式整合,可讓您持續開發和交付彼此互動的軟體應用程式。

請參閱如何使用 REST API 將 Code Stream 與其他應用程式整合

輪詢

叫用 REST API,並對其進行輪詢,直到管線工作滿足結束準則並完成為止。

Code Stream 管理員最多可以將輪詢計數設定為 10000。輪詢時間間隔必須大於或等於 60 秒。

選取失敗時繼續核取方塊時,如果計數或時間間隔超過這些值,輪詢工作將繼續執行。

POLL Iteration Count:顯示在管線執行中,並顯示 POLL 工作從 URL 請求回應的次數。例如,如果 POLL 輸入為 65,而 POLL 請求執行的實際次數為 4,則管線執行輸出中的反覆運算計數將顯示 4 (共 65 次)。

請參閱如何使用 REST API 將 Code Stream 與其他應用程式整合

表 5. 執行遠端指令碼和使用者定義的指令碼
工作類型 執行的作業 範例和詳細資料
PowerShell

透過 PowerShell 工作, Code Stream 可以在遠端主機上執行指令碼命令。例如,指令碼可以自動執行測試工作,並執行管理類型的命令。

指令碼可以是遠端指令碼,也可以是使用者定義的指令碼。它可以透過 HTTP 或 HTTPS 進行連線,並且可以使用 TLS。

Windows 主機必須已設定 winrm 服務,並且 winrm 必須已設定 MaxShellsPerUserMaxMemoryPerShellMB

若要執行 PowerShell 工作,您必須具有與遠端 Windows 主機的作用中工作階段。

PowerShell 命令列長度

如果輸入 base64 PowerShell 命令,請務必計算整體命令長度。

Code Stream 管線會對 base64 PowerShell 命令進行編碼並包裝在另一個命令中,這會增加命令的整體長度。

PowerShell winrm 命令允許的長度上限為 8192 個位元組。對 PowerShell 工作進行編碼和包裝後,其命令長度限制會降低。因此,您必須先計算命令長度,然後才能輸入 PowerShell 命令。

Code Stream PowerShell 工作的命令長度限制取決於原始命令的 base64 編碼長度。命令長度的計算方式如下。

3 * (length of original command / 4)) - (numberOfPaddingCharacters) + 77 (Length of Write-output command)

Code Stream 的命令長度必須小於 8192 的上限。

設定 MaxShellsPerUserMaxMemoryPerShellMB 時:

  • MaxShellsPerUser 可接受的值為 500 (50 個並行管線),每個管線 5 個 PowerShell 工作。若要設定值,請執行:winrm set winrm/config/winrs '@{MaxShellsPerUser="500"}'
  • MaxMemoryPerShellMB 可接受的記憶體值為 2048。若要設定值,請執行:winrm set winrm/config/winrs '@{MaxMemoryPerShellMB="2048"}'

指令碼會將輸出寫入至其他管線可以耗用的回應檔案中。

SSH

SSH 工作允許 Bash Shell 指令碼工作在遠端主機上執行指令碼命令。例如,指令碼可以自動執行測試工作,並執行管理類型的命令。

指令碼可以是遠端指令碼,也可以是使用者定義的指令碼。它可以透過 HTTP 或 HTTPS 進行連線,且需要私密金鑰或密碼。

必須在 Linux 主機上設定 SSH 服務,而且 MaxSessions 的 SSHD 組態必須設定為 50

如果同時執行多個 SSH 工作,請增加 SSH 主機上的 MaxSessionsMaxOpenSessions。如果需要修改 MaxSessions 和 MaxOpenSessions 組態設定,請勿使用 vRealize Automation 執行個體作為 SSH 主機。

SSH 工作不支援 OpenSSH 類型的私密金鑰。使用以下方法之一產生公開金鑰/私密金鑰配對:
  • 在 Windows 機器上,使用 PuTTYgen 產生金鑰配對。
  • 在 Mac 或 Linux 機器上,使用 ssh -V 驗證 SSH 版本是否低於 7.8,然後在終端機視窗中使用 ssh -keygen 產生金鑰配對。
備註: 確認產生的金鑰不顯示 BEGIN OPENSSH PRIVATE KEY
如果產生的公開金鑰是遠端機器中的授權金鑰,請參閱以下文章之一,變更 OpenSSH 私有格式:

設定 SSH 工作時,必須以純文字形式輸入私密金鑰。將金鑰儲存為變數或輸入會變更金鑰格式,並且管線工作將無法執行。

指令碼可以是遠端指令碼,也可以是使用者定義的指令碼。例如,指令碼可能類似於:

message="Hello World" echo $message

指令碼會將輸出寫入至其他管線可以耗用的回應檔案中。