【Jenkins】持续集成工具安装及部署
一、简介
Jenkins:是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作。
持续集成:开发者可以频繁的将代码发送至主干,并进行自动化测试;
持续交付:在持续集成的基础上,将代码部署到预生产环境;
持续部署:随时deliver给客户,并且是自动化的;
二、安装前部署
1、安装jdk
JDK安装及配置【Windows】:https://www.cnblogs.com/phoenixy/p/15619690.html
JDK安装及部署【Linux】:
# 解压文件 > tar -zxvf jdk-8u121-linux-x64.tar.gz # 方法一:配置jdk环境变量 > vim /etc/profile export JAVA_HOME=/usr/local/解压目录名称 export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/jre/lib/rt.jar export PATH=$JAVA_HOME/bin:$PATH
# 方法二:建立软连接 > ln -sv jdk1.8.0_121/ jdk1.8 ## 配置文件 > vim /etc/profile.d/java.sh export PATH=$PATH:/usr/local/java1.8/bin
# 立即生效配置文件 > source /etc/profile # 验证是否成功 > java -version
2、安装maven
Maven安装及配置【Win】:https://www.cnblogs.com/phoenixy/p/16293562.html
Maven安装及配置【Linux】
# 解压文件到maven目录 > tar -zxvf apache-maven-3.6.0-bin.tar.gz # 方法一:配置jdk环境变量 > vi /etc/profile # 添加 MAVEN_HOME=/usr/local/apache-maven-3.8.5 PATH=$MAVEN_HOME/bin:$PATH export MAVEN_HOME PATH # 方法二:建立软连接 > ln -sv apache-maven-3.6.0/ maven ## 配置文件 > vim /etc/profile.d/maven.sh export PATH=$PATH:/usr/local/maven/bin # 立即生效配置文件 > source /etc/profile # 验证是否成功 > mvn -version
三、安装Jenkins
1、下载地址:http://mirrors.jenkins.io/war-stable/2.32.3/
2、war包安装执行以下命令,默认端口8080
java -jar jenkins.war
Tips:可以修改为其他端口,war包也可以放到tomcat里启动
3、rpm安装
4、访问地址:本机IP:8080
复制红色路径在服务器上找到并打开是密码
Tips:密码在:initialAdminPassword
5、自己选择安装 [select plugin to install] 或 跳过插件安装 [skip plugin installations]
6、创建jenkins用户,即登录使用的账户
7、开始使用Jenkins
四、Jenkins界面配置
1、系统管理->全局安全配置
2、系统配置->全局工具配置[global tool configuration]
配置maven-默认(或maven-家目录)
配置 JDK-家目录
* 配置 GIT-家目录
3、系统管理->插件管理->可选插件
安装相对应的git,ssh,gitlab等插件
全部安装或者选择需要的插件安装
4、查看安装好的插件 publish over ssh
5、插件安装完成重启Jenkins生效
五、配置要上传的服务器SSH
1、在jenkins服务器上生成秘钥,然后利用秘钥要进行免密登录
# Jenkins服务器执行,一直回车密码为空 > ssh-keygen -t rsa
在/root/.ssh/下生成的两个文件id_rsa(私钥)和id_rsa.pub(公钥)
2、将公钥的内容写进测试服务器的 /root/.ssh/authorized_keys文件中( 如果没有就新建一个)
<Tips:也可以写在公私钥同级目录?>
3、系统管理->系统设置->Publish over SSH
Passphrase:指在生成秘钥的时候设置的密码(密码为空则忽略)
path to key:指私钥的位置/root/.ssh/id.rsa
key:指私钥的内容 path to key 和key任选其一即可
name:指你要远程到tomcat的名称 【可以写服务器IP及服务】
hostname:指测试服务器的ip
username:指测试服务器的用户 【eg:root】
remote directory:指要放到测试服务器的目录 (tomcat的部署目录或者新建一个Jenkins专属目录)
【eg:/home/usr/Jenkins】
<Tips:点击高级,勾选使用密码,填写测试服务器密码,也可以修改端口号>
配置完成 ,点击test configuration 测试是否连接成功
六、Maven项目配置
Local Maven Repository : Default (~/.m2/repository) (选择这个)
执行者数量:5 (任意配置)
生成前等待时间:5(任意配置)
SCM重试次数:2(任意配置)
Default View:All
七、连接GitLib
1、新建一个job,自定义任务名称(如:环境_服务名称_项目名称_服务器IP等等)
<Tips: 已有项目可以在下方复制位置输入复制任务关键字选择下拉中的复制任务>
2、点击确定,进入源码管理界面
描述可以填写git上的项目地址等备注信息
3、源码管理->git
repository url :gitlab仓库的http地址
credentials:指信任
Branch Specifier (blank for 'any'):填写要部署的gitlib上的项目分支
方法一:在gitlab中添加jenkins的公钥 ,在图中的key中填写jenkins服务器的公钥,title处填写jenkins
方法二:url中填写http://用户名:密码@ip,credentials填写gitlib的用户名/密码
4、源码管理->构建触发器
勾选Build whenever a SNAPSHOT dependency is built (生成SNAPSHOT依赖项时生成)
或全部不勾选
勾选 Build when a change is pushed to GitLab. GitLab CI Service URL时需要配置 gitlib
5、源码管理->构建
(这里选择maven构建)
RootPom: pom.xml 根目录打包;服务名/pom.xml 单独打包
Goals and options:maven命令
<Tips:clean 清理; install 安装;-Dmaven.test.skip=true 不执行测试用例,也不编译测试用例类;>
<命令后可以加: -P uat,表示使用uat环境的配置文件 但是pom.xml中需要包含以下内容>
<profiles> <profile> <id>dev</id> <properties> <envddd>dev</envddd> </properties> </profile> <profile> <id>test</id> <properties> <envddd>test</envddd> </properties> </profile> <profile> <id>uat</id> <properties> <envddd>uat</envddd> </properties> </profile> <profile> <id>prod</id> <properties> <envddd>prod</envddd> </properties> </profile> </profiles>
6、源码管理->构建后操作
Name:选择配置好的服务器名称
source files:填写想要传到远程服务器的东西 ,可以是目录、war包、jar包等都可以
【即maven打包完成后在Jenkins服务器上的东西,相当于Jenkins的workspace路径】
Remove prefix:指当把war包传到服务器的时候去掉source files处填写的war包之前的路径
【eg:当sf = service/target/** , rp = service/target 】
remove directory: 是指远程到测试服务器的目录 【Tips:系统设置处已经配置时此处可以直接调用,也可以添加子目录】
【 eg:ssh服务器配置的remote directory= /home/usr/Jenkins 此处填写= servicetarget
完整目录则为:/home/usr/Jenkins/servicetarget/】
exec command:指传过去包之后执行的命令,或调用部署脚本
-
- Linux命令
sh /home/usr/jenkins/DeployScript/service.sh
-
service.sh 脚本
# 先停止服务 sudo service 服务名 stop # 将Jenkins打包文件 强制复制到服务路径下 cp -f /home/usr/Jenkins/servicetarget/xx.jar /home/usr/xxservice/xx.jar # 将复制后的jar包赋权限 sudo chmod 777 /home/usr/xxservice/xx.jar ## 等等其它操作 如备份脚本或者创建文件夹 # 启动服务 sudo service 服务名 start
- Linux命令
<Tips:其它情况根据项目需要测试服务器上可能增加服务的脚本或配置文件等其它操作>
7、点击应用并保存
八、部署服务
1、登录 Jenkins,查看任务列表
<Tips:不需要修改分支等操作,可直接点击构建图标>
2、点击任务名称,进入任务面板
3、需要修改项目分支部署,点击配置->源码管理-> Branch Specifier,填写gitlib分支名称
4、应用-保存,点击立即构建,任务面板 Build History显示正在构建及构建完成信息
5、点击原点或者#编号或倒三角-控制台输出,查看构建日志
6、构建状态结果 如下
构建中 圆球闪烁,且显示构建进度条
7、构建完成,打开测试服务器服务日志查看
Jenkins 官网:https://www.jenkins.io/zh/download/
Jenkins安裝参考:https://blog.51cto.com/liujingyu/2328995
自动化集成参考:https://www.cnblogs.com/lidong94/p/7427923.html
如果万事开头难 那请结局一定圆满 @ Phoenixy
-------------------------------------------------------------------------------------