使用Jenkins持续集成Hexo博客

骚年,来一个自动集成的Hexo博客吧😉

为何要用自动集成,固然是为了减小重复操做啦(懒是第一辈子产力!)html

例如在工做中,写完业务开发,将代码提交到Git以后,还要本身打包、部署,一两次还行,若是屡次提交代码,而后重复的打包、部署,那不得浪费不少时间,因此咱们须要自动集成CI,帮助咱们解决代码提交后的事情~~linux

因此此次学习了用的比较多的Jenkins工具啦git


大体思路

  1. 写文章
  2. 推送到github的
  3. Jenkins收到钩子请求,进行构建
  4. 执行Shell脚本,在服务器中生成hexo静态文件
  5. 启动服务

Jenkins简介

Jenkins官网github

Build great things at any scale

The leading open source automation server, Jenkins provides hundreds of plugins to support building, deploying and automating any project.
复制代码

正如它所说的:做为领先的开源自动化服务器,Jenkins提供数百个插件来支持构建,部署和自动化任何项目。例如Git插件、自动部署的Deploy插件、代码质量Sonar等等好用的插件,给Jenkins增添了丰富的功能。web

此次搭建的Demo是使用Jenkins给Hexo进行持续集成(固然若是小伙伴不想专门弄一个服务器搭建Hexo,能够直接使用GitHub爸爸现成的GitHub page~~)shell


前置工做

  • 安装Jenkins(Linux的yum就很好用啦:yum install -y jenkins) 安装Jenkins后,要记得在插件界面安装git plugin~~ 而后能够经过systemctl start jenkins,在linux机器上做为服务来启动npm

  • 安装Hexo(详细查看官网,还能选择不少好看的样式~)bash

$ npm install hexo-cli -g
$ hexo init blog 
$ cd blog
$ npm install
$ hexo server
复制代码

这时能够查看服务器对应的ip加上默认的端口号4000,查看搭建出来的Hexo默认界面~服务器

  • 在服务器安装Git服务,生成公钥(~/.ssh/id_rsa.pub)和私钥(~/.ssh/id_rsa)。hexo

  • 在GitHub的用户Setting中添加公钥(这个你们应该都知道,就不贴图了)

  • Jenkins凭据中,配置秘钥(注意,是秘钥,路径~/.ssh/id_rsa)


在GitHub中生成token

  • 在我的setting中,添加用户访问的token(personal access token),路径setting->Developer setting->Person access token

记得将待会生成的密码保存下来,由于下一次你就看不见了=-=

  • 在项目中添加webhooks,路径:repo->settings->webhooks
    这个钩子待会在Jenkins中会使用到

Jenkins新建Job以及GitHub新建仓库

  • 在GitHub中新建两个一个仓库(个人叫test_blog)

  • 在Jenkins中的【系统配置】->【全局配置】添加GitHub服务器

  • 新增的凭据选择

  • 在Jenkins中,新建一个自由风格的任务(高度可配置化hhh)

  • 配置Git项目地址

  • 在原代码配置项中,选择git,将项目地址填上,还有选择上一步填写的凭据~

  • 填写构建触发器

  • 编写Execute执行脚本

写完脚本后点击保存,以后基本就是一劳永逸,不须要再去关注写完文章的后续操做~~


测试结果

在本地编写文章后,推送到github,点击查看Jenkins的github hook输出记录,能够发现已经在构建了,只要你的shell脚本写的对,那就能直接观察到服务器上的博客内容成功更新~~


踩坑记录

在webhooks上弄了好久,一开始在github的项目里配置好钩子,而后想直接按照第二条参考资料中设置,直接覆盖全部钩子,后来提示403访问错误

因而就参考了第一条和第三条参考资料,配置了person access token,在构建中选择了secret text才算成功配置好钩子~~

PS: 这样会将本身的md文件暴露在公共github中,实际上是不妥的,比较建议是本地打包,而后将生成好的界面拷贝到本身的服务器,具体能够看下第一条参考资料。(其实就是看你shell脚本怎么写啦✧(≖ ◡ ≖✿)嘿嘿)


我的博客项目地址

但愿各位帮忙点个star,给我加个小星星✨


参考资料

  1. hexo jenkins自动部署博客
  2. 用Jenkins自动部署hexo搭建的GitHub静态博客
  3. 开启用户鉴权时 Jenkins 触发远程构建时的 403 问题
相关文章
相关标签/搜索