—-慢慢来比较快,虚心学技术—-
**

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目录下

  1. mkdir /opt/jenkins
  2. wget http://mirrors.jenkins.io/war-stable/latest/jenkins.war

图片.png

二、更改Jenkins的工作目录

Jenkins的默认工作目录是/root/.jenkins,我们将其工作目录定义到/opt/jenkins/.jenkins隐藏目录下,便于管理

mkdir /opt/jenkins/.jenkins

图片.png

配置环境变量

vim /etc/profile

末尾添加如下配置JENKINS_HOME:

export JENKINS_HOME=/opt/jenkins/.jenkins

图片.png

使环境变量生效:

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 &

图片.png

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

图片.png

启动后查看进程

ps -ef|grep jenkins

图片.png

关闭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

图片.png

重启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

图片.png

浏览器访问:http://服务器ip:9090

图片.png

五、初始配置Jenkins

1、将初始启动时生成的管理员密码粘贴到网页上的输入框:

cat /opt/jenkins/.jenkins/secrets/initialAdminPassword

图片.png

图片.png

2、安装基本插件

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

图片.png

此处选择安装jenkins推荐的插件,安装进行中

图片.png
在安装配置完成后可以在插件管理器中安装其他插件**

3.创建管理员账户,点击保存并完成

图片.png

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

图片.png

5.重启jenkins

图片.png

欣赏重启的律动

图片.png

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

图片.png

登录成功进入jenkins的面板

图片.png

六、jenkins系统管理

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

图片.png

1.安装额外所需插件

系统管理页面点击Manage Plugins进入插件管理页

图片.png

可选插件Tab勾选如下插件:

Job Configuration History:jenkins配置当中的后悔药,如果你更改了某个配置,但是现在又想更改回去,没有备份而且忘了,那么可以使用这个插件。

Build Trigger Badge:可以自定义Jenkins主题的插件。

Simple Theme:能够在项目视图首页展示项目构建人的插件。

Maven Integration:提供maven项目的任务构建和配置

图片.png**

图片.png

图片.png

图片.png

点击底部直接安装

图片.png

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

图片.png

重启后进入插件管理页,可点击已安装插件tab,查看方才的插件是否安装完成
**

2.工具配置

在系统配置页点击/Global Tool Configuration选项进入工具配置页面

图片.png**

图片.png

Maven配置文件配置

该配置用于配置maven的settings.xml文件位置

有两个选择框,每个选择框有两个选项,第一个选项使用默认maven的settings.xml文件,第二个选项是使用自定义的settings.xml文件

此处我们可以指向我们的安装mavne的settings.xml文件

/opt/maven/conf/settings.xml

图片.png

JDK配置

该配置用于配置jenkins使用的jdk,默认使用服务器配置的JAVA_HOME,即如果服务器配置了JAVA_HOME环境变量,则不需要配置该项
**
此处示例填写JAVA_HOME

/opt/java

取消勾选自动安装选项

图片.png

Git配置

该配置用于配置jenkins使用的git,如果使用svn则不配置此项,默认使用服务器配置的GIT_HOME,即如果服务器配置了JAVA_HOME环境变量,则不需要配置该项

此处示例填写指向git运行文件:**

/opt/git/bin/git

取消勾选自动安装选项

图片.png

Maven配置

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

/opt/maven

取消勾选自动安装选项

图片.png

七、新建任务(与github关联)

1.点击新建任务,进入新建任务页面

图片.png

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

图片.png

3.配置任务信息(此处仅配置打包项目的任务)

General 填写任务描述
勾选
Discard old builds ,如果不配置,系统默认保存每次构建的文件365天,文件堆积导致内存爆炸

图片.png

源码管理** 配置github仓库地址、分支及登录凭据

图片.png

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

图片.png

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

图片.png

Pre Steps 构建之前的操作

图片.png

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

clean package -Dmaven.test.skip=true

图片.png

点击高级设置,勾选使用自定义工作空间,将构建打包的内容放到如下目录下:

/myproject/application/springclouddemo

同时配置使用maven的settings配置文件

图片.png

其余配置使用默认即可

Post Steps 构建成功之后的操作

图片.png

八、启动构建任务

上述步骤完成后我们已经配置创建了一个用于打包github上的SpringCloudDemo项目的任务 ,此时回到Jenkins面板

可以看到该任务的具体信息(此处由于本人测试所以存在历史数据)

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

图片.png

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

图片.png

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

图片.png

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

图片.png

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

图片.png

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

图片.png

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

图片.png

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

图片.png

控制台输出 输出本次任务执行的日志,可以文本方式查看

图片.png

编辑编译信息 编辑本次构建的名称和描述,默认为编译序号(如#6)
**
图片.png

项目打包完成后查看输出日志

图片.png

前往服务器的任务工作空间查看项目信息

cd /myproject/application

ls

图片.png

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

cd springclouddemo
ls

图片.png

图片.png

打包好的jar包在每个moudle的target目录中

cd springcloud-eureka
ls

图片.png

ls target

图片.png

至此,SpringCloudDemo_Build任务构建成功

此外,jenkins并不是只能持续集成部署,还可以帮助启动服务和执行特定命令
创建任务:

图片.png

配置描述

图片.png
配置构建时的操作,选择执行shell

图片.png

此处仅配置测试redis是否启动命令,正式使用时可替换启动springboot服务命令

ps -ef|grep redis

图片.png

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

图片.png

前往服务器认证:

图片.png

此处提供启动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 "启动成功!"

如有贻误,还请评论指正