bg-pic

现在看到的这个博客正是通过这套组合拳来进行自动化构建发布的,因此我能很轻松的管理文章,很多写作之外的事情都已经交给了这套组合拳,我只需要专注自己的写作就好了,体验非常棒,如果你也想拥有这种体验,那么就请跟随我一起来了解这背后的原理吧。
我认为技术文章不谈具体的开发环境就是在’耍流氓‘,所以首先列出我在搭建这套博客时的开发环境的相关信息。

  1. 服务器方面,我选用的是阿里云提供的云服务器,操作系统是centos8.3 64位

  2. docker版本是v2.2.1

  3. jenkins是通过docker拉取的镜像构建的,并不是直接安装在宿主机中,镜像仓库为https://registry.hub.docker.com/r/jenkins/jenkins,版本为v2.296

  4. hexo版本为v5.4.0

  5. 代码仓库选用的是github,其他的仓库如gitee、gitlab,流程应该是一致的

  6. 由于阿里云服务器对于端口的访问是有限制的,所以我们得根据需要在后台去开放入方向的端口

环境已经准备好了,接下来就可以正式开始搭建自动化流程了。

搭建jenkins

配置jenkins

接下来需要配置我们的jenkins,由于步骤较多,所以下面我将会把每一个步骤一一罗列出来,尽量不遗漏任何一个细节

在完成上述步骤后,我们终于来到了jenkins的主界面,现在我们准备新建一个项目并用于之后的自动化构建与发布

这是因为nodejs是需要我们额外进行下载安装的,接下来就说明如何在jenkins中安装nodejs插件

在jenkins中安装其他插件的步骤也是一样的:查找插件-下载插件-安装插件-配置插件

现在我们需要进入全局工具配置页,对我们刚刚安装的nodejs插件进行管理

经过上面的步骤,项目其实已经完成构建所必须的配置,但是项目构建出来的产物还需要自动发布才能满足我们的需求。那自动发布这个功能是如何实现的呢?其实是通过一个叫Publish Over SSH的插件实现的,所以我们需要安装这个插件,至于如何安装插件,上文已经叙述过了,这里就不赘述了
安装Publish Over SSH之后,在构建后操作的选项中,就会多出一项Send build artifacts over SSH,但在配置项目的Publish Over SSH之前,我们还需要对全局的Publish Over SSH做些额外的配置,下面会进行说明

  1. source files:这一项是用于配置构建产物的所在路径,路径上下文是项目的根目录
  2. Remove prefix:这一项是用于移除构建产物的路径前缀,例如上一项配置的路径是build/**/*,如果这一项置空,那么最后发布的产物是会包含build这个目录的,如果我们不想要build这一层目录,而是只需要build里面的内容,那么这一项我们就需要填上 build/
  3. Remote directory:这一项是用于指定发布到服务器的路径,需要注意的是这个路径会和之前我们在Publish Over SSH里配置的baseurl进行结合,生成的最终路径才是构建产物将要发布的路径
  4. Exec command:这一项用于指定在构建产物全部发布完毕后需要执行的脚本,这个可以根据自己的需要进行设置

下面是示例:
bg-pic

创建githook

在配置好上文所介绍的配置项后,我们就已经可以通过jenkins去自动构建和发布我们的项目了。但是如果每一次我们都需要去手动点击发布项目,这样也未免太麻烦了点。身为程序员,喜欢’偷懒‘是本能,所以接下来我将介绍如何通过githook来实现推送代码后自动触发构建的效果。这里以github为例,其他的代码管理仓库如gitee,gitlab都是类似的,可以举一反三。
首先选择我们需要进行自动构建发布的项目,然后选择settings,在设置页里找到webhooks,在webhooks界面中就可以管理触发的钩子了。这里我们需要新增一个hook,并将这个hook与我们需要构建的项目进行关联,接下来介绍如何配置这个hook。

通过以上配置,我们就可以实现push代码时触发构建发布项目的目的了。

结语

利用docker+jenkins+githook这套组合拳,我们可以很轻松地实现自动化构建和发布项目的目的,从而大大降低人工维护的成本,最终使我们能更加专注于核心功能的实现。因为我自己也是真切感受到了这套组合拳给我带来的便利,所以将自己的收获整理成这篇文章,这样既可以帮助自己在今后进行回顾,也可以帮助到想要了解自动化构建发布这部分知识的朋友。