全部產品
Search
文件中心

Alibaba Cloud DevOps:流水線任務 jobs

更新時間:Sep 11, 2025

流水線任務jobs:流水線任務 job 可以為多個步驟 steps 的組合(多個步驟共用工作空間,共同完成指定任務), 或一個組件 component 的調用(調用組件執行指定任務,組件任務支援重試、跳過等更多操作)。

樣本

  • 以下為一個任務添加多個步驟的配置樣本:

    stages:
      build_stage:
        name: 構建階段
        jobs:
          build_job: 
            name: 構建任務
            runsOn: public/cn-beijing
            steps:                                # steps 配置任務步驟
              build_step:                        
                step: JavaBuild                   
                name: java構建                     
                with:                            
                  ......
              upload_step:
                step: ArtifactUpload
                name: 構建物上傳
                with:
                  ......
    
    stages:
      build_stage:
        name: 構建階段
        jobs:
          build_job: 
            name: 構建任務
            runsOn:
              group: public/ap-southeast-1
              container: build-steps-public-registry.ap-southeast-1.cr.aliyuncs.com/build-steps/alinux3:latest
            steps:                                # steps 配置任務步驟
              setup_java_step:
                name: "安裝Java環境"
                step: SetupJava
                with:
                  jdkVersion: "1.8"
                  mavenVersion: "3.5.2"
              command_step:
                name: "執行命令"
                step: Command
                with:
                  run: |
                    mvn -B clean package -Dmaven.test.skip=true -Dautoconfig.skip
              upload_artifact_step:
                name: "構建物上傳"
                step: ArtifactUpload
                with:
                  uploadType: flowPublic
                  artifact: "Artifacts_${PIPELINE_ID}"
                  filePath:
                    - target/
                    
  • 以下為一個任務實現一個組件的配置樣本:

    stages:
      build_stage:
        name: 構建階段
        jobs:
          deploy_job:
            name: 主機群組部署任務
            component: VMDeploy                # component 配置工作群組件
            with:                              
              artifact: $[stages.build_stage.build_job.upload_artifact_step.artifacts.default]
              ......

詳細說明

stages.<stage_id>.jobs

流水線任務,流水線任務可以為多個步驟 steps 的組合, 或一個組件 component 的實現。

stages.<stage_id>.jobs.<job_id>

必填。流水線任務 id,唯一標識流水線任務。job_id 只能包含字母、數字和 _ ,且必須以字母開頭。長度限制 64 個字元。

stages.<stage_id>.jobs.<job_id>.name

如不填寫,則使用job_id的值。長度限制 64 個字元。流水線任務的展示名稱。

stages.<stage_id>.jobs.<job_id>.runsOn

非必填。流水線任務運行環境,可以使用雲效提供的公用 K8s 叢集環境,也可以使用私人主機構建叢集。支援 指定容器環境 和 預設VM環境

  • 指定容器環境:在構建機器上啟動指定容器,在單容器環境進行構建。文法樣本如下:

    jobs:
      my_job:
        name: 我的工作
        runsOn:
          group: public/ap-southeast-1 // 指定容器環境目前僅支援雲效公用構建叢集
          container: build-steps-public-registry.ap-southeast-1.cr.aliyuncs.com/build-steps/alinux3:latest // 公網可直接存取的 public 鏡像地址,雲效系統官方鏡像參考:https://atomgit.com/flow-steps/system_images/blob/main/README_INTL.md 

    構建叢集

    yaml 標識

    說明

    雲效新加坡構建叢集

    group: public/ap-southeast-1

    雲效提供的新加坡公用 K8s 叢集(未指定 runsOn 時的預設值)

    私人構建叢集

    group: private/<私人構建叢集ID>

    通過私人構建叢集添加的企業私人主機叢集

  • 預設VM環境:直接在構建叢集的宿主機或虛擬機器上執行步驟。樣本如下:

    jobs:  
      my_job:    
        name: 我的工作      
          runsOn:        
            group: private/<私人構建叢集ID>   // 僅支援私人構建叢集,指定私人構建叢集        
            labels: windows, amd64          // 指定作業系統、架構調度;不填時,則隨機調度到叢集中的某台機器        
            vm: true                        // 指定 VM 構建環境

    目前私人構建叢集支援接入 Linux、Windows、macOS 機器,各作業系統支援架構和構建環境如下:

    作業系統

    架構

    labels

    說明

    Linux

    amd64

    linux,amd64

    支援 預設環境 和 預設VM環境

    Linux

    arm64

    linux,arm64

    僅支援 預設VM環境,需要指定 vm: true

    Windows

    amd64

    windows,amd64

    僅支援 預設VM環境,需要指定 vm: true

    Windows

    arm64

    windows,arm64

    僅支援 預設VM環境,需要指定 vm: true

    macOS

    amd64

    darwin,amd64

    僅支援 預設VM環境,需要指定 vm: true

    macOS

    arm64

    darwin,arm64

    僅支援 預設VM環境,需要指定 vm: true

stages.<stage_id>.jobs.<job_id>.runsOn.instanceType

非必填,構建環境規格。雲效會根據任務中配置的步驟自動分配 DEFAULT 預設規格,預設規格詳見協助文檔:https://www.alibabacloud.com/help/doc-detail/201868.html 。如有需要,您也可以指定構建環境規格,規格可選:SMALL_1C2G、MEDIUM_2C4G、LARGE_4C8G、XLARGE_8C16G。

如:

jobs:
  my_job:
    name: 我的工作
    runsOn:
      group: public/ap-southeast-1
      container: build-steps-public-registry.ap-southeast-1.cr.aliyuncs.com/build-steps/alinux3:latest
      instanceType: LARGE_4C8G    # 指定構建環境規格

stages.<stage_id>.jobs.<job_id>.timeoutMinutes

非必填,預設任務運行逾時時間為 240 分鐘,支援設定範圍 1~1440 分鐘

如:

jobs:
  my_job:
    name: 我的工作
    runsOn:
      group: public/ap-southeast-1
      container: build-steps-public-registry.ap-southeast-1.cr.aliyuncs.com/build-steps/alinux3:latest
    timeoutMinutes: 60		# 任務開始運行後,60分鐘逾時結束

stages.<stage_id>.jobs.<job_id>.debugPolicy 和 stages.<stage_id>.jobs.<job_id>.debugRetentionMinutes

非必填,填寫該值,則可以在任務結束之後保留任務執行環境,並登入到環境中進行調試。

只能和”指定容器環境“一起使用。

這兩個值需要一起填寫,或者都不填寫。

debugPolicy 的可選值:

  1. onFailure:僅任務運行失敗時才保留運行環境,運行成功或僅紅線卡點不通過則不會保留環境

  2. always:無論任務是否成功都保留構建環境

debugRetentionMinutes 是1-240之間的整數,表示保留的時間長度

如:

jobs:
  my_job:
    name: 我的工作
    runsOn:
      group: public/ap-southeast-1
      container: build-steps-public-registry.ap-southeast-1.cr.aliyuncs.com/build-steps/alinux3:latest
    debugPolicy: always
    debugRetentionMinutes: 5

stages.<stage_id>.jobs.<job_id>.needs

非必填,預設一個階段內的所有任務並存執行。若任務間有依賴關係,可通過needs描述階段內的任務依賴關係。注意:

  • needs支援跨階段的任務之間相互依賴。

  • 請確保依賴後的任務之間,有明確的先後關係。切勿出現循環相依性情況,如: A 依賴 B,B 依賴 C,C 依賴 A。

填寫依賴任務的 <job_id>,如:

jobs:
  test_job:
    name: 測試工作
  build_job:
    name: 構建任務
    needs: test_job

stages.<stage_id>.jobs.<job_id>.driven

非必填,預設為 auto 自動執行。通過driven設定任務的觸發方式,目前支援兩種方式:

  • auto:自動執行

  • manual:手動確認執行

如:

jobs:
  my_job:
    name: 我的工作
    runsOn:
      group: public/ap-southeast-1
      container: build-steps-public-registry.ap-southeast-1.cr.aliyuncs.com/build-steps/alinux3:latest
    driven: manual		#手動確認執行任務
    

stages.<stage_id>.jobs.<job_id>.condition

非必填,預設只有前序依賴任務全部成功後才執行本任務。通過condition判斷本任務是否滿足條件,若滿足條件執行本任務。通過填寫函數運算式如:

jobs:
  my_job:
    name: 我的工作
    runsOn:
      group: public/ap-southeast-1
      container: build-steps-public-registry.ap-southeast-1.cr.aliyuncs.com/build-steps/alinux3:latest
    condition: |
      "${CI_COMMIT_REF_NAME}" == "master"		# 運行分支為 master 時執行該任務

支援關係操作符、邏輯操作符:

操作符

說明

樣本

樣本描述

==

等於

condition: "${CI_COMMIT_REF_NAME}" == "master"

運行分支為 master 時執行

!=

不等於

condition: "${CI_COMMIT_REF_NAME}" != "master"

運行分支不等於 master 時執行

&&

condition: "${CI_COMMIT_REF_NAME}" == "master" && succeed()

運行分支為 master 且前序任務都為成功態時執行

||

condition: "${CI_COMMIT_REF_NAME}" == "master" || "${CI_COMMIT_REF_NAME}" == "develop"

運行分支為 master 或 develop 時執行

!

condition: succeed('job1') && !skipped('job1')

指定 job1 為成功態且非跳過時執行

()

邏輯分組

condition: ("${CI_COMMIT_REF_NAME}" == "master" || "${CI_COMMIT_REF_NAME}" == "develop") && succeed()

運行分支為 master 或 develop,且前序任務都為成功態時執行

提供一組內建函數,可用於運算式:

函數

說明

樣本

startsWith(searchString, searchValue)

如果 searchString 以 searchValue 開頭,將返回 true

condition: startsWith('Hello world','He')

endsWith(searchString, searchValue)

如果 searchString 以 searchValue 結尾,將返回 true

condition: endsWith('Hello world','ld')

contains(search, item)

輸入 search 是一個數組,item 是數組中的一個元素,此函數將返回 true

condition: contains('["aa", "bb", "cc"]', 'aa')

weekDay()

此函數將返回一周中的某一天(Monday、Tuesday、Wednesday、Thursday、Friday、Saturday、Sunday)

condition: weekDay()=="Thursday"

timeIn(startTime, endTime)

此函數判斷目前時間是否在 startTime 和 endTime 之間

condition: timeIn("20:00:00", "22:00:00")

說明:函數參數可以填寫存在的變數,例如設定了流水線變數 TEST_VAR=["aa", "bb", "cc"],可以在函數中用${}引用該變數:

jobs:
  job_1:
    name: 1
    condition: contains('${TEST_VAR}', 'aa')

可以通過任務狀態函數,擷取前序依賴任務的執行狀態,函數入參為前序依賴任務的 <job_id>。

函數

說明

樣本

always()

預設返回 true

condition: always()

succeed()

所有前序任務「已成功」或者「已跳過」返回 true

condition: succeed('job_id_1','job_id_2')

failed()

存在一個前序任務「已失敗」或者「已取消」返回 true

condition: failed('job_id_1','job_id_2')

skipped()

存在一個前序任務「已跳過」返回 true

condition: skipped('job_id_1','job_id_2')

注意:任務狀態函數,若入參不填則為前序所有任務。如 succeed() 要求前序依賴任務全部成功才返回 true。 任務狀態函數,入參必須為前序任務的 <job_id>。若填寫了無依賴關係的 <job_id>,則無法正常執行。樣本:

jobs:
  job_1:
    name: 任務1
  job_2:
    name: 任務2
  job_3:
    name: 任務3
    needs: 
      - job_1
      - job_2
    condition: succeed(job_1) || succeed(job_2) # job1 執行成功或 job2 執行成功,才執行job3

stages.<stage_id>.jobs.<job_id>.sourceOption

非必填,預設下載流水線中配置的所有流水線源檔案。當流水線配置多個代碼源時,可以選擇任務節點是否下載源檔案,或者下載指定源檔案,通過填寫<source_id>指定您要下載的源檔案。

使用情境

說明

樣本

下載所有源檔案

不填寫 sourceOption

不填寫

不下載源檔案

填寫 sourceOption,內容為空白

sourceOption: []

下載指定源檔案

填寫 sourceOption及<source_id>

sourceOption: [repo_1,repo_2]

stages.<stage_id>.jobs.<job_id>.steps

流水線任務可為多個步驟 steps 的組合,多個步驟共用工作空間,共同完成指定任務。

詳細請查看流水線步驟 steps

stages.<stage_id>.jobs.<job_id>.component

流水線任務可調用一個組件 component 執行指定任務,組件任務支援重試、跳過等更多操作。

詳細請查看流水線組件 component

stages.<stage_id>.jobs.<job_id>.with

當流水線任務為一個組件 component 調用時,通過with填寫組件所需的執行參數。樣本:

jobs:
  deploy_job:
  name: 主機群組部署任務
  component: VMDeploy             # 指定組件
  with:                           # 填寫組件的參數
    artifact: $[stages.build_stage.build_job.upload_step.artifacts.default]
    machineGroup: <YOUR-MACHINE-GROUP-ID>
    ......
    

詳細請查看流水線組件 component

stages.<stage_id>.jobs.<job_id>.plugins

  • 非必填。流水線任務訊息通知可以通過配置 plugins 實現DingTalk、郵件、企業微信、飛書、Webhook等渠道的訊息通知。

  • 詳細請查看流水線外掛程式 plugins