travis-scriptsでGitHub PagesをTravisから簡単に自動ビルドする

みなさんGitHub Pages使ってますか？便利ですよね。

しかし、Jekyll以外（例えばgulpとか）でGitHubにpushしても自動でビルド->ホスティングしてくれたらもっと便利だと思いませんか？
[「Travis CI GitHub Pages」でググッたら](https://www.google.co.jp/search?q=Travis+CI+GitHub+Pages)様々な情報が出てきますが、どれも結構複雑で、やり方がところどころ違っています。

しかし、[travis-scripts](https://github.com/alrra/travis-scripts)というツールを使えば簡単にTravisからホスティングできるのです。

やり方（READMEの和訳）
==

まずはインストール。npmを使います。

    npm i -D @alrra/travis-scripts

:warning: npm 2.7.0 以上でインストールできるそうです。

`https://travis-ci.org/<ユーザー名>/<リポジトリ名>`にアクセスし、Travisを有効化します。

![有効化](https://cloud.githubusercontent.com/assets/1223565/12536703/4f9161ae-c2b5-11e5-904c-e11f561e8b6f.gif)

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`に行き、<kbd>Add deploy key</kbd>をクリックします。

![Add deploy key](https://cloud.githubusercontent.com/assets/1223565/12536786/6e2b6e7c-c2b8-11e5-89ba-2b1a8403d90b.png)

公開鍵ファイルの中身をKeyの中にペーストします。

![公開鍵を入力](https://cloud.githubusercontent.com/assets/1223565/12891702/5c643cb6-ce91-11e5-8b24-1152f6b41c6e.png)

Allow write access にチェックを入れます。

![チェックを入れる](https://cloud.githubusercontent.com/assets/1223565/12537188/b687d6e8-c2c1-11e5-843e-0585334bf780.png)

Add keyをクリックします

![Add key](https://cloud.githubusercontent.com/assets/1223565/12902618/ec901010-ceca-11e5-90ac-a502f9962989.png)

間違ってコミットしないよう、公開鍵を削除してしまいます。

    rm github_deploy_key.pub
    
TravisのCLIをインストールしてログインします。

    gem install travis
    travis login

秘密鍵を暗号化します。

    travis encrypt-file github_deploy_key
    
出力は以下のようになっていると思います。

```bash
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`から見れます。

![key](https://cloud.githubusercontent.com/assets/1223565/12903066/89ff92d8-cecd-11e5-970e-2f5a6fb2d230.png)

秘密鍵も削除しちゃいます。

    rm github_deploy_key

`.travis.yml`のafter_successを以下のように書き加えます。

```yaml
  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ユーザー名、メールアドレスを環境変数にセットします。

```yaml
env:
  global:
  - GH_USER_EMAIL="<メールアドレス>"
  - GH_USER_NAME="<ユーザー名>"
```

最後に、after_successに以下の事柄を追記してください。

```yaml
- |
    # 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したらビルドが走ると思います。