静态博客引擎的部署,一般都经过以下几个步骤:

  • 编写博客
  • 预览
  • 提交日志到 git server
  • 编译
  • 将编译后的内容部署到服务器上

每次都经过这些操作,比较繁琐。要想实现自动化,可以通过编写一个 deploy.sh 脚本,每次预览完后,执行一下这个脚本,将编译及部署的步骤自动化。

更好的方式是通过 git hooks

Git 钩子(hooks)是在 Git 仓库中特定事件(certain points)触发后被调用的脚本。通过钩子可以自定义 Git 内部的相关(如 git push)行为,在开发周期中的关键点触发自定义的行为。Git 含有两种类型的钩子:客户端的和服务器端的。客户端钩子由诸如提交和合并这样的操作所调用,而服务器端钩子作用于诸如接收被推送的提交这样的联网操作。

来自:https://aotu.io/notes/2017/04/10/githooks/index.html

建立仓库

在服务器上,

配置 git hook

默认情况下,仓库会生成 hooks 目录,在其中附带一系列样本文件,分别对应 一个git commit 周期中各个点的操作。

使用方法是去掉 .sample扩展名。

这里使用的是 post-update,使用 cp post-update.sample post-update 复制一份,mv post-update.sample post-update直接去掉扩展名都可以。

配置post-update

这里就是shell脚本,这里是以 gor 为例,在远程服务器上,要首先安装静态编译引擎,才好编译。

git update-server-info

unset GIT_DIR 
export DIR_ONE=/home/xxx/project/blog_dist/  #此目录为服务器页面展示目录 
cd $DIR_ONE

git init
git remote add origin /home/xxx/project/blog2019/blog.git
git clean -df
git pull origin master
gor build

这个脚本执行了几件事:

  • 跳到要部署的目录
  • 从本地仓库拉取代码
  • 编译

部署 HTTP Server

compiled 就是输出编译后文件的目录,在这个目录进行 http server部署就可以了。

结束

参考文章:

https://aotu.io/notes/2017/04/10/githooks/index.html



blog comments powered by Disqus

Published

2019-11-19

Categories


Tags