Jekins自动部署测试环境搭建实录

Jekins自动部署测试环境搭建实录

利用春节长假,研究了搭建Jekins+GitLab+IDEA自动部署环境。基本工作流程如下:
Jekins自动部署测试环境搭建实录_第1张图片

目前还只是完成了测试环境的持续集成。因为生产环境的上线要通过测试和验收等环节,不能完全自动部署。
整个搭建过程一波三折,遇到好多问题,逐一解决,最后也遗留了一些待进一步研究和思考的问题。简单记录一下整个过程,以备日后使用时查阅。

一、申请GitLab账户

首先需要申请GitLab账户,URL如下:
https://gitlab.com/users/sign_up
1.1
首先输入个人基本信息,需要注意的是,开始用的是sina邮箱,结果提示

The email address provided is not from an allowed domain

换用hotmail邮箱就可以了。密码用的是多年以前在摩托罗拉时使用的密码。
单击Register按钮,打开Create your group页面,这里创建了一个Morningstar的组,单击Create Group按钮,完成建组。打开创建第一个项目页面。这里创建了一个Hello World(图中有误)项目,项目的URL如下,后面会用到:
https://gitlab.com/johney2008/HelloWorld
Jekins自动部署测试环境搭建实录_第2张图片
Jekins自动部署测试环境搭建实录_第3张图片

二、安装IDEA

这里选择IDEA作为开发工具,Spring Boot作为开发框架。首先记录安装IDEA得到过程,访问如下URL可以选择下载各种版本的IDEA,
https://www.jetbrains.com/idea/download/other.html
Jekins自动部署测试环境搭建实录_第4张图片

这里选择下载IntelliJ IDEA Ultimate 2020.3.2 for Windows,得到ideaIU-2020.3.2.exe。
安装的过程略去。安装完成后,运行IDEA。会弹出激活IDEA的对话框。选择Evaluate for
free,然后单击下面的Evaluate按钮,打开插件中心。
Jekins自动部署测试环境搭建实录_第5张图片

三、创建示例项目

运行IDEA,如果打开默认项目,则从菜单File/Close Project将其关闭。
Jekins自动部署测试环境搭建实录_第6张图片

单击New Project按钮,打开新建项目对话框。

Jekins自动部署测试环境搭建实录_第7张图片

在左侧导航栏中选择 Spring Initilizer,然后单击Next按钮。打开输入项目属性窗口。
Jekins自动部署测试环境搭建实录_第8张图片

JDK选择8,其他保持默认值。
Jekins自动部署测试环境搭建实录_第9张图片

单击Next按钮,打开选择依赖的窗口。
Jekins自动部署测试环境搭建实录_第10张图片

选择Spring Web,然后单击Next按钮。打开输入项目名称的窗口。
Jekins自动部署测试环境搭建实录_第11张图片

项目名称使用HelloWorld,项目位置使用默认即可。单击Finish按钮结束创建示例项目。
待项目所需的资源都拉取成功后,在左侧窗格中选择Package。然后右击com.example.demo,在弹出菜单中依次选择New ->Package,打开选择目标目录对话框,选择src\main\java\com\example\demo。

Jekins自动部署测试环境搭建实录_第12张图片

Jekins自动部署测试环境搭建实录_第13张图片

单击OK按钮,打开New Package对话框。输入com.example.demo.controllers,然后回车。在左侧窗格中com.example.demo下面会出现一个controllers目录。
2.23

Jekins自动部署测试环境搭建实录_第14张图片

右击controllers,在弹出菜单中选择New -> Java Class,打开New Java Class对话框。
Jekins自动部署测试环境搭建实录_第15张图片

Jekins自动部署测试环境搭建实录_第16张图片

创建HelloController类,代码如下:

package com.example.demo.controllers;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("/hello")
public class HelloController {
    @RequestMapping("/")
    public  String index(){
        return "Hello world";
    }
}

以此demo程序作为搭建Jekins自动部署环境的Demo。
运行项目,然后打开浏览器,访问如下URL:

http://localhost:8080/hello/

结果如下:
Jekins自动部署测试环境搭建实录_第17张图片

四、IDEA提交代码至GitLab

接下来在IDEA中配置如何对接GitLab,首先配置Maven。在IDEA中选择File->Settings,打开Settings窗口,搜索Maven,如果需要配置 User settings file。
Jekins自动部署测试环境搭建实录_第18张图片

C:\Users\Administrator.m2\settings.xml里面已经配置好了阿里云仓库,代码如下:



	C:\Users\Administrator\.m2\repository
    
        
	  
      alimaven  
      aliyun maven  
      http://maven.aliyun.com/nexus/content/groups/public/  
      central          

        
        
            repo1
            central
            Human Readable Name for this Mirror.
            http://repo1.maven.org/maven2/
        
    
        
        
            repo2
            central
            Human Readable Name for this Mirror.
            http://repo2.maven.org/maven2/
        
	
	
		nexus-aliyun
		*
		Nexus aliyun
		http://maven.aliyun.com/nexus/content/groups/public
		
     
	
	
    
        docker-aliyun-my
        13691237015
        lxl991101
        
            [email protected]
        
    


然后在菜单中依次选择VCS->Create Git Repository,打开Create Git Repository窗口。选择前面创建的项目路径,默认为当前打开的项目。
Jekins自动部署测试环境搭建实录_第19张图片

单击OK按钮。此时项目中未提交的类和目录会变成红色,同时菜单中多出一个Git菜单项。
Jekins自动部署测试环境搭建实录_第20张图片

选择Git->Commit,打开Commit to master窗格
Jekins自动部署测试环境搭建实录_第21张图片

选中待提交的文件,在文本框中填写以下测试内容:
第一次提交
单击Commit按钮,弹出指定Git User Name的对话框。
Jekins自动部署测试环境搭建实录_第22张图片

填写Name和Email后单击Set and Commit按钮。
选择Git->Push,打开登录gitlab.com对话框。

Jekins自动部署测试环境搭建实录_第23张图片

输入用户名和密码,然后单击Log In按钮,打开Push Commit窗口。
Jekins自动部署测试环境搭建实录_第24张图片

可以看到之前提交的文件,单击Push按钮,推送提交的文件。
访问GitLab仓库,可以看到推送的文件

Jekins自动部署测试环境搭建实录_第25张图片

五、 在CentOS下安装Maven

在/usr/local/目录下下载Maven安装包:
cd /usr/local
wget http://mirrors.cnnic.cn/apache/maven/maven-3/3.3.9/binaries/apache-maven-3.3.9-bin.tar.gz
tar xf apache-maven-3.3.9-bin.tar.gz
编辑/etc/profile,将maven的路径添加到全局变量PATH中。然后编译/etc/profile

source /etc/profile

执行下面命令查看Maven的版本。

mvn -v

结果如下:

Apache Maven 3.3.9 (bb52d8502b132ec0a5a3f4c09453c07478323dc5; 2015-11-11T00:41:47+08:00)
Maven home: /usr/local/apache-maven-3.3.9
Java version: 1.8.0_275, vendor: Red Hat, Inc.
Java home: /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.275.b01-0.el7_9.x86_64/jre
Default locale: zh_CN, platform encoding: UTF-8
OS name: "linux", version: "3.10.0-1160.11.1.el7.x86_64", arch: "amd64", family: "unix"

六、 在CentOS下安装Jenkins的一次失败的经历

这是一次失败的经历,主要为了以后避免遇到同样的问题。
首先确认已经安装JDK,。如果没有,可以执行如下命令安装:

yum install -y java

从官网下载jenkins的rmp包,然后安装:

wget http://pkg.jenkins-ci.org/redhat-stable/ jenkins-2.176.2-1.1.noarch.rpm

不过命令下载太慢,于是改用迅雷下载上面的链接,下载好后,在CentOS创建/usr/local/jekins目录,将jenkins-2.176.2-1.1.noarch.rpm上传至该目录。
在CentOS中执行:

mkdir /var/cache/jenkins
mkdir /var/log/jenkins
mkdir /var/lib/jenkins
cd /usr/local/jekins
rpm -ivh jenkins-2.176.2-1.1.noarch.rpm

配置jenkis的端口

 vi /etc/sysconfig/jenkins

这里保持8080.
启动jenkins

service jenkins start/stop/restart

 安装成功后Jenkins将作为一个守护进程随系统启动
 系统会创建一个“jenkins”用户来允许这个服务,如果改变服务所有者,同时需要修改/var/log/jenkins, /var/lib/jenkins, 和/var/cache/jenkins的所有者
 启动的时候将从/etc/sysconfig/jenkins获取配置参数
 默认情况下,Jenkins运行在8080端口,在浏览器中直接访问该端进行服务配置
 Jenkins的RPM仓库配置被加到/etc/yum.repos.d/jenkins.repo
执行netstat -ntlp命令确认8080已经开放。
Jekins自动部署测试环境搭建实录_第26张图片

process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2pvaG5leWxlZTIwMDg=,size_16,color_FFFFFF,t_70#pic_center)

在浏览器中访问 如下URL:

http://192.168.1.101:8080/

打开解锁Jekins页面,
Jekins自动部署测试环境搭建实录_第27张图片

首次进入会要求输入初始密码。初始密码在:/var/lib/jenkins/secrets/initialAdminPassword
查看后粘贴到密码框里。然后单击“继续”按钮,打开自定义Jenkins页面。
Jekins自动部署测试环境搭建实录_第28张图片

选择“Install suggested plugins”安装默认的插件,下面Jenkins就会自己去下载相关的插件进行安装。

Jekins自动部署测试环境搭建实录_第29张图片

但是很多组件没有安装成功。还是手动安装吧。
安装失败后,单击继续按钮(忘记截图了)。打开创建第一个管理员用户窗口,
Jekins自动部署测试环境搭建实录_第30张图片

创建的第一个管理员就用admin了,密码123456。单击使用admin账户继续。打开实例配置窗口。
Jekins自动部署测试环境搭建实录_第31张图片

保持默认配置,单击保存并完成按钮。打开Jenkins已经就绪窗口。

Jekins自动部署测试环境搭建实录_第32张图片

第2天再次访问Jenkins网页,发现用admin/123456居然不能登录了。于是尝试使用admin+初始密码,登录成功。奇怪
进入Jenkins主页。
Jekins自动部署测试环境搭建实录_第33张图片

在左侧导航栏中选择Manage Jenkins,打开管理Jenkins页面。
Jekins自动部署测试环境搭建实录_第34张图片

其中列出了很多依赖错误。
总结一下,就是升级Jenkins。综合比较后,决定升级到最新版本。百度后,确定升级到2.273-1.1版本,下载链接如下:
http://pkg.jenkins-ci.org/redhat-stable/jenkins-2.7.3-1.1.noarch.rpm
下载后将jenkins-2.7.3-1.1.noarch.rpm上传至CentOs的/usr/local/jekins目录。
然后登录CentOS,卸载旧版本,进行安装。

yum remove jenkins
cd /usr/local/jekins
rpm -ivh jenkins-2.7.3-1.1.noarch.rpm
systemctl restart jenkins.service

再刷新Jenkins主页,结果报错
Jekins自动部署测试环境搭建实录_第35张图片

百度到的解决方案是删除所有Jenkins插件。

cd /var/lib/jenkins/plugins
rm -Rf *

/var/lib/jenkins 是JENKINS_HOME的值。 可以在/etc/sysconfig/jenkins中查看。
再次刷新页面,报错

Unable to read /var/lib/jenkins/config.xml

直接删除/var/lib/jenkins/config.xml即可。可以进入Jenkins主页了。报错都消失了。
Jekins自动部署测试环境搭建实录_第36张图片

单击“管理插件”超链接,打开“插件管理”页面。
6.12

选择“可选插件”,在“过滤”文本框中输入“Maven Integration plugin”,居然没有找到,于是又停滞了下来。
Jekins自动部署测试环境搭建实录_第37张图片

百度到的解决方案是自己下载插件,在高级安装中上传安装。
访问如下URL可以选择下载maven插件
http://updates.jenkins-ci.org/download/plugins/maven-plugin/

Jekins自动部署测试环境搭建实录_第38张图片

经测试,3.7版本可以用。单击2.14超链接,下载Maven插件,得到maven-plugin.hpi。
最开始下载了3.9版本的Maven插件,后面出不来maven项目,折腾了半天。
返回插件管理页面,选择“高级”选项卡
Jekins自动部署测试环境搭建实录_第39张图片
Jekins自动部署测试环境搭建实录_第40张图片

选择刚刚下载的Maven插件,然后单击“上传按钮”,开始安装Maven插件。

安装完成后,选择页面下面的“安装完成后重启Jenkins(空闲时)”复选框,重启Jenkins。

6.17

重启Jenkins后,再次进入“插件管理”页面,选择“已安装”选项卡,可以看到Maven Integration plugin。
Jekins自动部署测试环境搭建实录_第41张图片
接下来安装GitHub插件,一样需要手动下载。
http://updates.jenkins-ci.org/download/plugins/github/
先选择1.14.0下载吧。不高不低。先试试再说。

七、基于失败经历对Jenkins进行全局配置。

登录Jenkins管理页面,选择“系统管理”->Gobal Tool Configuration,打开Gobal Tool Configuration页面,对JDK和mvn进行配置。取消选择“自动安装”,分别填写JAVA_HOME和MAVEN_HOME
6.19
在CentOS中定位JAVA_HOME的方法如下:
找到java

whereis java

结果如下:

java: /usr/bin/java /usr/lib/java /etc/java /usr/share/java /usr/share/man/man1/java.1.gz

查看第一个位置:

ll  /usr/bin/java

结果如下:

lrwxrwxrwx. 1 root root 22 2月  11 09:10 /usr/bin/java -> /etc/alternatives/java

发现/usr/bin/java是一个链接
继续查看/etc/alternatives/java

ll /etc/alternatives/java

结果如下:

[root@centos1 ~]# ll  /etc/alternatives/java
lrwxrwxrwx. 1 root root 73 2月  11 09:10 /etc/alternatives/java -> /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.282.b08-1.el7_9.x86_64/jre/bin/java

/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.282.b08-1.el7_9.x86_64就是JAVA_HOME
在CentOS中定位MAVEN_HOME的方法如下:
找到mvn

whereis mvn

结果如下:

mvn: /usr/local/apache-maven-3.3.9/bin/mvn.cmd /usr/local/apache-maven-3.3.9/bin/mvn

/usr/local/apache-maven-3.3.9就是MAVEN_HOME

八、基于失败经历配置自动化部署

·首先需要创建一个新项目。返回Jenkins主页,在左侧导航条中单击“新建”菜单,打开新建Jenkins任务的页面:
Jekins自动部署测试环境搭建实录_第42张图片

输入item name暂定为Hello World,选择“构建一个maven项目”,然后单击OK按钮。打开任务详情页面,结果F12报错,各种查阅找不到原因。猜测是Maven Integration Plugin的版本不匹配。果断降级,之后果然不报错了。现在Maven Integration Plugin的版本是2.14,不再升级了。
Jekins自动部署测试环境搭建实录_第43张图片

选中“源码管理”,结果发现没有git
折腾了一天安装GitHub插件,结果不管怎么安装都有问题,创建项目报错。

偶然发现2.263.4是没有问题的,于是决定从头再来…好几天白费了。就得出一个结论:用Jenkins2.263.4是可以的。

九、重新开始,在CentOS下安装Jenkins

经过一次失败的经历,卸载Jenkins,从头再来。

rpm -e jenkins

删除遗留文件:

find / -iname jenkins | xargs -n 1000 rm -rf

首先确认已经安装JDK,。如果没有,可以执行如下命令安装:

yum install -y java

(1)首先尝试按照官网的步骤操作。各种无法连接。于是还是采用rpm方式安装。
从官网下载jenkins的rmp包,然后安装:

mkdir /usr/local/jenkins
cd /usr/local/jenkins
wget http://ftp-chi.osuosl.org/pub/jenkins/redhat-stable/jenkins-2.263.4-1.1.noarch.rpm
mkdir /var/cache/jenkins
mkdir /var/log/jenkins
mkdir /var/lib/jenkins
cd /usr/local/jekins
rpm -ivh jenkins-2.263.4-1.1.noarch.rpm

配置jenkis的端口

 vi /etc/sysconfig/jenkins

这里保持8080.
启动jenkins

service jenkins start/stop/restart

 安装成功后Jenkins将作为一个守护进程随系统启动
 系统会创建一个“jenkins”用户来允许这个服务,如果改变服务所有者,同时需要修改/var/log/jenkins, /var/lib/jenkins, 和/var/cache/jenkins的所有者
 启动的时候将从/etc/sysconfig/jenkins获取配置参数
 默认情况下,Jenkins运行在8080端口,在浏览器中直接访问该端进行服务配置
 Jenkins的RPM仓库配置被加到/etc/yum.repos.d/jenkins.repo
执行netstat -ntlp命令确认8080已经开放。
Jekins自动部署测试环境搭建实录_第44张图片

在浏览器中访问 如下URL:

http://192.168.1.101:8080/

打开解锁Jekins页面,

Jekins自动部署测试环境搭建实录_第45张图片

首次进入会要求输入初始密码。初始密码在:/var/lib/jenkins/secrets/initialAdminPassword
查看后粘贴到密码框里。然后单击“继续”按钮,打开自定义Jenkins页面。
Jekins自动部署测试环境搭建实录_第46张图片

选择“Install suggested plugins”安装默认的插件,下面Jenkins就会自己去下载相关的插件进行安装。

Jekins自动部署测试环境搭建实录_第47张图片

安装成功后,直接打开创建第一个管理员用户窗口,
Jekins自动部署测试环境搭建实录_第48张图片

创建的第一个管理员就用johney了,密码123456。单击保存并“完成”。打开实例配置窗口。
Jekins自动部署测试环境搭建实录_第49张图片

保持默认配置,单击“保存并完成”按钮。打开Jenkins已经就绪窗口。

Jekins自动部署测试环境搭建实录_第50张图片

进入Jenkins主页。
Jekins自动部署测试环境搭建实录_第51张图片

在左侧导航栏中选择Manage Jenkins,打开管理Jenkins页面。
Jekins自动部署测试环境搭建实录_第52张图片

单击“Manage Plugins”超链接,打开“插件管理”页面。
Jekins自动部署测试环境搭建实录_第53张图片

选择“已安装”搜索GitHub,找到已经安装了GitHub创建。
Jekins自动部署测试环境搭建实录_第54张图片

但是没有找到Maven Integration plugin。需要手动安装。
选择“可选插件”,在“过滤”文本框中输入“Maven Integration plugin”,回车后选中Maven Integration,单击“直接安装”按钮。
Jekins自动部署测试环境搭建实录_第55张图片

安装完成后,选择页面下面的“安装完成后重启Jenkins(空闲时)”复选框,重启Jenkins。

在这里插入图片描述

重启Jenkins后,再次进入“插件管理”页面,选择“已安装”选项卡,可以看到
Maven Integration plugin。
Jekins自动部署测试环境搭建实录_第56张图片

十、对Jenkins进行全局配置

登录Jenkins管理页面,选择“系统管理”->Gobal Tool Configuration,打开Gobal Tool Configuration页面,对JDK和mvn进行配置。取消选择“自动安装”,分别填写JAVA_HOME和MAVEN_HOME
Jekins自动部署测试环境搭建实录_第57张图片

在CentOS中定位JAVA_HOME的方法如下:
找到java

whereis java

结果如下:

java: /usr/bin/java /usr/lib/java /etc/java /usr/share/java /usr/share/man/man1/java.1.gz

查看第一个位置:

ll  /usr/bin/java

结果如下:

lrwxrwxrwx. 1 root root 22 2月  11 09:10 /usr/bin/java -> /etc/alternatives/java

发现/usr/bin/java是一个链接
继续查看/etc/alternatives/java

ll /etc/alternatives/java

结果如下:

[root@centos1 ~]# ll  /etc/alternatives/java
lrwxrwxrwx. 1 root root 73 2月  11 09:10 /etc/alternatives/java -> /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.282.b08-1.el7_9.x86_64/jre/bin/java

/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.282.b08-1.el7_9.x86_64就是JAVA_HOME
Jekins自动部署测试环境搭建实录_第58张图片

git配置保持默认即可。
Jekins自动部署测试环境搭建实录_第59张图片

在CentOS中定位MAVEN_HOME的方法如下:
找到mvn

whereis mvn

结果如下:

mvn: /usr/local/apache-maven-3.3.9/bin/mvn.cmd /usr/local/apache-maven-3.3.9/bin/mvn

/usr/local/apache-maven-3.3.9就是MAVEN_HOME
Jekins自动部署测试环境搭建实录_第60张图片

十一、配置自动化部署

进入正题,配置Jenkins的自动化部署。也就是自动从源码库拉取代码,编译并发布。

11.1 创建新项目

·首先需要创建一个新项目。返回Jenkins主页,在左侧导航条中单击“新建”菜单,打开新建Jenkins任务的页面:
Jekins自动部署测试环境搭建实录_第61张图片

输入item name暂定为Hello World,选择“构建一个maven项目”,然后单击“确定”按钮。打开任务详情页面。
Jekins自动部署测试环境搭建实录_第62张图片

11.2 配置Git

选中“源码管理”,选择Git,将《四、IDEA提交代码至GitLab》中提交项目的GitLab URL添加到Repository URL文本框中,具体如下:

https://gitlab.com/johney2008/HelloWorld.git

获取Repository URL的方法如下:
(1)访问GitLab的项目页面,

https://gitlab.com/johney2008/HelloWorld

(2)单击Clone按钮,然后单击Clone with HTTPS后面的 按钮,可以将Repository URL复制出来。
Jekins自动部署测试环境搭建实录_第63张图片

在“源码管理”页面中,,单击Credentials后面的添加按钮,选择Jenkins。打开“添加凭据”对话框。添加GitLab的用户名和密码然后单击“添加”按钮。然后在Credentials下拉框中选择刚刚的配置。

11.4

Jekins自动部署测试环境搭建实录_第64张图片

11.3 构建项目

保存项目,然后单击页面左上角的项目名Hello World 超链接,打开项目Hello World的详情页。单击左侧导航栏中的Build Now,可以开始构建项目。
Jekins自动部署测试环境搭建实录_第65张图片

每次构建都会生成一个编号,#1/#2或者#3……
单击编号可以查看构建的详情。
Jekins自动部署测试环境搭建实录_第66张图片

Jekins自动部署测试环境搭建实录_第67张图片

单击左侧导航条中的“控制台输出”菜单项,可以实时查看构建的过程。
由于默认是从中央仓库获取依赖包的,很慢,只有几K/s。
Jekins自动部署测试环境搭建实录_第68张图片

于是查阅资料配置Jenkins的Maven从阿里云(或私服)下载。方法如下:
(1)准备好Maven配置文件settings.xml,代码如下:






  
   /var/lib/jenkins/.m2/repository

  

  

  
  
    
  

  
  
    
  

    
		
	

  
  
    	 
	  
     			alimaven 
     			aliyun maven 
     			http://maven.aliyun.com/nexus/content/groups/public/ 
     		central         
    
  
  
    
            XaNexus
            
                
                    XaNexus
                    http://maven.aliyun.com/nexus/content/groups/public
                    
                        true
                        daily
                        warn
                    
                    
                        true
                        fail
                    
                
            
            
                
                    XaNexus
                    http://maven.aliyun.com/nexus/content/groups/public
                    
                        true
                        warn
                    
                    
                        true
                        fail
                    
                
            
        
		   
        jdk1.8    
           
            true    
            1.8   
            
           
            1.8    
            1.8    
            1.8   
           
      
  

 
  
    XaNexus
  


注意,节点定义本地保存依赖包的目录,这里使用默认的Maven仓库目录 /var/lib/jenkins/.m2/repository。中定义了名为alimaven的阿里云镜像,如果使用私服可以在此处配置。
将次settrings.xml上传至CentOS的/var/lib/jenkins/.m2目录,重启Jenkins服务。
回到Jenkins管理后台,重新构建项目,这次很快就成功了。
Jekins自动部署测试环境搭建实录_第69张图片

11.4 构建触发器

前面构建项目时手动操作的。但是如果每次都手动构建,就失去了用Jenkins的意义。
可以配置构建触发器,指定定时发起构建。
在配置项目的页面中选择“构建触发器”选项卡,切换到构建触发器区域。
Jekins自动部署测试环境搭建实录_第70张图片

共有6个配置构建触发器的选项。记录一下这些选项的含义。
(1)Build whenever a SNAPSHOT dependency is built
只要项目所依赖的快照项目被构建了,就启动构建。通常用于底层项目构建时自动构建上层应用。选中此选项后,Jenkins会自动解析每个项目的pom.xml,分析项目之间的依赖关系。

(2)Schedule build when some upstream has no successful builds
如果选中此选项,即使上游项目没有成功构建,JKenkins也会启动构建项目;
如果没有选中此选项,则上游项目没有成功构建时,JKenkins不会启动构建项目;
这可以保证项目有序地构建。
(3)触发远程构建 (例如,使用脚本)
如果需要远程触发构建,可以勾选此选项。然后在后面填写一个Token,随便什么字符串都可以,例如123456。
Jekins自动部署测试环境搭建实录_第71张图片

这样就可以通过下面的URL触发项目的构建:
JENKINS_URL/job/项目名/build?token=TOKEN_NAME
这样就可以让程序员提交后自己触发项目的构建了。很有用
(4)Build after other projects are built
其他指定的项目构建后构建。选中需要输入依赖的项目名。
Jekins自动部署测试环境搭建实录_第72张图片

(5)Build periodically
定期构建。选中后需要输入日程表。可以使用一个字符串定义日程表,语法如下:


第一个表示分钟,取值0~59
第二个
表示小时,取值0~24
第三个表示一个月的第几天,取值1~31
第四个
表示第几月,取值1~12
第五个*表示一周中的第几天,取值0~7,其中0和7代表的都是周日
例如,找了一些例子:
H 6-18/2 * 上午6点到下午六点期间的每隔2个小时 构建一次
H H/2 *每隔2小时构建一次
12 15 * 每天下午15点12分触发构建
20 16 15 每个月的15号下午16点20分构建一次
10-15 每个月的10号到15号某个时间都会被构建一次
H/3 12 H(1-6) * 1到6月里随机的某个月的12号每隔3小时构建一次

每隔5分钟构建一次
H/5 * * * *
每两小时构建一次
H H/2 * * *
每天中午12点定时构建一次
0 12 * * *
每天下午6点下班前定时构建一次
0 18 * * *
工作日(周一到周五)早上9点定时构建一次
0 9 * * 1-5

测试了一个每5分钟构建一次的。成功了。
11.14

Jekins自动部署测试环境搭建实录_第73张图片

(6)GitHub hook trigger for GITScm polling
当GitHub有变化是自动构建。
(7)Poll SCM
定时检查源码变更。如果有更新就checkout最新code下来,然后执行构建动作

11.5 推送jar包到远程服务器

前面已经实现了自动构建,生成的jar包就在Jenins服务器的/var/lib/jenkins/workspace/Hello World/target目录下,Hello World是Jenkins项目名。
Jekins自动部署测试环境搭建实录_第74张图片

最后一步就是将jar包推送到远程服务器。要实现此功能,需要安装远程发布插件:“Publish Over SSH”,方法如下:
进入Jenkins插件管理页面,在可选插件中搜索Publish Over SSH,然后安装。

Jekins自动部署测试环境搭建实录_第75张图片

重启Jenkins后,可以在已安装列表中找到Publish Over SSH插件。
Jekins自动部署测试环境搭建实录_第76张图片

在左侧导航栏中单击Manage Jenkins,然后在右侧单击System Configuration。
Jekins自动部署测试环境搭建实录_第77张图片

打开系统配置页面。在页面底部找到Publish over SSH栏目。单击SSH Servers后面的新增按钮,添加一个SSH服务器。单击“高级”按钮输入密码
Jekins自动部署测试环境搭建实录_第78张图片

Jekins自动部署测试环境搭建实录_第79张图片

填写完毕后,单击TestConfiguration按钮测试连接。
Jekins自动部署测试环境搭建实录_第80张图片

打开Jenkins项目Hello World,单击“构建环境”,里滚动页面到Build栏目,早Goal and options文本框中填写:
clean package -U -DskipTests=true -P xlTest
单击“构建后操作”选项卡,在Add post-build step下拉框中选择Send files or execute commands over SSH。
Jekins自动部署测试环境搭建实录_第81张图片

Jekins自动部署测试环境搭建实录_第82张图片

为了验证推送的功能,在项目Hello World的主页中单击 Build Now菜单,会在左侧下面出现一个新的构建记录,点进去看控制台,可以看到传送文件的记录。
Jekins自动部署测试环境搭建实录_第83张图片

登录推送的服务器,发现在/root下创建了配置推送的目录,本以为指定推送到/root目录,结果在/root下又建了一个root目录。
11.26

可以通过命令将次文件复制到指定的位置,然后在重启对应的服务。这里只做了一次简单的测试,在Exec Command文本框中填写如下命令:
cp /root/root/demo-0.0.1-SNAPSHOT.jar /usr/local/jenkins
构建完成后,可以在远程服务器的/usr/local/jenkins目录下找到发布的jar包
11.27

这次先到这里吧。

十二、下一步的工作

本次研究历经数天,遇到很多问题,最终都一一解决,一度推翻重来,几经反复终于搭建了用于测试环境的Jenkins自动部署环境。但是还有一些工作没有逐一去做。记录一下:
(1)没有在测试环境下为应用创建服务,也就是没有验证完整的流程,虽然这个过程应该没有问题;
(2)没有研究从测试环境到生产环境的发布流程。此流程应该需要人为触发,不能自动构建。日后可以参照这篇文章继续研究。
https://www.cnblogs.com/kevingrace/p/6022447.html

https://www.jianshu.com/p/a1451a4d672d?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

https://my.oschina.net/u/1791512/blog/1552790

估计Jenkins自动部署流程,即使节后上线,也是从测试环境开始,一步一步的推进。
(3)自动部署流程与项目的版本控制有着密切的关联,需要进一步了解Git版本控制规范。
https://www.cnblogs.com/wssdx/p/12061384.html
https://jingyan.baidu.com/article/e52e36155d9ee040c60c51e0.html
https://blog.csdn.net/yuruixin_china/article/details/79061999
说到Git,记录一个小插曲。早上起来看构建历史记录,发现失败了,看日志报如下错误:

git fatal: index file smaller than expected

只有在Jenkins的项目目录下删除.git目录,然后重置git.。登录Jenkins服务器,执行如下命令。

cd /var/lib/jenkins/workspace/Hello\ World
rm -Rf .git
git reset

再执行构建,就成功了
(4)如果在生产环境部署,还需要考虑一个问题,就是一旦发布的版本有问题,就需要回滚。参考
https://www.cnblogs.com/EasonJim/p/5945266.html
(5)实际工作环境上线时需要考虑Maven私服。
https://www.cnblogs.com/ligh-test/p/7839463.html

路漫漫其修远兮,吾将上下而求索…

你可能感兴趣的:(maven,jenkins,centos,devops)