みなさんGitHub Pages使ってますか?便利ですよね。
しかし、Jekyll以外(例えばgulpとか)でGitHubにpushしても自動でビルド->ホスティングしてくれたらもっと便利だと思いませんか?
「Travis CI GitHub Pages」でググッたら様々な情報が出てきますが、どれも結構複雑で、やり方がところどころ違っています。
しかし、travis-scriptsというツールを使えば簡単にTravisからホスティングできるのです。
やり方(READMEの和訳)
まずはインストール。npmを使います。
npm i -D @alrra/travis-scripts
npm 2.7.0 以上でインストールできるそうです。
https://travis-ci.org/<ユーザー名>/<リポジトリ名>
にアクセスし、Travisを有効化します。
SSHの鍵を生成します。ここではgithub_deploy_keyという名前です。
ssh-keygen -t rsa -b 4096 -C "<your_email>" -f github_deploy_key -N ''
- 公開鍵の github_deploy_key.pub と
- 秘密鍵の github_deploy_key ができたと思います。
https://github.com/<username>/<repository>/settings/keys
に行き、Add deploy keyをクリックします。
公開鍵ファイルの中身をKeyの中にペーストします。
Allow write access にチェックを入れます。
Add keyをクリックします
間違ってコミットしないよう、公開鍵を削除してしまいます。
rm github_deploy_key.pub
TravisのCLIをインストールしてログインします。
gem install travis
travis login
秘密鍵を暗号化します。
travis encrypt-file github_deploy_key
出力は以下のようになっていると思います。
encrypting github_deploy_key for <username>/<repository>
storing result as github_deploy_key.enc
storing secure env variables for decryption
openssl aes-256-cbc -K $encrypted_XXXXXXXXXXXX_key -iv $encrypted_XXXXXXXXXXXX_iv -in github_deploy_key.enc -out github_deploy_key -d
Pro Tip: You can add it automatically by running with --add.
Make sure to add github_deploy_key.enc to the git repository.
Make sure not to add github_deploy_key to the git repository.
Commit all changes to your .travis.yml.
このときの$encrypted_XXXXXXXXXXXX_key
、$encrypted_XXXXXXXXXXXX_iv
は後々必要になりますが、https://travis-ci.org/<username>/<repository>/settings
から見れます。
秘密鍵も削除しちゃいます。
rm github_deploy_key
.travis.yml
のafter_successを以下のように書き加えます。
after_success:
- |
$(npm bin)/set-up-ssh --key "$encrypted_XXXXXXXXXXXX_key" \
--iv "$encrypted_XXXXXXXXXXXX_iv" \
--path-encrypted-key ".travis/github_deploy_key.enc"
$encrypted_XXXXXXXXXXXX_key
、$encrypted_XXXXXXXXXXXX_iv
は先ほどの値に置き換えてください。
GitHubユーザー名、メールアドレスを環境変数にセットします。
env:
global:
- GH_USER_EMAIL="<メールアドレス>"
- GH_USER_NAME="<ユーザー名>"
最後に、after_successに以下の事柄を追記してください。
- |
# Add the SSH-related commands here, see:
# https://github.com/alrra/travis-scripts/blob/master/doc/github-deploy-keys.md#26-set-up-ssh-connection-for-travis-ci
$(npm bin)/update-branch --commands "<ビルドコマンド>" \
--commit-message "<コミットメッセージ> [skip ci]" \
--directory "<出力ディレクトリ>" \
--distribution-branch "<出力ブランチ(e.g. gh-pages)>" \
--source-branch "<ソースのブランチ(e.g. master)>"
あとはbefore_scriptに依存関係のインストール処理など書いたり、nodeやrubyのバージョン設定したら終わりです。
pushしたらビルドが走ると思います。