以前からあったら自分が使うかなと思っていたCI経由でGitHub PagesにElmのページを自動デプロイしてくれるテンプレートを作ってみました。
Elm Advent Calendar 2018 18日目の記事です。遅刻してしまって申し訳ない😢
使い方
前提
yarnがローカルにインストールされていることを前提としたテンプレートです。
リポジトリの初期化
GitHub上でリポジトリをフォークするか、
git clone https://github.com/kory33/elm-gh-pages-template <プロジェクト名>
cd <プロジェクト名>
git remote set-url origin <新規リポジトリURL>
git push -u
でローカルにクローンしたリポジトリを新規リポジトリにpushしてください。フォークした場合、必要に応じてリポジトリのSettings
からリポジトリ名を変更してください。
CircleCIでの設定
CircleCIがビルド成果物をコミットしてプッシュするためにリポジトリへの権限が必要になります。
秘密鍵をCircleCIに登録してこれを行っても良いのですが、より手軽なアクセストークンを使った方法を紹介します。
GitHubの右上のユーザーアイコン > Settings
> Personal settings
カラムの下にあるDeveloper settings
> Personal access tokens
の順でリンクをたどると、GitHub APIを使うためのアクセストークンを管理するページにたどり着きます。
Generate new token
をクリックするとトークンのスコープを指定する画面が開くので、repo
をチェックします。
生成されたトークンをコピーしてCircleCIへ戻ります。
左下のSettings
> Projects
と辿り、初期化したプロジェクトの右端にある設定編集ボタンを押します。
Environment Variables
でAdd Variable
をクリックし、Name
にGITHUB_PERSONAL_TOKEN
、Value
に先ほどコピーしたトークンを張り付け、トークンを追加します。
ADD PROJECTS
で、クローンしたプロジェクトを選択します。Start Building
を押せばプロジェクト自体の設定は終わりです。あとはyarn start
で建つ開発用サーバーでデバッグを行いながらElm等を書いていきます。
master
にpush
公開ができる状態になったら、master
にpushをすることでgh-pages
ブランチにコミットが追加されます。master
へのプッシュでのみCircleCIが反応するようになっていますが、この挙動は変更できます。(参照: ./circleci/config.yml
)
TODO
一度gh-pages
ブランチでビルドが走ると./circleci/config.yml
が存在しないにもかかわらずビルドが走り続け失敗してしまいます。結果私のGmailは失敗通知で埋まりました。修正が必要そうです。
EDIT: gh-pages
ブランチでのビルドを必ず成功させるように修正しました。