本文主要介紹如何使用 needs 文法控制 Job 執行順序。
雲效流水線 YAML 支援
stages.<stage_id>.jobs.<job_id>.needs文法定義 Job 依賴。典型情境如下:app1、app2 需要一起構建部署:app1構建任務依賴app1單元測試和app1代碼掃描任務都完成,app2構建任務依賴app2單元測試和app2代碼掃描任務都完成,app1和app2構建階段可以並行,以提升效率;app2部署依賴app1部署完成。
上述情境樣本 YAML 和運行效果如下:

sources: my_repo1: type: gitSample name: app1代碼源 endpoint: https://atomgit.com/flow-example/spring-boot.git branch: master my_repo2: type: gitSample name: app2代碼源 endpoint: https://atomgit.com/flow-example/node-expressjs.git branch: master defaultWorkspace: my_repo1 stages: build_stage: name: 構建 jobs: test_job1: name: app1單元測試 steps: command_step: name: 執行命令 step: Command with: run: | echo This is build job... scan_job1: name: app1代碼掃描 steps: command_step: name: 執行命令 step: Command with: run: | echo This is build job... test_job2: name: app2單元測試 steps: command_step: name: 執行命令 step: Command with: run: | echo This is build job... scan_job2: name: app2代碼掃描 steps: command_step: name: 執行命令 step: Command with: run: | echo This is build job... build_job1: name: app1構建 # 聲明依賴任務,app1構建依賴app1單元測試和代碼掃描任務都完成 needs: - test_job1 - scan_job1 steps: command_step: name: 執行命令 step: Command with: run: | echo This is build job... build_job2: name: app2構建 # 聲明依賴任務,app2構建依賴app2單元測試和代碼掃描任務都完成 needs: - test_job2 - scan_job2 steps: command_step: name: 執行命令 step: Command with: run: | echo This is build job... deploy_stage: name: 部署 jobs: deploy_job1: name: app1部署 steps: command_step: name: 執行命令 step: Command with: run: echo This is deploy env 1... deploy_job2: name: app2部署 # 聲明依賴任務,app2部署依賴app1部署任務完成 needs: deploy_job1 steps: command_step: name: 執行命令 step: Command with: run: echo This is deploy env 2...