—-慢慢来比较快,虚心学技术—-
**
Jenkins官网https://jenkins.io/zh/
Jenkins是什么?
Jenkins是一款开源 CI&CD 软件,用于自动化各种任务,包括构建、测试和部署软件。
Jenkins 支持各种运行方式,可通过系统包、Docker 或者通过一个独立的 Java 程序等方式运行
部署准备
jdk安装:linux安装及配置JDK
maven安装:linux安装及配置Maven
git安装(可选):linux安装及配置Git
一、下载Jenkins的war包到/opt/jenkins目录下
mkdir /opt/jenkinswget http://mirrors.jenkins.io/war-stable/latest/jenkins.war
二、更改Jenkins的工作目录
Jenkins的默认工作目录是/root/.jenkins,我们将其工作目录定义到/opt/jenkins/.jenkins隐藏目录下,便于管理
mkdir /opt/jenkins/.jenkins

配置环境变量
vim /etc/profile
末尾添加如下配置JENKINS_HOME:
export JENKINS_HOME=/opt/jenkins/.jenkins

使环境变量生效:
source /etc/profile
三、启停Jenkins
启动Jenkins
nohup java -jar /opt/jenkins/jenkins.war
Jenkins默认端口是8080,如果想用其他端口可以指定端口启动,此处指定使用9090端口启动,—httpPort指定启动端口,&表示后台启动
nohup java -jar /opt/jenkins/jenkins.war --httpPort=9090 &

初始化启动时生成的密钥及密钥所在文件位置

启动后查看进程
ps -ef|grep jenkins

关闭jenkins进程
pkill -f jenkins
重启jenkins
我们将重启jenkins的命令封装成一个sh文件与jenkins.war放到一起,这样就可以不用每次都输入那么长的命令,也可以避免端口变动引起冲突
touch restart.sh
vim restart.sh
键入如下命令后保存
pkill -f jenkins
sleep 1
nohup java -jar /opt/jenkins/jenkins.war --httpPort=9090 &
tail -f nohup.out

重启jenkins:
chmod 755 restart.sh
sh restart.sh
四、访问Jenkins
开放服务器防火墙9090端口供外部访问
firewall-cmd --zone=public --add-port=9090/tcp --permanent
重启防火墙
systemctl restart firewalld.service
查看防火墙开放端口
firewall-cmd --list-port

浏览器访问:http://服务器ip:9090
五、初始配置Jenkins
1、将初始启动时生成的管理员密码粘贴到网页上的输入框:
cat /opt/jenkins/.jenkins/secrets/initialAdminPassword


2、安装基本插件
上述步骤点击继续后进入选择jenkins插件安装的页面

此处选择安装jenkins推荐的插件,安装进行中
在安装配置完成后可以在插件管理器中安装其他插件**
3.创建管理员账户,点击保存并完成

4.配置jenkins路径(建议使用默认值)

5.重启jenkins

欣赏重启的律动

6、重启成功后刷新进入登录页面,填写刚才设置的管理员账户

登录成功进入jenkins的面板

六、jenkins系统管理
点击左侧菜单 Manage Jenkins 进入系统管理页面

1.安装额外所需插件
系统管理页面点击Manage Plugins进入插件管理页

可选插件Tab勾选如下插件:
Job Configuration History:jenkins配置当中的后悔药,如果你更改了某个配置,但是现在又想更改回去,没有备份而且忘了,那么可以使用这个插件。
Build Trigger Badge:可以自定义Jenkins主题的插件。
Simple Theme:能够在项目视图首页展示项目构建人的插件。
Maven Integration:提供maven项目的任务构建和配置
**



点击底部直接安装

安装插件中,安装完成后重启jenkins

重启后进入插件管理页,可点击已安装插件tab,查看方才的插件是否安装完成
**
2.工具配置
在系统配置页点击/Global Tool Configuration选项进入工具配置页面
**

Maven配置文件配置
该配置用于配置maven的settings.xml文件位置
有两个选择框,每个选择框有两个选项,第一个选项使用默认maven的settings.xml文件,第二个选项是使用自定义的settings.xml文件
此处我们可以指向我们的安装mavne的settings.xml文件
/opt/maven/conf/settings.xml
JDK配置
该配置用于配置jenkins使用的jdk,默认使用服务器配置的JAVA_HOME,即如果服务器配置了JAVA_HOME环境变量,则不需要配置该项
**
此处示例填写JAVA_HOME
/opt/java
取消勾选自动安装选项

Git配置
该配置用于配置jenkins使用的git,如果使用svn则不配置此项,默认使用服务器配置的GIT_HOME,即如果服务器配置了JAVA_HOME环境变量,则不需要配置该项
此处示例填写指向git运行文件:**
/opt/git/bin/git
取消勾选自动安装选项

Maven配置
该配置用于配置jenkins使用的maven,默认使用服务器配置的MAVEN_HOME,即如果服务器配置了MAVEN_HOME环境变量,则不需要配置该项
**
此处示例填写指向maven安装目录:
/opt/maven
取消勾选自动安装选项

七、新建任务(与github关联)
1.点击新建任务,进入新建任务页面

2.填写任务名称及任务类型,此处选择Maven项目类型(必须安装先前的Maven Intergration插件,否则此处不会出现maven项目类型)**

3.配置任务信息(此处仅配置打包项目的任务)
General 填写任务描述
勾选Discard old builds ,如果不配置,系统默认保存每次构建的文件365天,文件堆积导致内存爆炸
源码管理** 配置github仓库地址、分支及登录凭据

构建触发器 用于配置如何触发构建
此处由于我们需要控制构建,直接勾选第一项即可

构建环境 构建时对构建环境的操作
此处勾选每次构建开始之前清空工作空间

Pre Steps 构建之前的操作

Build 核心配置,构建操作
Root Pom: 根pom文件
Goals and options: 执行构建时对maven的操作
此处填写如下内容:清除原有依赖包重新依赖,并跳过测试
clean package -Dmaven.test.skip=true

点击高级设置,勾选使用自定义工作空间,将构建打包的内容放到如下目录下:
/myproject/application/springclouddemo
同时配置使用maven的settings配置文件
其余配置使用默认即可
Post Steps 构建成功之后的操作
八、启动构建任务
上述步骤完成后我们已经配置创建了一个用于打包github上的SpringCloudDemo项目的任务 ,此时回到Jenkins面板
可以看到该任务的具体信息(此处由于本人测试所以存在历史数据)

点击列表中的SpringCloudDemo_Build任务链接,进入任务详情面板
默认显示状态信息,即历史构建状态信息

修改记录 展示github项目的历史提交合并记录

工作空间 展示任务构建的工作目录,即项目打包后的内容

模块 展示所打包项目的项目结构

Job Config History 任务的配置更改历史

Build Now 启动任务,构建项目(打包)
启动任务会在构建历史面板显示当前构建记录

点击该记录可以查看当前构建详情:
默认显示状态集,即目标项目每个模块的构建状态

变更记录 展示上次构建之后,到本次构建 的git提交合并记录

控制台输出 输出本次任务执行的日志,可以文本方式查看
编辑编译信息 编辑本次构建的名称和描述,默认为编译序号(如#6)
**
项目打包完成后查看输出日志

前往服务器的任务工作空间查看项目信息
cd /myproject/application
ls

查看springclouddemo目录下的内容,和github上的项目结构一致
cd springclouddemo
ls


打包好的jar包在每个moudle的target目录中
cd springcloud-eureka
ls

ls target

至此,SpringCloudDemo_Build任务构建成功
此外,jenkins并不是只能持续集成部署,还可以帮助启动服务和执行特定命令
创建任务:
配置描述
配置构建时的操作,选择执行shell
此处仅配置测试redis是否启动命令,正式使用时可替换启动springboot服务命令
ps -ef|grep redis

保存后启动任务,查看输出日志

前往服务器认证:

此处提供启动springboot服务的基本命令示例:
切记:**#表示注释,#!并不是注释,而是指此脚本使用/bin/sh 来执行
#!/bin/sh
project=服务名称
jarName=jar包名称
pathName=根路径
pid=`ps -ef | grep $jarName | grep -v grep | awk '{print $2}'`
if [ -n "$pid" ]
then
kill -9 $pid
echo "杀死存在进程"
fi
BUILD_ID=dontKillMe
echo "执行"
nohup>>$pathName/$project.out java -Xms128m -Xmx256m -jar $pathName/$project/target/$jarName --spring.profiles.active=beta &
tail -f $pathName/$project.out
echo "启动成功!"
例:
#!/bin/sh
project=springcloud-eureka
jarName=springcloud-eureka.jar
pathName=/myproject/application/springclouddemo
echo "开始构建"
pid=`ps -ef | grep $jarName | grep -v grep | awk '{print $2}'`
if [ -n "$pid" ]
then
kill -9 $pid
echo "杀死存在进程"
fi
BUILD_ID=dontKillMe
echo "执行"
nohup>>$pathName/$project.out java -Xms128m -Xmx256m -jar $pathName/$project/target/$jarName --spring.profiles.active=beta &
echo "启动成功!"
如有贻误,还请评论指正

