パイプラインのアーティファクト

はじめに

アーティファクトは、ステップによって作成されるファイルです。パイプライン設定で定義したら、以降のステップで共有したり、エクスポートしてステップの完了後にアーティファクトを保持したりすることができます。たとえば、ビルド ステップで生成された JAR ファイルまたはレポートを、後のデプロイメント ステップで使用できます。ステップで生成されたアーティファクトをダウンロードしたり、外部ストレージにアップロードすることもできます。

次の点に留意する必要があります。

  • ステップの最後に BITBUCKET_CLONE_DIR にあるファイルをアーティファクトとして構成できます。BITBUCKET_CLONE_DIR は、リポジトリが最初にクローンされるディレクトリです。

  • glob パターンを使用してアーティファクトを定義できます。* で開始される glob パターンは、引用句で囲む必要があります。: これらは glob パターンのため、パス セグメント "." および “..” は使用できません。ビルド ディレクトリに相対的なパスを使用します。

  • アーティファクトのパスは、BITBUCKET_CLONE_DIR の相対パスになります。

  • ステップ中に作成されたアーティファクトは、以降のすべてのステップで使用できます。

  • Artifacts created in parallel steps may not be accessible to other steps within the same group of parallel steps. If another step in the parallel group requests the artifact, it may or may not exist when it's requested.

  • アーティファクトは生成から 14 日後に削除されます。

  • 初期設定では、使用可能なすべてのアーティファクトがステップの開始時にダウンロードされます。この動作は、download フィールドを使用して制御できます。

    • download: true と設定すると、前のステップのすべてのアーティファクトをダウンロードします。

    • download: false と設定すると、アーティファクトのダウンロードをスキップします。

    • 特定のアーティファクト名のリストをダウンロードに設定して、それらのアーティファクトのみをダウンロードします。正確なアーティファクト名を必ず指定してください。たとえば、Artifact 1Artifact 2 という名前のアーティファクトをダウンロードするには、以下を使用します。

      download: - "Artifact 1" - "Artifact 2"

アーティファクト タイプ

アーティファクト タイプは、独特な動作をするアーティファクトを識別します。

以下のアーティファクト タイプを使用できます。

  • Shared artifacts (共有アーティファクト): 複数のステップでアクセスできます。ステップ間でデータを共有する必要のあるワークフローには、共有アーティファクトを使用します。

  • Scoped artifacts (スコープ指定アーティファクト): 各ステップをスコープとしており、複数のステップにまたがってダウンロードすることはできません。スコープ指定アーティファクトは、テスト中に生成されたログ ファイル、テスト レポート、スクリーンショット、ビデオなどのファイルに最適です。

アーティファクト タイプの使用は任意ですが、指定することでビルド時間を節約し、アーティファクトの構成を改善できます。

共有アーティファクトとスコープ指定アーティファクトのアーティファクト フィールド

共有アーティファクトまたはスコープ指定アーティファクトを Pipelines でアップロードするときは、以下のフィールドを使用して詳細を指定します。

  • Name (名前) (必須): ユーザー インターフェイスに表示されるアーティファクトの名前。

  • Type (タイプ): アーティファクト タイプ — shared または scoped。初期設定は shared です。

  • Paths (パス) (必須): アーティファクトとして含める glob パターンのリスト。

  • Ignore-paths (無視パス): アーティファクトから除外する glob パターンのリスト。

  • Depth (深度): ファイル階層内でアーティファクトを検索する最大深度。初期設定では、検索には階層全体が含まれます。

  • Capture-on (キャプチャ条件): アーティファクトをアップロードするためのステップ条件。次の値を使用できます。

    • success: ステップが成功した場合に、アーティファクトをアップロードします。

    • failed: ステップが失敗した場合は、アーティファクトをアップロードします。

    • always: ステップの結果に関係なくアーティファクトをアップロードします (既定)。

YAML ファイルの artifacts セクション内の upload セクションでアーティファクト タイプを定義します。

アーティファクトの使用

以降の bitbucket-pipelines.yml ファイルの例は、アーティファクトをステップ間で共有するように設定する方法を示しています。

  • "Build and test" スクリプトが完了すると、dist フォルダと report フォルダ (いずれも BITBUCKET_CLONE_DIR にあります) のすべての txt ファイルが同じパスでアーティファクトとして保持されます。

  • "Integration test" と "Deploy to beanstalk" は、最初のステップで作成された dist および reports のファイルにアクセスできます。

  • "Integration test" が dist または reports へのすべての変更は、"Integration test" でアーティファクトとして指定されていないため、後のステップでは利用できません。変更を保持したい場合、このステップでそれらもアーティファクトとして定義する必要があります。

  • アーティファクトはダウンロードされないため、「成功メッセージを表示」中は利用できません。このステップではアーティファクト success.txt が作成されて、後のステップでダウンロードできるようになります。

  • 「デプロイ後のテストを実行」ステップが完了したら:

    • test-reports フォルダー内のすべてのファイル (HTML ファイルを除く) は、共有アーティファクトとして保存され、後続のステップで利用できるようになります

    • logs フォルダー内のファイルは、ステップが失敗した場合にスコープ指定アーティファクトとして保存されます。これらのスコープ指定アーティファクトは後のステップには渡されません

  • 最後のステップ「カバレッジレポートの実行」では、前のステップの reports/*.txtpdv-test-reports のアーティファクトのみがダウンロードされます。このターゲットを絞ったダウンロードにより、不要なアーティファクトのダウンロードを回避できるため、ビルド時間を短縮できます。

  • 特定のステップでダウンロードされたアーティファクトの既定のファイル権限は 644 (-rw-r--r--) に設定されています。パイプなど、実行されるコマンドに応じてこれらの権限を変更する必要がある場合があります。

アーティファクトには 1 GB のサイズ制限があります。

bitbucket-pipelines.yml の例

pipelines: default: - step: name: Build and test image: node:10.15.0 caches: - node script: - npm install - npm test - npm run build artifacts: # defining the artifacts to be passed to each future step. - dist/** - reports/*.txt - step: name: Integration test image: node:10.15.0 caches: - node services: - postgres script: # using one of the artifacts from the previous step - cat reports/tests.txt - npm run integration-test - step: name: Deploy to beanstalk image: python:3.5.1 script: - python deploy-to-beanstalk.py - step: name: Display success message artifacts: download: false # do not download artifacts in this step paths: # defining artifacts to be passed to each future step - success.txt script: - echo "Deployment for $BITBUCKET_COMMIT successful!" > success.txt - step: name: Run post deployment tests caches: - node script: - npm run pdv-tests artifacts: upload: - name: pdv-test-reports #shared artifact type: shared paths: - test-reports/** ignore-paths: - test-reports/*.html - name: pdv logs #scoped artifact type: scoped paths: - "logs/**" capture-on: failed - step: name: Run coverage report caches: - node artifacts: download: #download only specific artifacts defined in previous steps - reports/*.txt - pdv-test-reports script: - npm run coverage-report definitions: services: postgres: image: postgres:9.6.4

手動ステップ

Manual steps will have build artifacts produced by any previous steps copied into their working directory, similar to automatic steps.

アーティファクトのダウンロードと有効期限

ステップで生成されたアーティファクトをダウンロードできます。

  1. パイプラインの結果ビューの [アーティファクト] タブを選択します。

  2. ダウンロード アイコンをクリックします。

アーティファクトは、アーティファクトを生成したステップの完了後 14 日間保持されます。この期間が過ぎるとアーティファクトは期限切れとなり、パイプラインでは以降のあらゆる手動ステップを実行できなくなります。

アーティファクトを 14 日間以上保持したり、1 GB 以上のアーティファクトを保持したりする場合、Amazon S3 やホスト型のアーティファクト リポジトリ (JFrog Artifactory など) のような独自のストレージ ソリューションを使用することをお勧めします。アーティファクトのビルドの保持期間の制限は、コストを管理できる範囲に抑えることで、Pipelines でのビルド アーティファクトの保管および転送料金を発生させないために行っています。

詳細については、次の情報をご参照ください。

さらにヘルプが必要ですか?

アトラシアン コミュニティをご利用ください。