Hello CI-使用Jenkins自动构建Hexo博客

Author Avatar
j3rry 4月 11, 2021

前言

折腾了下Jenkins做了一个Hello World项目,可以实现Hexo博客的自动构建、部署,顺带做了图片自动上传图床的功能(使用Rclone,此篇不展开讲解)

需求

本地提交并push更改到码云仓库之后,服务器自动pull并执行构建,然后部署到生产环境中

安装Jenkins

我的服务器环境是CentOS 8,参考Jenkins官方文档安装Jenkins,如果你正在使用其他Linux发行版也可以在这个页面中找到安装方式

安装完成后执行以下命令启动Jenkins

systemctl start jenkins

用以下命令查看Jenkins运行状态

systemctl status jenkins

配置反向代理

这里使用宝塔面板+Nginx实现反代,在宝塔中创建站点jenkins.edgeless.top,部署SSL证书,然后添加反向代理

不过使用宝塔默认配置的反向代理是不正确的,如果这个时候你打开站点然后进入Jenkins全局配置就会看到Jenkins提示反向代理配置错误,详情可以参考Jenkins官方文档

点击宝塔站点修改面板中反向代理选项卡中第一个反向代理配置的配置文件按钮修改刚刚的反向代理配置

location /的配置修改为

    proxy_pass http://127.0.0.1:8080;
    proxy_redirect     default;
    proxy_set_header   Host             $host:$server_port;
    proxy_set_header   X-Real-IP        $remote_addr;
    proxy_set_header X-Forwarded-Host $host:$server_port;
    proxy_set_header X-Forwarded-Server $host;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;

参考Jenkins官方文档

配置Jenkins

访问配置的域名,参考Jenkins官方文档完成初始化配置后进入Jenkins控制台

由于我的仓库托管在Gitee,这里先安装一个Gitee插件以便使用码云的WebHook功能触发构建操作

如果你正在使用Github,系统已经安装了Github插件;如果正在使用Gitlab等其他托管平台也可以搜索对应的插件使用

点击左侧的系统管理按钮,然后点击插件管理按钮

切换到可选插件选项卡,在搜索框中输入gitee,勾选Gitee插件然后点击Download now and install after restart

勾选安装完成后重启Jenkins(空闲时),等待下载完成后Jenkins自动重启安装插件

当Jenkins重启完成之后再次进入系统管理,然后进入系统配置

找到Gitee配置,参考Gitee Jenkins插件文档完成码云接入

由于Jenkins默认使用密码为adminjenkins账户执行命令,如果担心部分命令权限不够可以参考这里此篇问答的中文翻译将Jenkins默认执行用户更改为root

配置CI任务

重新进入首页控制台,点击左上角的新建任务

输入自定义的任务名称,并选中构建一个自由风格的软件项目,点击确定创建任务

第一栏为任务描述,可以自由发挥

第二栏为源码管理,我的源码仓库是公开的所以直接用了https协议,如果为私有仓库请自行添加证书

第三栏构建触发器中勾选Gitee webhook 触发构建,可选WebHook 密码

复制这里出现的WebHook链接备用,例如图中的https://jenkins.edgeless.top/gitee-project/Kanuo%20blog

如果需要配置密码,点击右侧生成按钮可以生成随机密码,同样将其复制备用

跳过第四栏,在第五栏中点击增加构建步骤 - 执行shell,填入以下命令

需要提前安装yarn和hexo-cli

# 安装依赖
/usr/local/bin/yarn

# 构建Hexo
/usr/local/bin/hexo g

# 清空生产环境文件夹
rm -rf /www/wwwroot/www.edgeless.top

# 将新版构建移动至生产环境文件夹
mv ./public/ /www/wwwroot/www.edgeless.top/

点击最下方的保存按钮保存配置,点击左侧的立即构建尝试执行构建任务,观察是否存在报错

配置Gitee WebHook

进入你的源码仓库,点击管理 - WebHook,点击添加 WebHook

URL填入之前复制的请求地址,如果有密码也填入,然后点击添加

此时码云会发送一条测试请求,可以在项目面板中查看是否出现了这一请求

正常情况下这一请求是无法正确被构建的,因为测试请求缺少了一些必要信息会导致插件在运行git命令时出错,详情请参考issue,因此只要看到触发即可认为配置完成

尝试在本地更改源码并推送,观察Gitee和Jenkins是否正常工作

此页面内容由Kanuo原创,转载请申明出处
本文链接:https://www.edgeless.top/Hello-CI-%E4%BD%BF%E7%94%A8Jenkins%E8%87%AA%E5%8A%A8%E6%9E%84%E5%BB%BAHexo%E5%8D%9A%E5%AE%A2/