配置Jenkins实现自动构建

介绍

前面已经搭建好了基本环境,剩下的就是自动构建了,这里就需要使用我们的构建工具Jenkins,Jenkins是一个非常牛逼的东西,它可以实现代码同步构建,当你修改你的代码并传到git时,Jenkins可以自动将你的代码同步到服务器上面,当然这只是Jenkins的基本功能之一,他还有非常多的东西值得我们学习~

搭建环境

  • 服务器2 :Pacificrack 洛杉矶 RAM2G 2C 35GSSD(圣诞机器)18刀
  • 操作系统 :CentOS7.5
  • 部署环境 :LNMP1.6 (我是军哥铁粉) + Java8

服务器1:搭建Jenkins中转服务器,做代码自动构建使用
服务器2:生产环境服务器,实则测试服务器,部署代码使用
服务器3:Gogs服务器,Git版本库服务器,做代码版本控制使用

生产环境搭建

服务器2的生产环境搭建。

生产环境,主要就是LNMP和Java8,LNMP是可选的,看需要部署的程序环境,例如需要部署node.js则只需要node.js环境即可,其他同理,我这边是准备自动部署PHP程序,因此就还是使用LNMP;

Java8是必须的,Jenkins使用SSH连接到服务器时是需要源服务器有Java环境的

安装LNMP

LNMP环境安装教程 : LNMP一键安装包 - 安装教程

安装Java8

Jenkins连接节点的服务器必须安装!其他服务器无需安装!

首先更新 yum 源

1
yum update

安装 jdk1.8

1
yum install java-1.8.0-openjdk java-1.8.0-openjdk-devel

这里注意,是可以选择Java版本的,我这里使用了8所以按照8的方式安装的

可以搜索yum选择需要安装的版本

1
yum search java | grep jdk

一般 使用上面方法安装的Java配置文件都在 /etc/profile

编辑配置

1
vi /etc/profile

在末尾添加 环境变量,注意修改自己的版本号

1
2
3
4
5
JAVA_HOME=/user/lib/jvm/java-1.8.0-openjdk-1.8.0.191.b12-1.el7_6.x86_64
JRE_HOME=$JAVA_HOME/jre
CLASS_PATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
export JAVA_HOME JRE_HOME CLASS_PATH PATH

重置 profile

1
source /etc/profile

查看Java版本

1
java -version

Jenkins配置

安装必要的插件

打开Jenkins登录后 打开 系统管理 - 插件管理 - 可选插件

搜索 安装 以下插件

汉化语言包(可选)

  • Locale plugin
  • Localization: Chinese (Simplified)

Docker容器(可选)

  • Docker Pipeline

远程连接(必须)

  • SSH plugin
  • SSH Slaves plugin
  • Oracle Java SE Development Kit Installer Plugin

Git服务(推荐)

  • GitHub plugin
  • Gogs plugin

推荐安装(可选)

  • bouncycastle API Plugin
  • Branch API Plugin
  • Command Agent Launcher Plugin

插件属于按需配置,不适合自己的插件无需安装

增加节点

增加节点必须要先在节点服务器配置Java环境,参照上面的配置Java8环境配置!
如果没有配置Java环境则会报错!

增加节点必须要有SSH插件,因此如果界面与我不一样请检查自己是否安装了上面的插件

打开Jenkins 系统管理 - 节点管理 - 新建节点

1.png
1.png

新建节点页面如下

2.png
2.png

如果没有设置过凭证则选择添加,界面如下

3.png
3.png

全部设置完点保存,他会自动启动代理节点

首页左下角会显示状态

4.png
4.png

或者在节点管理里面也可以看到

配置Gogs WebHook

根据上一节我们配置好的Gogs,新建一个仓库,这里不多说,直接点加号就行,用过Github的都懂

可以选择公有仓库或者私有仓库,我这里都是私有仓库,也可以使用Gogs的迁移外部仓库功能直接迁移,迁移时可能会出现504错误,这是因为Nginx的反向代理时有超时设置,超过指定时间则直接504,我们在迁移仓库时经常会超时,因此建议修改一下默认超时时间,具体配置可以自行搜索,不多赘述。

找到需要自动构建的仓库,选择 仓库设置 - 管理 Web 钩子 - 添加Web钩子

6.png
6.png

注意:图中红框处的test需要跟后面配置的Jenkins对应,例如我创建的Jenkins任务名为 test 则此处填写test,修改域名为你的Jenkins域名,其他格式一致

注意:图中秘钥可随便填写,记录下来,配置Jenkins任务时会用到

配置Jenkins任务

打开 Jenkins 新建任务,如果以前没有任务则首页会显示 创建一个新任务

5.png
5.png

配置Jenkins任务

7.png
7.png

描述部分可随便填写,这里主要配置一下 Gogs Webhook

勾选 Use Gogs secret,Secret填写上面创建Gogs WebHook时的秘钥

勾选 限制项目的运行节点 ,标签表达式填写你的节点名字,例如我这里的节点名字就是我的服务器ip地址,直接填写ip地址即可

8.png
8.png

源码管理选择Git,Repository URL选择需要自动构建的Git项目地址,http形式的,Credentials处为验证,如果是公共仓库则无需配置,如果是私有库则需要填写登录到 Gogs 的账户和密码,配置与之前的节点配置凭据一样,不多赘述

指定分支填写需要自动构建的分支,我这里填写的是dev分支,用来做开发版测试使用,根据自己情况来即可

配置上线

Nginx配置

由于我创建的节点 目录地址是 /home/wwwroot

在项目自动构建时,则会自动创建目录 /home/wwwroot/workspace/[JOB NAME]
JOB NAME 为 任务名,例如我的 test 则自动创建目录 /home/wwwroot/workspace/test

Nginx则只需要配置 域名解析即可

1
lnmp vhost add
9.png
9.png

按图上配置即可,建议增加SSL证书,增加证书前记得先把域名解析到指定服务器IP上,否则会生成证书失败

记得给文件夹加上权限,755

构建

返回Jenkins,点击立即构建,第一次构建时间可能会长一些,等待即可!

构建完成后则会在 配置的目录下创建workspace目录,并将代码放入 /home/wwwroot/workspace/test 目录中,根据自己的配置自行修改目录

由于我的程序涉及到跨目录访问,因此需要更改 fastcgi.conf 文件,与本文无关这里不多说~

附一张成功截图,由于我这是前后端分离项目,因此没有界面~

10.png
10.png

自动构建

上面已经配置好了自动构建,我们每次合并代码或者提交代码变更到dev分支时,Gogs则会以Webhook的形式将内容推送到Jenkins上面去,实现每次更新代码自动构建服务器代码。

结语

目前搭建好的架构,适合还在开发测试程序的开发小组,配合测试人员使用,也能让产品们在汇报工作进度的时候更得心应手,了解开发进度,当然也不是特别准确的开发进度,摸鱼还是要摸的。后面应该会写一下 Portainer + Swarm 管理Docker集群,慢慢写~