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さん)
おわり