[CircleCI] 2.0でstore_artifactsのpathに環境変数が使えない問題の解決方法
2019/01/19
masyus
Dockerによるテストの自動実行やデプロイ自動化が可能なサービスであるCircleCIは、各種設定をconfig.ymlに記載する仕様になっています。今回はその設定の中でもstore_artifactsと呼ばれる、カバレッジレポートやその他ファイルをwebからアクセスできるようにしてくれる仕組みを使う際のpath設定でつまづいた点を解説します。
pathは環境変数が使えない
下記のようにconfig.ymlを書くことで、テスト実行後に生成されるカバレッジレポートをCircleCIのArtifactsからアクセスできると考えていました。
version: 2
jobs:
build:
docker:
- image: circleci/php:7-apache-node-browsers-legac
environment:
TEST_REPORT_PATH: /tmp/report
...
steps:
...
- run:
name: run test
command: |
mkdir -p ${TEST_REPORT_PATH}
cd /var/www/hogehoge.com
vendor/bin/phpunit --configuration phpunit.xml.dist --coverage-html ${TEST_REPORT_PATH}
- store_artifacts:
path: ${TEST_REPORT_PATH}
ですが、実際は異なりました。
CircleCIの管理画面からJobsの実行結果のUploading artifactsは下記のようになりました。
Uploading /var/www/hogehoge.com/${TEST_REPORT_PATH} to /var/www/hogehoge.com/${TEST_REPORT_PATH}
No artifact files found at /var/www/hogehoge.com/${TEST_REPORT_PATH}
文字列で出力されている状況を鑑みるに、どうやらstore_artifacts内では環境変数が認識されていない様子です。
解決方法: 直書きでpathを設定する
pathは環境変数で保持させるほどでも無い情報だと判断したため、直書きでpathを書くことで解消しました(ちなみに絶対パス相対パスどちらでも指定可能のようです)。
version: 2
jobs:
build:
docker:
- image: circleci/php:7-apache-node-browsers-legac
environment:
TEST_REPORT_PATH: /tmp/report
...
steps:
...
- run:
name: run test
command: |
mkdir -p ${TEST_REPORT_PATH}
cd /var/www/hogehoge.com
vendor/bin/phpunit --configuration phpunit.xml.dist --coverage-html ${TEST_REPORT_PATH}
- store_artifacts:
path: /tmp/report
本件、CircleCIの公式ドキュメントを眺めてみても書いていなかったので調査に手間取ってしまいました。参考になれば幸いです。