CircleCI の "store_artifacts" における "destination" を使う場合と使わない場合の違い

公式ドキュメントより

公式ドキュメント には、以下のように記載されています。

現在、store_artifacts には path と destination の 2 つのキーがあります。


path は、アーティファクトとしてアップロードされるファイルまたはディレクトリのパスです。
destination (オプション) は、アーティファクト API でアーティファクト パスに追加されるプレフィックスです。 path で指定されたファイルのディレクトリがデフォルトとして使用されます。

YAML の例

steps に以下のような YAML が設定されているとします。公式ドキュメントの内容そのままです。以降はこの YAML を用いているものとして説明をします。

    steps:

      - run:
          name: ダミー アーティファクトの作成
          command: |
            echo "my artifact file" > /tmp/artifact-1;
            mkdir /tmp/artifacts;
            echo "my artifact files in a dir" > /tmp/artifacts/artifact-2;

      - store_artifacts:
          path: /tmp/artifact-1
          destination: artifact-file

      - store_artifacts:
          path: /tmp/artifacts

"destination" を使う場合

destination を使う場合には以下の特徴があります。

  • ファイル名を具体的に指定してはいけない
    • つまり、書き出し先としては「ディレクトリ名」を指定する
  • path に指定したディレクトリを mkdir で作る必要はない

前者については、例えば、echo "my artifact file" > /tmp/artifact-1/hogehoge.txt; のように指定すると以下のようにエラーになります。

/bin/bash: /tmp/artifact-1/hogehoge.txt: No such file or directory

"destination" を使わない場合

destination を使わない場合には以下の特徴があります。

  • ファイル名を具体的に指定する
  • path に指定したディレクトリを mkdir で作る必要がある

こちらの方が一般的かと思います。ディレクトリを自前で作る必要がある点には注意が必要です。

Powered by はてなブログ