CircleCIでDockerのイメージをつくって、つくったイメージをつかってテストを実行している。
しかし、CIで使えるサービス類の一部が使えなかったりすることがおきていてつらい。
環境変数をコンテナに引き継ぎして、渡してやればなんとかなるものもいくつかある。
しかし、テストを実行するコマンドが長くなって、保守はしにくいしつらい。
そこでスクリプトをかいた。
#!/bin/sh
IMAGE="eiel/hoge"
CMD="bin/rake"
OPTIONS="-it --link my-db:db"
ENVS="CODECLIMATE_REPO_TOKEN"
DEFAULT_ENVS="CIRCLE_ARTIFACTS CIRCLE_BRANCH CIRCLE_BUILD_NUM CIRCLE_COMPARE_URL CIRCLE_NODE_INDEX CIRCLE_NODE_TOTAL CIRCLE_PREVIOUS_BUILD_NUM CIRCLE_PROJECT_REPONAME CIRCLE_PROJECT_USERNAME CIRCLE_SHA1 CIRCLE_TEST_REPORTS CIRCLE_USERNAME CIRCLECI CI"
ENVS="$ENVS $DEFAULT_ENVS"
env_options=""
for env in $ENVS
do
ENV_OPTIONS="${ENV_OPTIONS} -e ${env}=`printenv $env`"
done
docker run $OPTIONS $ENV_OPTIONS $IMAGE $CMD
docker run -e HOGE=$HOGE -e GORO=$GORO -e MOGU=$MOGU ....
となってつらいのでそれをなんとかするためにやっている。
もっと良い方法があれば教えて欲しい。
もっと詳しく
Coveralls git error:
undefined method `gsub' for nil:NilClass
/usr/local/bundle/gems/coveralls-0.7.1/lib/coveralls/configuration.rb:72: warning: File.exists? is a deprecated name, use File.exist? instead
とかでていてつらかった。git関連のデータはコンテナの中にはないからだ。
ソースコードをみていたら環境変数を引き継ぎしておくとある程度は対処できそうだった。
とりあえず、CircleCIでstart containerに表示されていた変数を引き継いでいる。
あとはCIとCIRCLECIを追加している。