云效Flow流水線支持Pipeline as code,您可通過使用YAML文件編排您的流水線配置。一條流水線通常由代碼源sources、階段stages、任務jobs、步驟steps等組成。本文主要介紹了流水線YAML的整體結構和相關節點的語法細則。
快速開始
為了讓您快速的理解流水線YAML整體結構,以下為一個Java構建并部署至主機組的示例YAML文件:
name: demo-pipeline # 流水線的展示名稱
sources: # sources 配置流水線源節點
my_repo: # 流水線源唯一標識 id
type: codeup # 流水線源類型
name: 代碼源名稱 # 代碼源的展示名稱
endpoint: <your-codeup-repository-url> # 代碼源的 url
branch: master # 代碼源的默認分支
triggerEvents: push # 代碼源監聽事件
certificate: # certificate 認證信息
type: serviceConnection # 認證類型為服務連接
serviceConnection: <your-service-connection-id> # 服務連接 id
stages: # stages 配置流水線階段
build_stage: # 流水線階段標識 id
name: 構建階段 # 流水線階段的展示名稱
jobs: # jobs 配置流水線任務
build_job: # 流水線任務標識 id
name: 構建任務 # 流水線任務的展示名稱
runsOn: public/cn-beijing # 流水線任務運行的集群環境
steps: # steps 配置流水線步驟
build_step: # 流水線步驟標識 id
step: JavaBuild # 選擇執行步驟
name: java構建 # 流水線執行步驟的展示名稱
with: # 步驟的參數
run: |
mvn -B clean package -Dmaven.test.skip=true -Dautoconfig.skip
upload_step:
step: ArtifactUpload
name: 構建物上傳
with:
uploadType: flowPublic
artifact: default
filePath:
- target/
- deploy.sh
deploy_stage:
name: 部署階段
jobs:
deploy_job:
name: 主機組部署任務
component: VMDeploy # 選擇執行組件
with: # 執行組件的參數
artifact: $[stages.build_stage.build_job.upload_step.artifacts.default]
machineGroup: <your-machine-group-id>
artifactDownloadPath: /home/admin/app/package.tgz
executeUser: root
run: |
mkdir -p /home/admin/application/
tar zxvf /home/admin/app/package.tgz -C /home/admin/application/
sh /home/admin/application/deploy.sh restart
上述YAML關鍵節點說明如下:
節點 | 節點說明 |
name | 流水線的名稱。 |
sources | 流水線源,支持配置多個流水線源信息,包括源類型、源地址、默認分支等。 |
sources.<souce_id> | 流水線源 id,唯一標識流水線源。 |
sources.<souce_id>.type | 流水線源類型,支持codeup、github、gitlab、jenkins等多種流水線源類型。 |
sources.<souce_id>.name | 流水線源的展示名稱。 |
stages | 流水線階段,流水線階段由一個或多個任務組成。 |
stages.<stage_id> | 流水線階段id,唯一標識流水線階段。 |
stages.<stage_id>.name | 流水線階段的展示名稱。 |
stages.<stage_id>.jobs | 流水線任務,流水線任務job可以為多個步驟steps的組合(多個步驟共享工作空間,共同完成指定任務), 或一個組件 component 的調用(調用組件執行指定任務,組件任務支持重試、跳過等更多操作)。 |
stages.<stage_id>.jobs.<job_id> | 流水線任務id,唯一標識流水線任務。 |
stages.<stage_id>.jobs.<job_id>.name | 流水線任務的展示名稱。 |
stages.<stage_id>.jobs.<job_id>.runsOn | 流水線任務運行的集群環境,可以使用云效提供的公共集群環境,也可以使用私有構建集群。 |
stages.<stage_id>.jobs.<job_id>.steps | 流水線步驟,流水線任務可以由一個或多個步驟 steps 組成。 |
stages.<stage_id>.jobs.<job_id>.steps.<step_id> | 流水線步驟id,唯一標識流水線步驟。 |
stages.<stage_id>.jobs.<job_id>.steps.<step_id>.step | 選擇流水線的執行步驟。 |
stages.<stage_id>.jobs.<job_id>.steps.<step_id>.name | 流水線步驟的展示名稱。 |
stages.<stage_id>.jobs.<job_id>.steps.<step_id>.with | 流水線步驟的參數。 |
stages.<stage_id>.jobs.<job_id>.component | 流水線組件,流水線任務可調用一個組件component執行相關操作。 |
stages.<stage_id>.jobs.<job_id>.with | 流水線組件的參數。 |