LoginSignup
5
3

More than 5 years have passed since last update.

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

Last updated at Posted at 2016-12-17

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

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

しかし、travis-scriptsというツールを使えば簡単にTravisからホスティングできるのです。

やり方(READMEの和訳)

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

npm i -D @alrra/travis-scripts

:warning: 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をクリックします。

Add deploy key

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

公開鍵を入力

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

チェックを入れる

Add keyをクリックします

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

key

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

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

5
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
3