流水線執行需要依賴構建叢集來完成代碼編譯和打包等任務。Flow 提供託管型預設構建叢集以快速啟動CI/CD流程,同時支援企業接入自有伺服器資源,搭建私人化構建叢集,靈活適配不同業務情境的定製化需求。
構建叢集對比
|
公用構建叢集 |
VPC託管構建叢集 |
私人構建叢集 |
|
|
構建機來源 |
雲效提供 |
雲效提供 |
使用者自己準備主機 |
|
構建機覆蓋地區 |
新加坡 |
新加坡 |
取決於使用者主機 |
|
作業系統 |
Linux |
Linux |
Linux/Windows/macOS |
|
網路連接方式 |
必須通過公網串連程式碼程式庫、鏡像倉庫、製品庫、雲主機、k8s叢集等 |
既能通過公網,也可以支援VPC私人網路連接,取決於使用者的VPC設定 |
取決於使用者主機的網路設定 |
|
彈性 |
支援Auto Scaling,當多個流水線任務並行時,每個任務都是獨立的容器環境 |
支援Auto Scaling,當多個流水線任務並行時,每個任務都是獨立的容器環境 |
不支援彈性,主機的資源是有限的,多任務並發時可能會出錯 |
|
規格 |
可以選擇規格,支援1C/2C/4C/8C/16C |
可以選擇規格,支援1C/2C/4C/8C/16C |
不支援,取決於使用者主機的規格 |
|
計費方式 |
按流水線核分統一收費,核分計算係數是1,例如1核構建了1分鐘,結算的核分是1核分 |
按流水線核分統一收費,核分計算係數是0.8,例如1核構建了1分鐘,結算的核分是0.8核分 |
不會計算流水線核分,但是基礎版不支援私人構建機 |
遷移情境說明
中心站遷移至地區版(Region 站)期間,請根據構建叢集需求選擇配置策略:
-
繼續使用中心站:如需使用預設公用構建叢集(北京、杭州、香港),保持流水線配置在中心站。中心站提供預置公用構建叢集,無需額外配置 VPC。
-
已遷移至地區版:地區版不提供公用構建叢集,需建立 VPC 託管構建叢集或接入私人構建叢集。VPC 構建叢集要求 VPC 具備公網訪問能力,否則雲效將無法拉取構建任務和調度指令。當前 VPC 叢集支援北京、杭州、上海、深圳地區。
-
私人構建叢集:接入可訪問公網的私人 Linux 機器作為構建節點,構建時間長度和並發數不計入組織構建配額,需進階版。
雲效預設構建叢集
雲效預設構建叢集是雲效預置的構建叢集,該叢集只能通過公網串連程式碼程式庫、製品庫、鏡像倉庫和其他雲資源。
進入流水線 Flow首頁,選擇。在構建叢集管理頁面,可以看到 Flow 提供了新加坡構建叢集。
-
每個構建任務分配一個全新容器環境,任務結束後回收。
-
構建環境支援指定容器鏡像地址,雲效提供官方常用鏡像供選擇使用、您也可以指定自己的鏡像作為運行環境。
-
支援指定構建環境規格,支援按需選擇 SMALL_1C2G(30GB磁碟空間)、MEDIUM_2C4G(30GB磁碟空間)、LARGE_4C8G(50GB磁碟空間)、XLARGE_8C16G(50GB磁碟空間)、XXLARGE_16C32G(50GB磁碟空間)規格,滿足大專案構建環境情境。
curl -s https://agent-install-cn-beijing.oss-cn-beijing.aliyuncs.com/specified_container_checker/container_checker.sh | sh -s -- <鏡像地址>若構建任務因記憶體不足報錯,需增加記憶體、調整資源配置或修改構建規格,可按以下路徑調整:進入流水線編輯頁面,單擊具體構建任務(如 Java 構建、Node.js 構建等),在任務進階設定面板中找到構建環境規格,按需選擇更高檔位(如 MEDIUM_2C4G、LARGE_4C8G 等)以提升運行環境的記憶體和 CPU 配置。
如果依賴服務開啟了白名單,請在白名單中添加以下Flow構建機的IP地址:
|
Flow 服務端公網 IP 位址 |
47.236.202.110,8.219.58.226 |
|
Flow 新加坡構建叢集公網 IP 位址 |
47.236.13.43,47.245.112.126,172.30.0.0/16,172.31.0.0/16,172.32.0.0/16 |
雲效託管VPC構建叢集
雲效託管 VPC 構建叢集支援在企業Virtual Private Cloud內部執行構建任務,可安全存取碼庫、製品庫、鏡像倉庫及其他私人雲端資源,實現從代碼拉取到部署的全流程在 VPC 內完成,保障資料轉送的安全性與隔離性。
-
託管VPC構建叢集無預置資源,需使用者手動建立後方可使用。
-
當前支援新加坡地區。
安全優勢
對於有更高網路安全要求的使用者,託管 VPC 構建叢集提供以下能力:
-
構建任務運行時掛載使用者 VPC 的彈性網卡(ENI)。
-
使用使用者 VPC 的網路棧,具備內網訪問能力。
-
可直接存取 VPC 內部資源,如 RDS、ECS、自建中介軟體等。
-
避免敏感資訊通過公網暴露,提升整體安全性。
基本原理
通過建立與使用者 VPC 關聯的構建叢集,雲效可在執行流水線構建任務時,掛載使用者 VPC 的彈性網卡(ENI),使構建環境接入使用者專用網路。任務運行過程中將使用 VPC 網路,具備訪問 VPC 內部資源(如資料庫、ECS 執行個體、自建服務等)的能力,滿足高安全性和內網互連需求。
建立託管VPC構建叢集
準備工作
在建立託管 VPC 構建叢集前,請提前準備以下資源:
-
已建立阿里雲Virtual Private Cloud和對應的交換器(vswitch)
-
配置好安全性群組規則
-
確保VPC具備公網訪問能力(需綁定公網 NAT Gateway,配置 EIP 和 SNAT 條目),否則雲效將無法拉取構建任務和調度指令
操作步驟
-
建立VPC服務串連
-
進入流水線Flow首頁,單擊。
-
在服務串連管理頁面,單擊建立服務串連。
-
在彈框中,選擇服務連線類型Virtual Private Cloud,單擊下一步。
-
配置以下資訊:
-
自訂服務串連名
-
配置服務授權/認證
-
設定該服務串連的使用範圍
-
-
配置完成後,單擊建立。
-
-
建立託管VPC構建叢集:
-
建立服務串連後,在左側導覽列單擊構建叢集管理。
-
切換至雲效託管VPC構建叢集頁簽,單擊建立構建叢集。
-
填寫基本資料:
-
構建叢集名稱:自訂名稱
-
標籤:用於分類和識別
-
公開性:設定是否對專案成員公開
-
成員:指定可使用該構建叢集的成員或角色
-
-
單擊下一步。進入VPC關聯配置:
-
選擇地區:目前僅支援上海地區
-
選擇專用網路
-
配置交換器和安全性群組
確保所選擇的專用網路能夠正常訪問雲效網站、程式碼程式庫、製品庫、鏡像倉庫及其他雲資源。
-
-
-
配置完成後,單擊儲存。
-
使用與驗證
建立完成後,即可在流水線的構建任務中選擇該 託管 VPC 構建叢集 作為執行環境。若在使用中出現申請環境卡住的問題,請檢查:
-
VPC 是否具備公網訪問能力:若建立叢集後無法添加節點,或任務長時間停留在「申請環境」狀態,通常是因為關聯的 VPC 不具備公網出方向訪問能力,導致雲效無法向該 VPC 下發調度指令。請參考本文「準備工作」章節中的公網訪問能力配置說明,為該 VPC 綁定公網 NAT Gateway並配置 EIP 和 SNAT 條目,確保 VPC 具備公網出方向訪問能力後重試。
-
安全性群組是否允許存取必要的出方向流量
-
服務串連和RAM授權是否正確有效。服務串連的授權帳號決定可見的 VPC 範圍,使用哪個帳號授權,就只能看到該帳號下的 VPC 和企業執行個體。VPC 列表為空白或找不到目標 VPC 時,檢查服務串連的授權帳號是否為擁有目標 VPC 的帳號。
-
使用構建叢集
進入流水線的編輯頁面,在任務設定中,修改「構建叢集」的選項,選擇剛建立的VPC構建叢集,儲存後運行流水線,雲效會給任務自動分配一個全新的構建環境,並且串連關聯的VPC,完成構建和部署。
託管VPC構建叢集使用的是雲效的計算資源,因此構建核分需要納入計費統計。
私人構建叢集
如果對構建環境有特殊需求,雲效 Flow 支援接入您自己的機器作為私人構建叢集,支援阿里雲ECS或其他自有主機。雲效 Flow 使用容器化構建方式,流水線任務會隨機調度到私人構建叢集的一台機器上,並啟動相應的容器環境執行任務。
機器接入前準備
請確保機器滿足以下條件:
-
機器可訪問公網。
用於雲效 Runner 安裝回調、流水線構建任務依賴下載及回調等。
-
機器作業系統/架構滿足以下要求:
Linux
-
支援以下 Linux 發行版本:CentOS 6+ 及以上、Ubuntu 16.04+ 及以上、 Alibaba Cloud Linux 2/3。
-
架構:支援 Linux/amd64、Linux/arm64 架構。
-
構建環境:支援預設VM環境。
-
推薦配置:4核8G及以上。
Windows
-
支援以下 Windows 版本:Windows 2012、Windows 2016、Windows 2019 、Windows 2022。
-
架構:支援 Windows/amd64 架構。
-
構建環境:支援預設VM環境。
macOS
-
支援以下 macOS 版本:macOS Sonoma(14.0)、macOS Ventura(13.0) 、macOS Monterey(12.0)。
-
架構:支援 macOS/amd64 、macOS/arm64 架構。
-
構建環境:支援預設VM環境。
-
資源隔離風險提示:將已部署商務服務(如 MySQL、容器應用等)的 ECS 加入私人構建叢集,技術上不會影響原有服務的正常運行,但云效官方不建議構建機與其他生產服務混用。構建任務執行期間可能瞬時佔用大量 CPU、記憶體、I/O 資源,導致同一台機器上啟動並執行生產服務出現效能抖動甚至短暫不可用。請在接入前自行評估資源負載隔離風險,建議為構建任務單獨準備機器,避免與生產服務共用。
建立私人構建叢集
-
進入流水線 Flow首頁。
-
依次單擊,進入雲效私人構建叢集頁簽。
-
單擊建立構建叢集,填寫構建叢集名稱、標籤,並配置公開性和有許可權使用此構建叢集的成員。
-
完成後單擊確定即可建立一個構建叢集。
接入新節點
-
進入流水線 Flow首頁。
-
依次單擊,進入雲效私人構建叢集頁簽。
-
找到目標構建叢集,單擊進入詳情頁,單擊接入新節點。
接入 Linux 構建機
支援手動安裝Runner方式接入Linux構建機:
-
手動安裝Runner:直接複製Runner安裝命令在待接入的機器上執行,Runner安裝成功後,新機器將自動添加至當前叢集,請重新整理主機列表後查看。
執行安裝命令後,終端輸出安裝全過程日誌,最終顯示
service started和service status running表示 Runner 安裝成功並已啟動。樣本輸出如下。[INFO] arch=x86_64 [INFO] version=v0.0.6 [INFO] pkg_endpoint=http://agent-install-cn-beijing.oss-cn-beijing.aliyuncs.com [INFO] tenant=be-yxctbiii2ml4aydisrlfozvk [INFO] register_token=VoiMCHPXXrdfSsxmxmUu [INFO] wonder_endpoint=https://gray-devops-build.aliyuncs.com [INFO] scan_interval=5 [INFO] concurrency=50 [INFO] runner_group_uuid=HY8UhW1PmS2hpw27 [INFO] install yunxiao-runner v0.0.6 [INFO] download yunxiao-runner from http://agent-install-cn-beijing.oss-cn-beijing.aliyuncs.com/runner-v0.0.6-linux-amd64.tar.gz [INFO] wget -t 3 -O /tmp/aliyun/yunxiao/runner/runner-v0.0.6-linux-amd64.tar.gz http://agent-install-cn-beijing.oss-cn-beijing.aliyuncs.com/runner-v0.0.6-linux-amd64.tar.gz --2023-03-13 13:08:26-- http://agent-install-cn-beijing.oss-cn-beijing.aliyuncs.com/runner-v0.0.6-linux-amd64.tar.gz Resolving agent-install-cn-beijing.oss-cn-beijing.aliyuncs.com (agent-install-cn-beijing.oss-cn-beijing.aliyuncs.com)... 59.110.185.37 Connecting to agent-install-cn-beijing.oss-cn-beijing.aliyuncs.com (agent-install-cn-beijing.oss-cn-beijing.aliyuncs.com)|59.110.185.37|:80... connected. HTTP request sent, awaiting response... 200 OK Length: 13453535 (13M) [application/x-gzip] Saving to: '/tmp/aliyun/yunxiao/runner/runner-v0.0.6-linux-amd64.tar.gz' /tmp/aliyun/yunxiao/runner/runner-v0.0.6-linux-amd64. 100%[====>] 12.83M --.-KB/s in 0.1s 2023-03-13 13:08:27 (91.7 MB/s) - '/tmp/aliyun/yunxiao/runner/runner-v0.0.6-linux-amd64.tar.gz' saved [13453535/13453535] [INFO] unpack downloaded package [INFO] tar -xvzf /tmp/aliyun/yunxiao/runner/runner-v0.0.6-linux-amd64.tar.gz -C /usr/local/share/yunxiao-runner ./ ./v0.0.6/ ./v0.0.6/runner [INFO] register tenant runner [INFO] /usr/local/share/yunxiao/v0.0.6/runner register --url https://gray-devops-build.aliyuncs.com --token VoiMCHPXXrdfSsxmxmUu --tenant=be-yxctbiii2ml4aydisrlfozvk --workspace /root/yunxiao/be-yxctbiii2ml4aydisrlfozvk/runner --scanInterval 5 --concurrency 50 --configPath /root/yunxiao/be-yxctbiii2ml4aydisrlfozvk/runner/config --runnerGroupUUID=HY8UhW1PmS2hpw27 --autoUpgrade=true INFO[2023-03-13T13:08:27+08:00] [Register] options: {"URL":"https://gray-devops-build.aliyuncs.com","Token":"VoiMCHPXXrdfSsxmxmUu","Tenant":"be-yxctbiii2ml4aydisrlfozvk","Workspace":"/root/yunxiao/be-yxctbiii2ml4aydisrlfozvk/runner","ScanInterval":5,"Concurrency":50,"RunnerGroupUUID":"HY8UhW1PmS2hpw27","ConfigPath":"/root/yunxiao/be-yxctbiii2ml4aydisrlfozvk/runner/config","InstanceId":"","InstanceName":"","AutoUpgrade":true,"UpgradeInterval":1200} INFO[2023-03-13T13:08:27+08:00] Runner config file not exists, generating... INFO[2023-03-13T13:08:27+08:00] bind to HY8UhW1PmS2hpw27 INFO[2023-03-13T13:08:27+08:00] POST /api/v2/runner/register, time spent 0.19 s INFO[2023-03-13T13:08:27+08:00] register runner=a64e87f067fd496b9c946db45f2a144f INFO[2023-03-13T13:08:27+08:00] Runner register success. [INFO] install runner system service [INFO] /usr/local/share/yunxiao/v0.0.6/runner install --tenant=be-yxctbiii2ml4aydisrlfozvk INFO[2023-03-13T13:08:27+08:00] service type linux-systemd INFO[2023-03-13T13:08:27+08:00] Aliyun yunxiao runner-v0.0.6-be-yxctbiii2ml4aydisrlfozvk service,linux-systemd installed [INFO] start runner service [INFO] /usr/local/share/yunxiao/v0.0.6/runner start --tenant=be-yxctbiii2ml4aydisrlfozvk INFO[2023-03-13T13:08:27+08:00] service type linux-systemd INFO[2023-03-13T13:08:00] Aliyun yunxiao runner-v0.0.6-be-yxctbiii2ml4aydisrlfozvk service started INFO[2023-03-13T13:08:00] Aliyun yunxiao runner-v0.0.6-be-yxctbiii2ml4aydisrlfozvk service status running [root@iZ2zecoxyny4bhymwfvdjmZ ~]#
接入 Windows 構建機
支援手動安裝Runner方式接入Windows構建機:
-
手動安裝Runner:Windows機器上,開啟PowerShell以Administrator使用者執行Runner安裝命令。Runner安裝成功後,新機器將自動添加至當前叢集,請重新整理主機列表後查看。
彈窗中顯示的 PowerShell 安裝命令樣本:
New-Item -ItemType Directory -Force -Path $Env:TEMP\yunxiao-temp; Invoke-WebRequest -Uri https://agent-install-ap-southeast-1.oss-ap-southeast-1.aliyuncs.com/install_windows.ps1 -OutFile $Env:TEMP\yunxiao-temp\install.ps1;powershell -File $Env:TEMP\yunxiao-temp\install.ps1 -v 'v0.2.2' -e 'https://agent-install-ap-southeast-1.oss-ap-southeast-1.aliyuncs.com' -t 'be-ibbxkclsin9onyk0lbzltxnt' -a 'HB7ko8rOjZwoRBZ3z7c5' -w 'https://pm08.devops.alibabacloudcs.com/flow_build' -s '5' -c '50' -r 'GvBc2wmfyeNas5Yk'
接入 macOS 構建機
支援手動安裝Runner方式接入macOS構建機:在macOS機器上,直接複製Runner安裝命令在待接入的機器上執行,Runner安裝成功後,新機器將自動添加至當前叢集,請重新整理主機列表後查看。
執行安裝命令前,需檢查待接入節點配置是否滿足前提條件。安裝命令存在有效期間限制,到期後需重新擷取。
構建叢集管理
進入,找到目標構建叢集,單擊進入詳情頁。
-
查看構建叢集主機列表,展示執行個體ID、IP、主機名稱、作業系統/架構、佔用情況、Runner狀態、安裝進度等資訊。
-
重裝Runner:當機器Runner狀態異常時,可重裝Runner。
-
移除節點:僅將節點從當前構建叢集解除綁定,不會刪除真實機器或卸載Runner。
-
設定叢集:修改構建叢集名稱、標籤等。
-
刪除叢集:僅解除節點綁定並刪除叢集資料,不會刪除真實機器或卸載Runner。
使用私人構建叢集
進入目標流水線編輯頁面,選擇企業建立好的私人構建叢集。流水線運行時,任務會隨機調度到一台構建機器上並啟動相應的容器環境執行。私人構建叢集的構建時間長度和並發任務數不計入企業構建配額。
使用私人構建叢集的構建環境,任務執行期間,流水線任務構建環境分配給使用者使用,構建環境使用許可權歸屬使用者,任務執行指令碼由使用者自訂。
查看哪些流水線使用了私人構建叢集
私人構建叢集控制台不支援直接反向查詢某個私人構建叢集被哪些流水線使用,也未提供按叢集 ID 批量查詢流水線的 API。如需確認某個私人構建叢集的使用方式,可手動排查:進入流水線列表,逐個開啟目標流水線的編輯模式,檢查 YAML 中的 runsOn 欄位是否匹配目的地組群 ID。runsOn 欄位格式為 runsOn: group: private/{叢集ID},叢集 ID 可在全域設定 > 構建叢集管理中查看。未指定 runsOn 的流水線預設使用公用構建叢集。
常見問題
公用構建叢集 Docker 構建報 CoreCLR 建立失敗或記憶體不足怎麼辦?
問題現象:使用公用構建叢集執行 Docker build 時,報 CoreCLR 建立失敗,或提示記憶體不足(OOM)相關錯誤。
問題原因:雲效公用構建叢集的開啟 Docker Daemon功能僅為開關,不支援單獨設定 Docker Daemon 的記憶體限制參數;Docker 構建過程中可使用的記憶體由所選構建環境規格的整體資源決定。
解決方案:
-
優先切換至更高檔位的構建環境規格:進入流水線編輯頁面,單擊具體構建任務,在任務進階設定面板中將構建環境規格調整為更高檔位(如 LARGE_4C8G、XLARGE_8C16G、XXLARGE_16C32G)。
-
若已選擇最高規格仍無法滿足需求,建議接入私人構建叢集,使用自有 Linux 機器執行構建,以便自訂機器資源和 Docker 可用記憶體配置。
流水線申請運行環境報錯 canceled 或指定鏡像拉取失敗如何排查?
問題現象:流水線申請運行環境失敗,控制台可能顯示 canceled 狀態;實際常見原因是「指定容器環境」中配置的鏡像拉取失敗。
問題原因:指定容器環境中填寫的鏡像地址無法拉取,例如鏡像不存在、Tag 拼字錯誤或網路原因,導致運行環境申請失敗。
解決方案:
-
在本地 Docker 環境執行
docker pull <鏡像地址:Tag>,驗證鏡像是否可正常拉取。 -
若拉取失敗,確認鏡像 Tag 是否存在或拼字正確。
-
嘗試更換為已知可用的鏡像版本(例如將
dotnetcore:10.0改為dotnetcore:9.0)重新觸發流水線。 -
若更換鏡像版本後仍失敗,檢查流水線 YAML 配置及網路白名單設定。
鏡像倉庫網域名稱以 build-steps-public-registry 為首碼並按地區區分,如涉及跨地區拉取失敗,可結合本文「海外地區構建叢集依賴拉取逾時」排查網路因素。
託管 VPC 構建叢集是否支援中國香港地區?中國香港的 ACK/ACR 如何使用內網訪問?
問題現象:使用者在中國香港部署了 ACK 或 ACR,希望通過雲效託管VPC構建叢集以內網方式訪問。
問題原因:當前雲效託管VPC構建叢集支援的地區為 [TODO: 需確認數值 - 託管VPC構建叢集實際支援地區列表],暫不支援中國香港地區。(本文檔「構建叢集對比」對比表、「雲效託管VPC構建叢集」概述段落與「建立託管VPC構建叢集」操作步驟三處對地區的描述目前不完全一致,最終支援範圍以雲效控制台建立託管VPC構建叢集時地區下拉框的實際可選項為準。)
解決方案:
-
若可通過公網訪問:直接使用公網構建叢集(雲效預設構建叢集)訪問中國香港的 ACK 或 ACR,無需內網直連。
-
若必須使用內網訪問,可選擇以下方式之一:
-
打通新加坡(託管VPC構建叢集支援地區)與中國香港之間的 VPC 對等串連或雲企業網 CEN,實現內網互連後使用託管VPC構建叢集訪問。
-
使用私人構建叢集,將自有機器部署在中國香港的 VPC 內,通過內網直接存取該 VPC 內的 ACK 或 ACR。
-
私人構建叢集是否受地區限制?非支援地區如何使用?
問題現象:機器所在地區不在雲效託管VPC構建叢集的支援範圍內,不確定能否使用私人構建叢集。
問題原因:私人構建叢集通過公網與雲效通訊,用於 Runner 註冊、任務下發、依賴下載及回調等,不受託管VPC構建叢集的地區限制。
解決方案:只要機器能正常訪問公網,即可在任意地區(含海外及國內所有地區)接入私人構建叢集,無需額外的 VPC 對接配置。接入前請參考本文「機器接入前準備」章節,確認機器滿足公網訪問能力及作業系統/架構要求。