LoginSignup
12
9

More than 5 years have passed since last update.

CircleCIでDockerコンテナ上でテストするときに環境変数を渡す

Posted at

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を追加している。

12
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
9