TravisCIからGithubに別ブランチでpushするときに色々コケたので覚書
最近、知り合いが申請して掲載されたこともありHugoのテーマを作ってみているのですが、申請したりユーザーがダウンロードする時の事を考えて、必要なファイルと制作用のファイル(Sassとか)を分けたかった。
知り合いがTravisでやっているとの事だったので、いい機会だと思って パクって 触ってみました。
Travis CIについて
Travis CIについては以下の記事を何度か読んだり、この間のWordBench京都で書き方とか連携・設定あたりはなんとなく理解していたが、なかなか使えずにいた。
参考:
今回やりたかった(やった)こと
Hugoのテーマはdevelopで開発。
ここにpush or PRすることで、Travis CIが走って配布版のファイルを作ってくれて、masterにまとめてくれる(pushする)ところを自動化。
ほんとはテストとかLint走らせたりするんだろうけどねー。
Travisの設定
別にビルドするものも無いけどなんかできないか探ろうと思ってやってたんだけど、結局めんどくさくなって知り合いのやつ参考にちょっと変えて書いた。
ビルドして、成功したらデプロイのスクリプトを走らせるというもの。
デプロイのスクリプトでは、既存の .git
、 .gitignore
を削除して、開発用のファイルを削除した後再度リポジトリを作ってcommit&pushするというもの。
詳細は最初の方に載っけたリポジトリを見てほしい。
Shell Scriptというかコマンド周りで学びがあった
変数を定義してるのに未定義
ambiguous redirect
というエラーが頻発してpushができなかった。
このエラーはShell Script内で変数を使っていて、未定義なものがあるときに発生するとかって話がStackoverflowによくあがってた。
でも、実際使っていた変数は環境変数で定義していたし、ログを見る限りexportも上手くいっていたので原因は変数じゃなさそうだった。
結果をいうと 改行コードがまざっていた ことっぽい。すごいハマった。
途中までLFだったのに一部CRLFになっていたので、コピペ危ないなって思った。エディタで変えたらエラーも消えたので多分ここの関係で出てた。
ログ安全にするためのオプションのようなものがある
Travis CIで実行するとログが残る。更にログはバッジがからビルド画面が見れて、そこから見えてしまう。
なので travis のCLIツールを入れて暗号化させる他、git操作時に --quiet
というオプションを入れて出力しないモードにするらしい。
さらに > /dev/null 2>&1
というコマンドをつけることで出力を無効化できるらしい。
このあたりはこの記事に書いてある。
参考: cmd > /dev/null 2>&1」の話 - Qiita
触ってみて
Travis CIというよりShell Script周りにすごく悩まされたのでおのれShell Scriptという気持ち。
ただTravis CIに触れるいい機会だったので良かったし、別プロジェクトではこれ参考にテストやLint走らせてみたいなと思った。
とりあえず▲さんをコントリビューターの欄にぶっこみたいくらい感謝
— こにたん (@skd_nw) 2017年8月28日