Zip Artifacts機能
screwdriver-artifact-bookend
を利用して、ビルド成果物をStoreにアップロードする際、それらのファイルをZip化して送信できます。
この機能を有効化することで大量のファイルをアップロードする場合にscrewdriver-artifact-bookend
の実行時間を短縮できます。
Zip化されたファイルをアップロード後に解凍するため、アップロードされたファイルがUIのArtifactsタブに表示されるまで時間がかかる場合があります。
構成
- ビルドコンテナ(
screwdriver-artifact-bookend
ステップ)からZip化されたビルド成果物をStoreにアップロードします。 - ビルドコンテナはAPIに先程アップロードしたZipをUnzipするリクエストを行います。
- APIはUnzipのリクエストが来たら、Redisにメッセージを送信します。
- Artifacts Unzip ServiceがRedisからメッセージを取得し、Zip化されたビルド成果物をStoreから取得し、解凍してから再度Storeにアップロードします。
- Artifacts Unzip ServiceはZip化されたビルド成果物をStoreから削除します。
構築
Artifacts Unzip Serviceの構築
Artifacts Unzip Serviceの設定を参考にArtifacts Unzip Serviceを構築してください。
APIのfeature flagを設定
APIにZip Artifacts機能を利用するための設定を追加する必要があります。
以下の設定を追加することでAPIはqueue-serviceに解凍するためのメッセージを送るようになります。
キー | デフォルト | 説明 |
---|---|---|
UNZIP_ARTIFACTS_ENABLED | false | Artifacts Unzip Serviceを利用するかの有無 |
# config/local.yaml
unzipArtifacts:
enabled: true
unzipに失敗した場合
Artifacts Unzip Serviceが解凍に失敗した場合、UIのArtifactsタブにファイルの一覧が表示されなくなります。
解凍に失敗した場合、管理者側で再度APIにリクエストを送る必要があります。
- APIドキュメントを参考に認証トークンを取得します。
-
/builds/{id}/artifacts/unzipに、以下のようにリクエストを送信します。
# 例 curl -I -X POST -H "Authorization: Bearer {Token}" https://api.screwdriver.cd/v4/builds/{ID}/artifacts/unzip
- 解凍したビルドIDのページにアクセスし、Artifactsタブにファイルが表示されていることを確認します。