すべてのプロダクト
Search
ドキュメントセンター

Alibaba Cloud DevOps:パイプラインジョブ

最終更新日:Nov 09, 2025

パイプラインジョブは、複数のステップで構成され、ワークスペースを共有して特定のタスクを完了します。パイプラインジョブは、コンポーネントを呼び出して特定のタスクを実行することもできます。コンポーネントタスクは、リトライやスキップなどの操作をサポートします。

  • 次の例は、タスクに複数のステップを追加するための構成を示しています:

    stages:
      build_stage:
        name: Build stage
        jobs:
          build_job: 
            name: Build task
            runsOn: public/cn-beijing
            steps:                                # steps を使用してタスクステップを構成します
              build_step:                        
                step: JavaBuild                   
                name: Java build                     
                with:                            
                  ......
              upload_step:
                step: ArtifactUpload
                name: Upload build output
                with:
                  ......
    
    stages:
      build_stage:
        name: Build stage
        jobs:
          build_job: 
            name: Build task
            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: "Set up Java environment"
                step: SetupJava
                with:
                  jdkVersion: "1.8"
                  mavenVersion: "3.5.2"
              command_step:
                name: "Run command"
                step: Command
                with:
                  run: |
                    mvn -B clean package -Dmaven.test.skip=true -Dautoconfig.skip
              upload_artifact_step:
                name: "Upload build output"
                step: ArtifactUpload
                with:
                  uploadType: flowPublic
                  artifact: "Artifacts_${PIPELINE_ID}"
                  filePath:
                    - target/
                    
  • 次の例は、タスクでコンポーネントを実装するための構成を示しています:

    stages:
      build_stage:
        name: Build stage
        jobs:
          deploy_job:
            name: Host group deployment task
            component: VMDeploy                # component を使用してタスクを構成します
            with:                              
              artifact: $[stages.build_stage.build_job.upload_artifact_step.artifacts.default]
              ......

詳細説明

stages.<stage_id>.jobs

パイプラインジョブを定義します。パイプラインジョブは、複数のステップまたはコンポーネントの呼び出しで構成できます。

stages.<stage_id>.jobs.<job_id>

必須。パイプラインジョブの一意の ID。job_id には、文字、数字、アンダースコア (_) のみを含めることができ、文字で始まる必要があります。ID の長さは最大 64 文字です。

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

パイプラインジョブの表示名。このパラメーターを指定しない場合、job_id の値が使用されます。名前の長さは最大 64 文字です。

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

任意。パイプラインジョブが実行される環境。Apsara DevOps が提供するパブリック Kubernetes (K8s) クラスター環境またはプライベートホストビルドクラスターを使用できます。サポートされている環境には、指定コンテナー環境デフォルト VM 環境が含まれます。

  • 指定コンテナー環境: ビルドマシンで指定されたコンテナーを起動し、単一コンテナー環境でビルドを実行します。次の例は構文を示しています:

    jobs:
      my_job:
        name: My task
        runsOn:
          group: public/ap-southeast-1 // 指定コンテナー環境は現在、Apsara DevOps パブリックビルドクラスターのみをサポートしています。
          container: build-steps-public-registry.ap-southeast-1.cr.aliyuncs.com/build-steps/alinux3:latest // インターネットからアクセスできるパブリックイメージアドレス。公式 Apsara DevOps システムイメージの詳細については、https://atomgit.com/flow-steps/system_images/blob/main/README_INTL.md をご参照ください。 

    ビルドクラスター

    YAML 識別子

    説明

    Apsara DevOps シンガポールビルドクラスター

    group: public/ap-southeast-1

    Apsara DevOps がシンガポールで提供するパブリック K8s クラスター。これは runsOn が指定されていない場合のデフォルトクラスターです。

    プライベートビルドクラスター

    group: private/<private_build_cluster_ID>

    プライベートビルドクラスターを介してエンタープライズに追加されるプライベートホストクラスター。

  • デフォルト VM 環境: ビルドクラスターのホストまたは VM 上で直接ステップを実行します。以下に例を示します:

    jobs:  
      my_job:    
        name: My task      
          runsOn:        
            group: private/<private_build_cluster_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

任意。ビルド環境の仕様。Apsara DevOps は、ジョブで構成されたステップに基づいて DEFAULT 仕様を自動的に割り当てます。デフォルト仕様の詳細については、https://www.alibabacloud.com/help/doc-detail/201868.html のドキュメントをご参照ください。ビルド環境の仕様を指定することもできます。有効な値は SMALL_1C2G、MEDIUM_2C4G、LARGE_4C8G、および XLARGE_8C16G です。

例:

jobs:
  my_job:
    name: My task
    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 から 1,440 分までの値に設定できます。

例:

jobs:
  my_job:
    name: My task
    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: My task
    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: Test job
  build_job:
    name: Build job
    needs: test_job

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

任意。デフォルト値は auto で、ジョブが自動的に実行されることを意味します。driven を使用して、ジョブのトリガーメソッドを設定できます。次のメソッドがサポートされています:

  • auto: ジョブは自動的に実行されます。

  • manual: ジョブを実行する前に手動で確認する必要があります。

例:

jobs:
  my_job:
    name: My task
    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: My task
    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 でない場合に実行されます。

&&

And

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

ブランチが master で、先行するすべてのジョブが成功した場合に実行されます。

||

Or

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

ブランチが master または develop の場合に実行されます。

!

Not

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 # 1
    condition: contains('${TEST_VAR}', 'aa') # 'aa' が '${TEST_VAR}' に含まれている場合

タスクステータス関数を使用して、先行する依存ジョブの実行ステータスを取得できます。これらの関数の入力パラメーターは、先行する依存ジョブの <job_id> です。

関数

説明

always()

デフォルトで true を返します。

condition: always()

succeed()

先行するすべてのジョブのステータスが「成功」または「スキップ」の場合に true を返します。

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

failed()

先行するジョブの少なくとも 1 つのステータスが「失敗」または「キャンセル」の場合に true を返します。

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

skipped()

先行するジョブの少なくとも 1 つのステータスが「スキップ」の場合に true を返します。

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

注: タスクステータス関数に入力パラメーターを指定しない場合、関数は先行するすべてのジョブに適用されます。たとえば、succeed() は、先行するすべての依存ジョブが成功した場合にのみ true を返します。タスクステータス関数の入力パラメーターは、先行するジョブの <job_id> である必要があります。依存関係のないジョブの <job_id> を指定した場合、関数は期待どおりに実行されません。以下に例を示します:

jobs:
  job_1:
    name: Job 1
  job_2:
    name: Job 2
  job_3:
    name: Job 3
    needs: 
      - job_1
      - job_2
    condition: succeed(job_1) || succeed(job_2) # ジョブ 1 またはジョブ 2 が成功した場合にジョブ 3 が実行されます。

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

パイプラインジョブは、複数のステップで構成できます。これらのステップは、ワークスペースを共有して特定のタスクを完了します。

詳細については、「パイプラインステップ」をご参照ください。

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

パイプラインジョブは、コンポーネントを呼び出して特定のタスクを実行できます。コンポーネントタスクは、リトライやスキップなどの操作をサポートします。

詳細については、「パイプラインコンポーネント」をご参照ください。

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

パイプラインジョブがコンポーネントを呼び出すときに、with を使用してコンポーネントに必要な実行時パラメーターを指定します。以下に例を示します:

jobs:
  deploy_job:
  name: Host group deployment task
  component: VMDeploy             # コンポーネントを指定します。
  with:                           # コンポーネントのパラメーターを指定します。
    artifact: $[stages.build_stage.build_job.upload_step.artifacts.default]
    machineGroup: <YOUR-MACHINE-GROUP-ID>
    ......
    

詳細については、「パイプラインコンポーネント」をご参照ください。

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

  • 任意。プラグインを構成して、DingTalk、メール、WeCom、Lark、Webhook などのチャンネルを介してパイプラインジョブ通知を送信できます。

  • 詳細については、「パイプラインプラグイン」をご参照ください。