要使用 github page 作为站点,需要这么做:
- 创建一个名字为
username.github.io
的仓库, 在本地创建一个空仓库。
$ mkdir username.github.io/ $ cd username.github.io/ $ git init $ git commit --allow-empty -m "Create master branch" $ git remote add origin git@github.com:username/username.github.io.git $ git push -u origin master
master
作为发布分支。每次博客生成后推到master
,但为了偷懒,可以选择使用持续集成服务(CircleCI)完成自动构建推送。--------------
- 创建一个
orphan
分支来管理站点的源代码
Hakyll 会把站点生成到$ git checkout --orphan hakyll $ git submodule add git@github.com:username/username.github.io.git _site $ git commit -m "Create hakyll branch" $ git push -u origin hakyll
_site
目录中,所以这里把_site
目录作为 submodule,把_site
中的内容推到master
分支。
Hakyll 配置
使用下面命令完成 Hakyll 初始化,编译。$ hakyll-init .
$ stack init
$ stack build
之后可以使用下面三条命令:$ stack exec site build // 生成站点
$ stack exec site watch // 在 localhost:8000 查看站点
$ stack exec site clean // 删除缓存,站点
在你完成配置,修改模板样式后,提交一次。记得在gitignore
中添加_site
,_cache
和其他Haskell 忽略文件$ git add --all
$ git commit -m "Configure Hakyll"
$ git push origin hakyll
CircleCI 配置
CircleCI 提供了持续集成服务,对 Haskell 的支持较好。配置文件如下:machine:
ghc:
version: 7.10.1
dependencies:
cache_directories:
- "~/.stack"
- ".stack-work"
pre:
- curl -L https://github.com/commercialhaskell/stack/releases/download/v1.1.2/stack-1.1.2-linux-x86_64.tar.gz | tar zx -C /tmp
- sudo mv /tmp/stack-1.1.2-linux-x86_64/stack /usr/bin
override:
- stack setup
- stack build
test:
override:
- echo "skip test command"
post:
- git submodule init
- git submodule update
- cd _site/ && git checkout master
- stack exec site build
deployment:
production:
branch: hakyll
commands:
- git config --global user.email circleci@circleci
- git config --global user.name CircleCI
- cd _site/ && git status
- cd _site/ && git add --all
- cd _site/ && git commit -m "Update (`date '+%F %T %Z'`) [ci skip]"
- cd _site/ && git push origin master
配置有以下几点:- 由于 CircleCI 默认使用 cabal,并没有安装 stack,所以需要把 stack 的安装写进去。
- 需要把 stack 安装的包和 hakyll 编译的文件缓存下来,添加缓存目录
~/.stack
和.stack-work
- 跳过测试,把站点生成到
_site
- 通过
[ci skip]
在推到master
时跳过 ci。
hakyll
分支。$ git add circle.yml
$ git commit -m "Configure CircleCI"
$ git push origin hakyll
CircleCI 第一次构建要花大约30分钟,之后你就可以访问你的站点了.from http://birdgg.me/posts/2016-09-11-hakyll.html
相关帖子:http://briteming.blogspot.com/2017/01/create-github-page-with-hakyll-and.html
No comments:
Post a Comment