Jenkins + Github实现持续化部署个人博客至服务器
前言
我的博客是采用hexo + next + git
实现的,最开始用的是Github,但是碍于速度慢进而转至Gitee,不过随着文章以及图片的越来越多,突然有一天发现在push
代码时总是提示服务器断开连接啥啥啥的··· 刚开始还不知道是什么原因,研究了好久才发现是Gitee限制比较多,一次性不能上传太多文件,最后无奈转回了Github。
转回Github之后又发现Jenkins拉取Gitee与Github的配置有些不同,正好之前没有记录Jenkins如何配置拉取Github,并且配置后出问题网上还没有什么好的解决方法,这次正好记录一下。
Jenkins所需插件
- Github
- Publish Over SSH
获取Github个人访问令牌
1、进入Github,并登录
2、进入设置:Settings > Developer settings > Personal access tokens
3、点击Generate new token
创建个人令牌
4、填写信息:
5、创建之后会显示密钥,此时把密钥保存下来,注意该密钥只会显示这一次哦~ 要是不保存就得删除重新创建了
Jenkins配置Github持续部署
1、Jenkins新建任务
2、配置系统中的Github信息
前往系统管理 > 系统配置 > Github
配置Github信息
然后
添加个人令牌
选择刚刚添加的个人令牌
最后保存即可
3、配置任务信息
1、配置Github仓库
选中Github项目,然后填写仓库地址:
源码管理选择Git,并且按图片要求填写仓库地址:
Git设置处的仓库地址必须加上个人访问令牌,格式:https://个人访问令牌@github.com/liuhaoan/liuhaoan.git
注意:认证选项空着就行了,因为个人访问令牌已经在链接上了
选择分支:
配置Git拉取时的超时时间,防止因为网络问题拉取仓库文件失败:
新增之后填写超时时间,可以多写一点
2、配置Github提交后远程触发Jenkins任务
3、配置构建指令
1、添加本地shell指令执行,对拉取的文件进行打包,打包之后传到服务器中
1 | rm -f $JOB_NAME.tar.gz |
2、用SSH Publishers
插件把打包好的文件传送到服务器中
1 | $JOB_NAME.tar.gz |
3、上传完之后清理之前的文件,并且把新的文件解压出来
1 | rm -rf /var/lib/docker/volumes/nginx_html/_data/liuhaoan/* |
到此就完成了Jenkins + github
的持续部署。
设置Github触发链接
常见问题
RPC failed; curl 56 GnuTLS recv error (-54)
在运行git clone命令时很容易出现这个错误,这是下载的包太大,网速慢超时报错。由于git默认缓存大小不足导致的,使用下面的命令增加缓存大小
1 | git config --global http.postBuffer 524288000 |