Jenkins实战(四)构建hexo博客

本文主要介绍如何在Jenkins上构建hexo博客。

关键词:Jenkins

使用二进制文件进行构建

需求来源

博客源码是使用git托管在GitHub上的,之前使用的github action服务。由于滥用,github对actions的限制越发严格。

自己有几台闲置的Linux主机,可以拿来构建博客。

jenkins是著名的自动化构建软件,本次就拿构建博客做个小例子。

准备

安装好jenkins的linux服务器,并运行jenkins。

创建项目

名称

这里的名称可以任选。

源码管理

源码管理选择Git,这里写我自己的仓库的链接。

  • 注意Creditials要选择对应协议。如果是ssh协议就选ssh key,如果是https协议且是私有仓库,那就需要personal token。

测试一下是否成功链接上了仓库:

点一下运行,看看最后的结果

设置构建触发器

这里选择轮训的方式:每隔5分钟拉一次,看看有没有更新,如果有更新了就继续运行下面的脚本。

构建环境

这里根据自己的需要选择即可。

构建

这里是整个流程的核心,这里运行bash脚本,执行生成博客静态文件的操作。

首先需要安装好nodejs,然后安装hexo博客工具,这里不再赘述。

这里有个小技巧:一般在主用户上设置的PATH环境变量上在jenkins用户是无法读取的,这里需要在节点配置上设置环境变量:

系统管理→Configure System→环境变量

构建脚本:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#!/bin/bash
cd $WORKSPACE
cp -r /temp/node_modules .
hexo g
if [ $? -ne 0 ]; then
echo "构建失败"
exit 255
fi
git clone https://xxx
if [ $? -ne 0 ]; then
echo "克隆失败"
exit 255
fi
cp -r flyzstu.github.io/.git public
if [ $? -ne 0 ]; then
echo "复制失败"
exit 255
fi
cd public
git config user.name "flyzstu"
git config user.email "flyzstu@gmail.com"
git add .
git commit -m "Jenkins Service Auto Builder at $(date +'%Y-%m-%d %H:%M:%S')"
git push --force --quiet
if [ $? -ne 0 ]; then
echo "推送成功"
exit 255
fi

这里分开构建,国外的使用github pages,国内使用又拍云。

将生成好的静态文件通过upx的cli命令上传到又拍云。

这里主要有一个bash脚本交互输入的用法。

1
2
3
4
5
6
7
8
9
10
11
12
#!/bin/bash
cd $WORKSPACE/public
echo -e "ServiceName\nOperator\nPassword" | upx login
if [ $? -ne 0 ]; then
echo "登录失败"
exit 255
fi
upx sync --strong
if [ $? -ne 0 ]; then
echo "推送UPYUN成功"
exit 255
fi