Jenkins+Gogs+Hexo实现自动化部署博客

流程介绍

流程:本地博文仓库 push 至 Gogs远程博文仓库,GogsWeb钩子 推送事件至服务器 JenkinsJenkins 收到消息后执行脚本,pull 博文至 hexo 目录,然后执行 hexo g 生成静态文件。

使用前准备

  1. 服务器已安装配置好 Git,若没有安装,可参考 Linux环境下安装、升级Git 进行安装;
  2. 服务器已安装 Hexo 程序,若没有安装,可参考 Hexo 文档 进行安装;
  3. 服务器已安装配置好 Gogs,若没有安装,可参考 CentOS 7搭建Gogs服务 进行安装;
  4. 服务器已安装配置好 Jenkins,若没有安装,可参考 CentOS环境下安装与配置Jenkins 进行安装;
  5. 服务器已安装配置好 Nginx 并为 Hexo 生成的静态文件目录创建站点;

Jenkins配置

安装 gogs-webhook 插件

通过面板安装

操作步骤:系统管理 -> 插件管理 -> 可选插件,在搜索框中输入 gogs,勾选插件后单击 直接安装 按钮;

Jenkins+Gogs+Hexo实现自动化部署博客

手动安装

有时通过面板安装可能会因网络问题导致安装失败,所以只能手动安装插件。

Jenkins+Gogs+Hexo实现自动化部署博客

  1. 下载 gogs-webhook插件;

  2. 单击 系统管理 -> 插件管理 -> 高级,在 上传插件 表单选择已下载的插件文件,单击 上传

Jenkins+Gogs+Hexo实现自动化部署博客

配置任务

  1. 创建新任务

Jenkins+Gogs+Hexo实现自动化部署博客

  1. 配置Gogs密钥

可根据自身需求修改密钥;

Jenkins+Gogs+Hexo实现自动化部署博客

  1. 源码管理

Jenkins+Gogs+Hexo实现自动化部署博客

  1. 构建触发器

构建触发器 中勾选 Build when a change is pushed to Gogs;在 构建 步骤中新增 执行shell

Jenkins+Gogs+Hexo实现自动化部署博客

执行脚本内容:

1
2
3
4
5
6
7
8
9
#!/bin/bash
export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/usr/local/git/bin
cd /var/www/hexo/source/_posts
git pull origin master
cd /var/www/hexo
# 清理已生成文件
hexo clean
# 重新生成
hexo g

其中 /var/www/hexo/source/_postshexo 源文件存放目录并已保存 git 相关信息,需根据自身需求修改对应的路径;

修改权限

修改 /etc/sysconfig/jenkins 中的 JENKINS_USERroot

1
JENKINS_USER="root"

修改 jenkins 相关目录权限:

1
2
3
chown -R root:root /var/lib/jenkins
chown -R root:root /var/cache/jenkins
chown -R root:root /var/log/jenkins

重启jenkins

1
2
# 重启jenkins
systemctl restart jenkins

Gogs配置

  1. 进入仓库主页,单击 仓库设置

Jenkins+Gogs+Hexo实现自动化部署博客

  1. 单击 管理Web钩子 -> 添加Web钩子,选择 Gogs

Jenkins+Gogs+Hexo实现自动化部署博客

  1. 添加配置:

Jenkins+Gogs+Hexo实现自动化部署博客

其中 推送地址 格式为 http(s)://<你的Jenkins地址>/gogs-webhook/?job=<你的Jenkins任务名>

Jenkins调试

  1. Gogs 仓库设置面板中单击 测试推送 按钮;

Jenkins+Gogs+Hexo实现自动化部署博客

  1. 返回到 Jenkins 面板,进入任务面板,单击最新构建记录;单击 控制台输出 查看输出信息;

Jenkins+Gogs+Hexo实现自动化部署博客

  1. 查看博客网站是否有更新变化。

参考

[小题大做]Github + Jenkins 实现自动化部署 hexo 博客静态文件

以上是 Jenkins+Gogs+Hexo实现自动化部署博客 的全部内容, 来源链接: utcz.com/a/131888.html

回到顶部