今天要弄的时候利用 Jenkins + Github 自动部署我们的 hugo 博客。服务器快到期了,需要迁移服务器,以前的博客都是自己敲命令用 rsync 同步的。迁移就需要准备很多东西了,在让我以后同步博客,肯定是不会很开心的,既然如此,就让自动化来搞定,给自己节省更多的时间。
安装我们就不说了,可以参考官方文档,都是中文的,我是用 docker 部署到我自己的服务器上面的。插件我除了推荐的部分,我还额外安装了 golang、Publish Over SSH。Publish Over SSH 这个是我们本地要用到的,golang是准备以后用的。可以不用安装。注意,第一次安装好以后会汉化不完全,看看插件 Localization: Chinese (Simplified) 是否安装了,没有就安装一下,重启以后就汉化完全了。
点击菜单进入系统管理 -> 系统配置,找到 Publish over SSH 的部分,设置按照如图,配置好自己的参数
没有 SSH Server 的部分就点击新增就可以出现了。没有红框密码的部分,点击一下高级就有了,勾选使用密码,在输入密码。 Name 自己输入自己定义的名字 Host 和 Username 就是服务器的 ip 和用户名,Remote Directory 可以理解为操作的根目录,最后设置好以后,点击 Test 没问题的话就会有 Success 的提示。测试成功后点击保存就可以了。
接下来,选择菜单 新建任务,名称还是自己填写自己的任务名,接下来选择我们这里选择 构建一个自由风格的软件项目 大家可以按照自己的需求选择,然后点击确定进入下一步进入配置。
在源码管理,我们这边是用的 git,可以根据自己的需求自己选择。别忘了账号密码的配置。否则拉代码会有问题哦,因为我们是私有的项目。
接下来我们在 构建触发器 选择 GitHub hook trigger for GITScm polling
是用方法可以看文档的说明,我们使用的方法,在文档的下图位置
这里说的就是在系统管理 -> 系统配置中可以看到 hook 的 url,我们把他填写到 github 项目设置里面的 webhook 就可以了,如下两张图。
如果看不到,点击高级就可以了。
这里注意配置什么情况下载通知,我们这里只要配置在有 push 的时候通知就足够了。
继续回到 Jenkins 的项目配置

执行脚本就按照自己的配置就可以了,我这边就是下载了 hugo 的可执行文件,然后编译了一下。
在构建后操作我们有两个操作,一个是服务器那边拉取这边编译好以后的博客到服务器,用 rsync 拉取。
第二个操作是 Delete workspace when build is done 都弄好后清除,每次编译都全新拉取,我觉得会更安全一些,至于速度慢一些可以接受。
最后点击保存,点击立即构建测试一波,不出意外应该都可以部署了。
最后,如果一切顺利,这边文章,将是自动部署上去的。