関数型言語に少しでも慣れるため、これからGitHub Pagesで何か作る時は、Hakyll を使うのを自分に強制しようかな、と思っています。(思いましたが、その後、結局Jekyll使ってます。)
というわけでまずはhello worldから。
ローカルで動かす
インストール
https://www.haskell.org/platform/mac.html を入れる。
以降は、https://jaspervdj.be/hakyll/tutorials/01-installation.html を参考に。
$ ghc -V
The Glorious Glasgow Haskell Compilation System, version 7.10.3
$ cabal install hakyll
パスを通しておかないとhakyll-initなどが使えないので注意 ( http://qiita.com/JunKikuchi/items/8b82b6811687560d903d )
# ~/.bash_profile
export PATH="$HOME/Library/Haskell/bin:$PATH"
# source ~/.bash_profile
サイトの作成
$ hakyll-init hello-hakyll-with-gh-pages
$ cd hello-hakyll-with-gh-pages
$ ghc --make -threaded site.hs
$ ./site build
これで_site
以下にサイトが構築される
$ ./site watch
すれば、http://localhost:8000/
で見れるようになる。
Circle Ciを使ってdeploy(断念)
hslua-0.4.1のインストールがこけて断念したけど、一応メモを残しておく。
プロジェクトrepo(gh-pages)でやる前提。
http://www.stackbuilders.com/news/dr-hakyll-create-a-github-page-with-hakyll-and-circleci を参考にした。
Travis CIの場合は、https://imokuri123.com/blog/2015/04/create-github-pages-with-hakyll.html が日本語で参考になりそうだった。
masterブランチの作成(ソース管理用)
$ git init
$ git commit --allow-empty -m "Create master branch"
$ git remote add origin git@github.com:tnantoka/hello-hakyll-with-gh-pages.git
$ git push -u origin master
※ --orphanというのは他のブランチの歴史を引き継がないブランチ。http://d.hatena.ne.jp/eldesh/20120715/1342343316
gh-pagesブランチの作成(サイト公開用)
$ git checkout --orphan gh-pages
$ git commit --allow-empty -m "Create gh-pages branch"
$ git push origin gh-pages
gh-pagesを_siteとしてsubmoduleに追加
$ rm -rf _site
$ git checkout master
$ git submodule add -b gh-pages git@github.com:tnantoka/hello-hakyll-with-gh-pages.git _site
$ git commit -m "Add submodule at _site"
$ git push origin master
$ wget https://raw.githubusercontent.com/github/gitignore/master/Haskell.gitignore -O .gitignore
$ echo "_cache/" >> .gitignore
$ echo "/site" >> .gitignore
$ git add .
$ git push origin master
Circle CIでbuild
Circle CIで使えるHaskellの環境は、https://circleci.com/docs/environment#haskell に載ってる。
$ vim circle.yml
$ git add circle.yml
$ git commit -m "Configure CircleCI"
$ git push origin master
最終的に、
https://github.com/tnantoka/hello-hakyll-with-gh-pages/blob/master/circle.yml の内容でbuildしたが、先述の通り、hslua-0.4.1
がインストールできなかったので、一旦断念。
ログはこちら。
https://circleci.com/gh/tnantoka/hello-hakyll-with-gh-pages/3
ローカルからdeploy
できればCIサーバからやりたかったけど、別にローカルからでも運用はできるので、https://github.com/tnantoka/hello-hakyll-with-gh-pages/blob/master/deploy.sh でdeployすることにした。
$ ./deply.sh
http://tnantoka.github.io/hello-hakyll-with-gh-pages/
無事動いた。