CircleCi2.0で、store_artifactsのpathに環境変数が使えない問題の解決方法

CircleCi-size-medium

Dockerによるテストの自動実行やデプロイ自動化をやってくれる便利なサービスであるCircleCi。各種設定はconfig.ymlに記載するんだけど、store_artifacts(カバレッジレポートやその他ファイルをwebからアクセスできるようにしてくれる)のpath設定でつまづいたのでメモ。

問題:pathに環境変数が使えない

下記のようにconfig.ymlを書けば、テスト実行後に生成されるカバレッジレポートをCircleCiのArtifactsからアクセスできる、と思っていた。アプリケーションはCakePHP3系で、phpunitをcomposerでインストールしている前提(xdebugをインストール済のサーバー環境)。

が、CircleCiの管理画面からJobsの実行結果のUploading artifactsを確認したところ、実際にはこうなった:

ふーむ、どうやらstore_artifacts内ではパスが認識されていないらしい(おまけに1つ前のrunで実行したcdを引きずっている)。調べてみると同様のケースを報告している記事も見つかった:

解決方法

仕方ないので、直書きでパスを書くことで解消した。

pathは絶対パス相対パスどちらでも指定可能。本件、CircleCiの公式ドキュメントを眺めてみても書いていなかったので調査に手間取ってしまった。参考になると幸いです。

Storing Build Artifacts: https://circleci.com/docs/2.0/artifacts/

ちなみに他のソリューションとしては、まだ試していないがProject単位の環境変数ならいけるかも?もし検証された方いらっしゃいましたらご共有いただけると有難いです。