パイプラインのアーティファクト
はじめに
アーティファクトは、ステップによって作成されるファイルです。パイプライン設定で定義したら、以降のステップで共有したり、エクスポートしてステップの完了後にアーティファクトを保持したりすることができます。たとえば、ビルド ステップで生成された JAR ファイルまたはレポートを、後のデプロイメント ステップで使用できます。ステップで生成されたアーティファクトをダウンロードしたり、外部ストレージにアップロードすることもできます。
次の点に留意する必要があります。
ステップの最後に
BITBUCKET_CLONE_DIRにあるファイルをアーティファクトとして構成できます。BITBUCKET_CLONE_DIRは、リポジトリが最初にクローンされるディレクトリです。glob パターンを使用してアーティファクトを定義できます。
*で開始される glob パターンは、引用句で囲む必要があります。注: これらは glob パターンのため、パス セグメント "." および “..” は使用できません。ビルド ディレクトリに相対的なパスを使用します。アーティファクトのパスは、
BITBUCKET_CLONE_DIRの相対パスになります。ステップ中に作成されたアーティファクトは、以降のすべてのステップで使用できます。
並行ステップで作成されたアーティファクトは、同じ並行ステップのグループ内の他のステップからはアクセスできない場合があります。並行グループ内の別のステップがアーティファクトを要求した場合、要求された時点で存在する可能性もあれば、存在しない可能性もあります。
アーティファクトは生成から 14 日後に削除されます。
初期設定では、使用可能なすべてのアーティファクトがステップの開始時にダウンロードされます。この動作は、
downloadフィールドを使用して制御できます。download: trueと設定すると、前のステップのすべてのアーティファクトをダウンロードします。download: falseと設定すると、アーティファクトのダウンロードをスキップします。特定のアーティファクト名のリストをダウンロードに設定して、それらのアーティファクトのみをダウンロードします。正確なアーティファクト名を必ず指定してください。たとえば、
Artifact 1とArtifact 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/*.txtとpdv-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手動ステップ
手動ステップでは自動ステップと同様、過去のあらゆるステップで作成されたビルド アーティファクトが作業ディレクトリにコピーされます。
アーティファクトのダウンロードと有効期限
ステップで生成されたアーティファクトをダウンロードできます。
パイプラインの結果ビューの [アーティファクト] タブを選択します。
ダウンロード アイコンをクリックします。
アーティファクトは、アーティファクトを生成したステップの完了後 14 日間保持されます。この期間が過ぎるとアーティファクトは期限切れとなり、パイプラインでは以降のあらゆる手動ステップを実行できなくなります。
アーティファクトを 14 日間以上保持したり、1 GB 以上のアーティファクトを保持したりする場合、Amazon S3 やホスト型のアーティファクト リポジトリ (JFrog Artifactory など) のような独自のストレージ ソリューションを使用することをお勧めします。アーティファクトのビルドの保持期間の制限は、コストを管理できる範囲に抑えることで、Pipelines でのビルド アーティファクトの保管および転送料金を発生させないために行っています。
詳細については、次の情報をご参照ください。
この内容はお役に立ちましたか?