今天说下用Pelican写作过程中的自动发布流程,主要用到了Fabric 以及ghp-import这两个工具

简介

Fabric 是一个命令行工具,能够简化SSH的使用,主要用于应用的部署和系统管理任务。它能通过fab命令执行fabfile.py文件中自行定制的任务函数,任务函数中可以使用run函数通过SSH执行远端主机命令,local函数用于执行本地命令。
ghp-import 是专门用来将你的静态网站导入到github pages的工具。由于静态网站需要部署在github和根目录下,这样会导致Pelican工程文件和生成的静态网站文件没法在同一个github仓库中维护。而ghp-import能方便的建立并维护一个独立的分支(master或者gh-pages)专门用来维护静态网站(output目录),而用户可以手动的在另外的分支维护Pelican工程文件。

安装

Fabric

ghp-import

配置

pelican-quickstart过程会自动在工程的根目录下生成一个fabfile.py,里面包括所有的配置和可以执行的命令。 对于github pages需重点关注的是env.github_pages_branch,因为如果是project网站的话需要用到gh-pages分支,而对于user网站需要用到master分支(这时候Pelican工程的分支就不能用master了,可自行新建一个其他分支用来维护。更高阶的玩法是本地Pelican工程还是master分支,静态网站还是gh-pages,然后修改gh_pages函数在上传时本地gh-pages分支->远程master分支,而本地master分支->远程其他分支
其他保持默认即可,当然也可以定制更多的函数扩展fabfile.py用来简化你更多的工作。

使用

fab clean清空output目录
fab build生成静态网站
fab regenerate将改动的部分从新生成页面
fab serve本地启动服务用来查看生成的网站
fab reserve生成静态网站并启动服务
fab gh_pages生成静态网站并更新到github上的github_pages_branch分支中这里默认还是用pelicanconf.py配置生成静态网站,建议修改fabfile.py文件换成publishconf.py生成

所以以后就很简单啦,写完文章之后用fab reserve命令查看一下,没问题的话用fab gh_pages上传。 需要的话在gh_pages里面再增加Pelican工程文件分支的上传,那就完美了。或者在.git/hooks/post-commit中配置下让Pelican工程提交的时候自动上传(添加pelican content -o output -s pelicanconf.py && ghp-import output && git push origin gh-pages即可)

原理

gh-imports这个工具挺有意思,好奇它是怎么自动维护一个独立分支的,所以特意查看了一下它的源码。
基本原理很简单,通过subprocess建立子进程,执行git fast-import命令,将output内的文件倒入到目标分支上去。再执行git push命令上传就完事了。

Comments


There are no comments yet.

Add a Comment

You can use the Markdown syntax to format your comment.

Comment Atom Feed