hugo

hugo 站点发布流程

2019-07-24
先说下常规的部署流程: 删除旧的发布文件 执行hugo名称生成发布文件 将发布文件复制到一个独立的目录 提交 git commit 登录服务器执行git pull 其中因为 hugo 生成发布文件时,不会删除旧的文件,如果我们在写文章过程中有删除操作,必须手动删除原有的发布文件。 git submodule 十分不成熟,为了避免污染主仓库,我们新建一个仓库用户放置发布文件,git 不允许两个仓库处于目录包含结构中。 懒惰是程序员的美德 可以看到常规的发布流程很繁琐,这明显不符合 “懒惰是程序员的美德” 宗旨,我们要简化这个流程。 首先想象最简单的发布流程,包含两个操作:提交 和 发布。 选用 python 的 fabric 库,来对这两个操作实现自动化。 提交 publishdir = '../pystarter.com-publish' with ctx.cd(publishdir): ctx.run('rm -rf *') ctx.run('hugo -d {}'.format(publishdir)) with ctx.cd(publishdir): ctx.run('git add .') comment = 'auto commit at ' + datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S") ctx.run('git commit -m "{}"'.format(comment)) ctx.run('git push origin master') 这里对环境有要求: publishdir 必须存在,且是合法的git目录,并且已配置了remote。 发布 webserver = 'pystarter' webroot = '/var/www/pystarter.