前面介绍了如何使用jenkins来部署博客,很是方便,写完博客-》提交github-》登录jenkins-》点击发布。但是我们能不能再省事一点呢?我写好后提交代码可以让博客自动发布呢?
jenkins作为一个持续集成的工具,自然是提供了丰富的功能实现我们的想法,我们采用webhook的方式,无论你在哪里,当有提交代码到github的时候,github会发送个请求到jenkins,然后jenkins接受这个请求开始构建我们的项目。我们一步步来。
github webhook配置
在配置项目的webhook之前,我们先添加一个用户访问的token(personal access token)。在github主页Settings
-> Developer settings
:
然后点击Personal access tokens
-> Generate new token
:
如图,填写title,勾选repo
和admin:repo_hook
权限,创建好后会出现一个token,这个token只展示一次,所以需要备份好,留着我们在jenkins里面配置用。
然后我们去github项目里面配置webhook,[项目仓库地址]
-> Settings
-> Webhooks
-> Add webhook
:
如图,填写对应的jenkins的访问路径+github-webhook/
,注意这里的斜杠/
不可少。保存后,webhook添加成功。
ok,我们github这边的配置就完了,再去看jenkins那边的配置。
jenkins 配置
首先我们需要使用前面在github上添加的personal access token
来给jenkins添加github server
,
点击左侧系统管理
,然后点击中间系统设置
:
找到github:
点击jenkins后,复制我们的personal access token填写到表单里面:
保存后,在系统设置里面的github选择我们添加好的令牌:
然后进入项目的配置页面,配置项目的自动构建:
保存,我们的配置就完毕了。
验证是否自动构建
接下来我们去编辑器里面编辑项目的文件,然后提交,push到github,再回到jenkins的项目页面:
如图,可以看到webhook的log日志,确实是自动发布了的。
那么接着问题来了,我写博客并不是一下子写完的,有时候没写完,放在草稿里面,这时候也要提交的,但这种提交并不需要发布hexo,但目前来看每次提交jenkins都在进行发布,那我们怎么避免呢?
多分支管理
目前我们是只有一个默认的master
分支,我们的jenkins项目设置的也是从这个分支上拉取。那么我们需要创建开发分支。日常开发的时候在开发分支上进行,然后需要发布的时候,从开发分支上合并到master
分支,合并之后会自动触发webhook然后通知jenkins自动构建。
创建开发分支:
1 | git checkout -b dev |
上面第一步创建了本地的开发分支dev,第二步将开发分支推送到github。这样我们去github上看,目前是有两个分支:主分支master
,开发分支dev
。
然后我们提交一个记录:
1 | git cm 'test auto deploy' |
然后可以在github项目的仓库里面pull request
里面点击new pull request
:
然后选择 master
< dev
:
最后选择合并:
这样,合并好之后可以看到jenkins检测到了webhook,会开始自动构建。合并过程也可以不在github里面进行,也可以在命令行里面直接合并分支。完美~
通过上面的这些配置,现在就可以本地提交,然后合并,jenkins自动构建,不用再进服务器手动构建了,省时省力~