Jekyll ブログの Travis CI 使って Github Page への配備する方法のメモ
まとめる気はない、単なる Travis CI のチラ裏メモ。
メモ
- Travis-CI のビルド処理はコンテナ型仮想化で動いている。
- OS は ubuntu 。ただし、何か細工しているかもしれないが未調査。
- よって
.travis.yml
はDockerfile
のノリで書く。 apt-get
も使える。また、aptアドオン?の形でも使える。
- ruby まわりの前提として rvm 、bundle 使用が無難
- bundle 使わないですべて Apt で管理することもできるが、
Gemfile
をコミットした運用がよいだろう。 rake
はbundle exec rake
のように、ruby はbundle
を介して使用しよう。
- bundle 使わないですべて Apt で管理することもできるが、
- Github のレポジトリに push したい場合は、何らかの秘密鍵を入れこむか、アクセストークンを使用する。
- 鍵・アクセストークンともに公開すべきではないので、レポジトリに平文で格納しないこと。
- travis-encrypt を使えば暗号化されたテキストでやりとりできるので、センシティブな情報をやりとりするのにつかえる。
travis encrypt -r ユーザ名/レポジトリ名 FOO=bar
とした上で.travis.yml
に暗号化したテキストを書くのと、Travis の設定で環境変数FOO=bar
を非公開で設定するのは、動きに差はほどんどない。が、環境変数だったら後者の方がずっと楽。- 設定箇所への直リンは
https://travis-ci.org/ユーザ名/レポジトリ名/settings/env_vars
- 設定箇所への直リンは
- アクセストークンを使って git にアクセスするは、https://github.com/settings/tokens から Personal access token を生成し、
https://$GH_TOKEN@github.com/ユーザ名/レポジトリ名.git
から git clone すればよい。というか、これだけなのでアクセストークンの方がずっと簡単。- アクセストークンは環境変数としておいて上述の方法をつかってレポジトリに公開しないようにする。
- 鍵・アクセストークンともに公開すべきではないので、レポジトリに平文で格納しないこと。
やったことのメモ
アウトプット:
- Travis を Jekyll ソースのレポジトリと紐付ける。
- bundle を使用するように変更。
Gemfile
とGemfile.lock
を使用するように変更(厳密にはきちんと使っていなかったのできちんと書いた)。 Rakefile
に初期化コードも含めて本当にすべて動くようにした。(setup
タスクの追加).travis.yml
を記載- LSI を使用するので、Apt で GSL ライブラリをインストールするようにした。
bundle install
は特に書かなくてもlanguage: ruby
になっていれば動くみたい。rake setup
、rake generate
を呼び出す…のだが、bundle exec rake setup
のように bundle を通して呼ぶようにする。- 環境変数のうちレポジトリに登録してしまってよいものを記載する。
- github アクセストークンを取得し、Travis CI の設定で環境変数
GH_TOKEN
に設定する。.travis.yml
でそれを参照するべきところは$GH_TOKEN
に置き換える。 git push
すると Travis が動いてくれるのでログを確認し、エラーがなくなるまで check & try する。
アクセストークンの隠蔽には少し苦労した。
ビルドログにて環境変数を設定する所はきちんと $ export GH_TOKEN=[secure]
のように隠蔽してくれるのだが、
git push
のところでどうしても To https://XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX@github.com/cat-in-136/cat-in-136.github.io.git
のようなログが表示される。
しかも標準出力ではなく標準 エラー 出力に吐かれているので > /dev/null
でも表示されてしまう。
というわけで、git push
を呼び出す所は強引だが bundle exec rake -q deploy 2>&1 | sed "s/${GH_TOKEN}/\${GH_TOKEN}/g"
とした。
(標準エラー出力を標準出力にぶちこんで、さらにそれを sed でテキスト置換)
参考文献
- Jekyllでgit pushをフックしてGithubPageへ自動デプロイするようにした, Hack Your Design, 15 Nov 2013.
- OctopressとTravis CIを連携させてBlog生成を自動にする, ぽっちぽちにしてやんよ, 27 Jun 2013.
- Travis CI: Using container-based infrastructure
- Travis CI: APT Sources and Packages