Zip Artifacts機能

screwdriver-artifact-bookendを利用して、ビルド成果物をStoreにアップロードする際、それらのファイルをZip化して送信できます。
この機能を有効化することで大量のファイルをアップロードする場合にscrewdriver-artifact-bookendの実行時間を短縮できます。
Zip化されたファイルをアップロード後に解凍するため、アップロードされたファイルがUIのArtifactsタブに表示されるまで時間がかかる場合があります。

構成

zip artifacts architecture

  1. ビルドコンテナ(screwdriver-artifact-bookendステップ)からZip化されたビルド成果物をStoreにアップロードします。
  2. ビルドコンテナはAPIに先程アップロードしたZipをUnzipするリクエストを行います。
  3. APIはUnzipのリクエストが来たら、Redisにメッセージを送信します。
  4. Artifacts Unzip ServiceがRedisからメッセージを取得し、Zip化されたビルド成果物をStoreから取得し、解凍してから再度Storeにアップロードします。
  5. 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にリクエストを送る必要があります。

  1. APIドキュメントを参考に認証トークンを取得します。
  2. /builds/{id}/artifacts/unzipに、以下のようにリクエストを送信します。

     # 例
     curl -I -X POST -H "Authorization: Bearer {Token}" https://api.screwdriver.cd/v4/builds/{ID}/artifacts/unzip
    
  3. 解凍したビルドIDのページにアクセスし、Artifactsタブにファイルが表示されていることを確認します。