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

Alibaba Cloud DevOps:アーティファクト

最終更新日:Mar 27, 2025

アーティファクト: アーティファクトとは、パイプラインの実行中に生成されるファイルの集合であり、後続のジョブ、ステージ、またはパイプラインによって参照できます。

アーティファクトの生成

イメージのビルドやアーティファクトのアップロードなどの Flow パイプラインステップは、現在、以下の出力を生成します。

  • Docker イメージ:イメージビルドジョブが完了すると、Docker イメージは ACR またはプライベートイメージリポジトリにアップロードされます。アーティファクト情報構造は次のとおりです。

{
  "artifact": "yunxiao-demo",		                                        // イメージ名
  "type": "dockerImage",    				                        // アーティファクトタイプ
  "dockerUrl": "registry.cn-beijing.aliyuncs.com/yunxiao/yunxiao-demo:1.0",	// イメージアドレス
  "dockerTag": "1.0"								// イメージタグ
}
  • Flow パブリックストレージアーティファクト:ビルドジョブが完了すると、ビルドアーティファクトは Flow パブリックストレージにアップロードされます。アーティファクト情報構造は次のとおりです。

{
  "artifact": "yunxiao-demo",		// アーティファクト名
  "type": "flowPublic",			// アーティファクトタイプ
  "downloadUrl": "https://sdfdff",	// アーティファクトダウンロードアドレス
  "md5": "dffff"			// アーティファクト MD5
}

アーティファクトの参照

Flow パイプラインは、アーティファクトを参照するためのいくつかの方法を提供しています。

  • 同じパイプライン内でのジョブ間またはステージ間のアーティファクト参照: 通常、前のタスクがビルドし、後続のタスクがデプロイする同じパイプライン内のシナリオ、または統合 CI/CD パイプラインシナリオに適しています。

  • パイプライン間のアーティファクト参照: ソースパイプラインが、ターゲットパイプラインがデプロイするアーティファクトを生成する場合によく適用されます (例: 本番パイプラインがプレリリースで検証されたイメージを直接参照する)、特に CI と CD が分離されているシナリオで。

  • パイプラインアーティファクトソースからのアーティファクト参照: アーティファクトのプロモーションシナリオでよく使用されます (例: プレリリース検証後、アーティファクトはアーティファクトリポジトリにアップロードされ、本番環境はバージョン番号に基づいてリポジトリからアーティファクトを直接選択します)。

例 1: 同じパイプライン内でのジョブ間またはステージ間のアーティファクト参照

以下は、同じパイプライン内のジョブ間でのアーティファクトの生成と使用の例です。アーティファクトタイプは Docker イメージです。

sources:
  my_repo:
    ……
stages:
  my_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:
          private_registry_docker_setup:
            name: Docker レジストリにログイン
            step: DockerLogin
            with:
              dockerRepository: registry.cn-hangzhou.aliyuncs.com
              serviceConnection: <your-service-connection-id>
          docker_build_push_step:              
            name: イメージのビルドとプッシュ
            step: DockerBuildPush              // DockerBuildPush ステップは Docker イメージアーティファクトを生成します。
            with:
              artifact: my_image
              image: registry.cn-hangzhou.aliyuncs.com/ns/demo:1.0
              dockerfilePath: Dockerfile
              cacheType: remote
      deploy_job:
        name: Kubernetes デプロイジョブ
        steps:
          kubectl_apply:
            step: KubectlApply
            name: Kubectl デプロイ
            with:
              kubernetesCluster: <your-kubernetes-id>
              kubectlVersion: "1.16.4"
              namespace: default
              yamlPath: app-configs/manifest-app
              variables:
                - key: image
                  value: $[jobs.build_job.docker_build_push_step.artifacts.my_image]			   // docker_build_step ステップによって生成されたアーティファクト (my-image) を参照します。

以下は、同じパイプライン内のステージ間でのアーティファクトの生成と使用の例です。アーティファクトタイプは Flow パブリックストレージアーティファクトです。

sources:
  my_repo:
    ……
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:
          setup_java_step:
            name: Java SDK のセットアップ
            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                 // ArtifactUpload ステップはアーティファクトを生成します。
            with:
              uploadType: flowPublic
              artifact: "Artifacts_${PIPELINE_ID}"
              filePath:
                - target/
  deploy_stage:
    name: デプロイステージ
    jobs:
      deploy_job:
        name: VM デプロイジョブ
        component: VMDeploy
        with:
          artifact: $[stages.build_stage.build_job.upload_artifact_step.artifacts.default]	 // upload_step ステップによって生成されたアーティファクト (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

例 2: パイプライン間のアーティファクト参照

以下は、パイプライン A がアーティファクトを生成し、パイプライン B でアーティファクトを参照する例です。パイプライン間のアーティファクト参照は、プレリリースステージイメージが検証された後、本番パイプラインがプレリリースイメージを使用して直接デプロイするシナリオでよく使用されます。

  • ソースパイプライン A

sources:
  my_repo:
    type: gitSample
    name: Java サンプルコードソース
    endpoint: https://atomgit.com/flow-example/spring-boot.git
    branch: master
stages:
  build_stage:
    name: ビルドステージ
    jobs:
      build_job:
        name: Java イメージビルドジョブ
        steps:
          private_registry_docker_setup:
            name: Docker レジストリにログイン
            step: DockerLogin
            with:
              dockerRepository: registry.cn-hangzhou.aliyuncs.com
              serviceConnection: <your-service-connection-id>
          docker_build_push_step:
            name: イメージのビルドとプッシュ
            step: DockerBuildPush
            with:
              artifact: my_image         // ソースパイプライン A ビルドジョブは Docker イメージを生成します。
              image: registry.cn-hangzhou.aliyuncs.com/ns/demo:1.0
              dockerfilePath: Dockerfile
              cacheType: remote
  • ターゲットパイプライン B

sources:
  pipeline_a:
    type: flowPipeline
    name: ソースパイプライン A
    flowPipeline: n86bmctmphs84icj       // ソースパイプライン A ID
    build: lastSuccessfulBuild
    triggerEvents: buildSuccess
stages:
  kubectl_apply_stage:
    name: デプロイステージ
    jobs:
      deploy_job:
        name: "Kubectl Apply"
        runsOn:
          group: public/ap-southeast-1
          container: build-steps-public-registry.ap-southeast-1.cr.aliyuncs.com/build-steps/alinux3:latest
        steps:
          kubectl_apply_step:
            name: "Kubectl Apply"
            step: "KubectlApply"
            with:
              kubernetesCluster: <your-kubernetes-id>
              kubectlVersion: "1.27.9"
              namespace: default
              yamlPath: app-configs/manifest-app
              variables:
                - key: image
                  value: $[sources.pipeline_a.stages.build_stage.build_job.docker_build_push_step.artifacts.my_image]   // ソースパイプライン A によって生成されたイメージ (my_image) を参照します。

詳細説明

アーティファクトの生成

Flow が提供するビルドアーティファクトのアップロード、イメージのビルドなどのステップを通じて、イメージアーティファクトをパッケージ化およびアップロードします。「ステップ」セクションの詳細な説明をご参照ください。

アーティファクトの参照

同じパイプラインの同じステージ内でのジョブ間のアーティファクトの参照: $[jobs.<job_id>.<step_id>.artifacts.<artifact>]

同じパイプライン内でのステージ間のアーティファクトの参照: $[stages.<stage_id>.<job_id>.<step_id>.artifacts.<artifact>]

パイプライン間のアーティファクトの参照(ソースのタイプは flowPipeline です。):$[sources.<source_id>.stages.<stage_id>.<job_id>.<step_id>.artifacts.<artifact>]