travis-ciでdocker内でcpp-coverallsを使う時によくわからなくなったやつ
2つかそこらある
そもそもtravis-ciもdockerもcpp-coverallsもなんも分からんしぐーぐりんぐ係数も低すぎるのでなんも見つけられなかった
困ったところを書いておこうね
cpp-coverallsを実行するとなんやかんや正常っぽいログが出た後にTracebackを吐いて落ちる
Traceback (most recent call last): File "/usr/bin/coveralls", line 11, in <module> load_entry_point('cpp-coveralls==0.4.0', 'console_scripts', 'coveralls')() File "/usr/lib/python2.7/site-packages/cpp_coveralls/__init__.py", line 97, in run cov_report = coverage.collect(args) File "/usr/lib/python2.7/site-packages/cpp_coveralls/coverage.py", line 463, in collect report['git'] = gitrepo.gitrepo(abs_root) File "/usr/lib/python2.7/site-packages/cpp_coveralls/gitrepo.py", line 32, in gitrepo if not repo.valid(): File "/usr/lib/python2.7/site-packages/cpp_coveralls/gitrepo.py", line 61, in valid return self.git("log", "-1")[0] == 0 File "/usr/lib/python2.7/site-packages/cpp_coveralls/gitrepo.py", line 72, in git cwd=self.cwd) File "/usr/lib64/python2.7/subprocess.py", line 390, in __init__ errread, errwrite) File "/usr/lib64/python2.7/subprocess.py", line 1024, in _execute_child raise child_exception OSError: [Errno 2] No such file or directory
これはgit自体がインストールされていないのでgitを入れて
travisのログを見ているとdockerを構成する前からgit cloneでれぽじとりをクローンしているしいらんやろ!とか思っていました
fatal: Not a git repository (or any of the parent directories): .gitが出る
そもそもcpp-coverallsを実行するディレクトリが間違っている
docker exec $CONTAINER su - user sh -c "cd /srcdir && coveralls --exclude tools --exclude tests --gcov-options '\-lp' -t $COVERALLS_REPO_TOKEN"
とかやっておけばよさ
coveralls.ioのrepo_tokenってどうやって渡せばいいの
cpp-coverallsを使う☝️でcoveralls.ioに登録してrepo_tokenを貰ってそれを実行引数に入れる必要があるのだけれど、
このtokenは公開すんじゃねえぞ…って言われる
なのでtravisが用意してくれているstring encrypt機能を使ってうまいこと環境変数に入れて実行する
cd /srcdir gem install travis travis encrypt COVERALLS_REPO_TOKEN="repo_token" --add
とかやると良い感じに.travis.ymlに書いてくれる
おわりに
ciってめちゃくちゃ便利ですごい、そうおもいました(T生まれのTさん)
おわり