centos7安装Jenkins+配置spring boot 自动部署(史上最全)

1,057 阅读3分钟

centos7安装Jenkins+配置spring boot 自动部署(史上最全)

一、前言

jenkins是一个霓虹国的大佬(川口耕介)开发的一个开源的持续集成工具,让你从重复的工作中解脱出来(例如拉取源码,打包、编译、部署、重启服务、环境隔离等),享受美滋滋的一键部署的畅快感

Jenkins安装配置的过程中可谓一步一坑,本文主要讲述怎么解决这个过程中『99%的情况下你会遇到的但是99%的文章都不会提及的深坑』。以及后面如何配置spring boot项目的一键部署

本文涉及的环境

  • centos7.2
  • jenkins 2.2
  • java 8
  • maven 3.0
  • git 1.8

二、Jenkins原理

简单了解下Jenkins原理,有助于接下来理解各个安装步骤

在一个软件的部署过程中会涉及到很多软件,例如版本控制的git(svn),构建打包的maven、容器tomcat,语言编译的jdk等等。每个软件都相当于一个齿轮,而Jenkins则像一个中间件,把各个齿轮接驳起来,并带动其他齿轮运转。

三 、 Jenkins所依赖的软件的安装

(下面的软件如果已经安装过,则可跳过)

Java 8 (或更高)

# 获取rpm包
wget --no-cookies --no-check-certificate --header "Cookie:oraclelicense=accept-securebackup-cookie" "http://download.oracle.com/otn-pub/java/jdk/8u131-b11/d54c1d3a095b4ff2b6607d096fa80163/jdk-8u131-linux-x64.rpm"
# 基于rpm包安装
yum -y localinstall jdk-8u131-linux-x64.rpm
# 查看是否安装成功
java -version
# 环境变量配置
nano ~/.bash_profile
# 在最后面加上这两行
export JAVA_HOME=/usr/java/jdk1.8.0_131/
export JRE_HOME=/usr/java/jdk1.8.0_131/jre
# 编译
source ~/.bash_profile
# 查看环境变量是否生效
echo $JAVA_HOME

maven

yum install maven

git

yum install git

四、Jenkins安装

1. 下载安装

sudo wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat/jenkins.repo
sudo rpm --import https://jenkins-ci.org/redhat/jenkins-ci.org.key
# 感谢伟大的**的拦截,这个安装过程巨慢,约需等待二十分钟
sudo yum install jenkins

2. Jenkins常用的几个命令

# 启动
service jenkins start
# 重启
service jenkins restart
# 关闭
service jenkins stop
# 开机自启
systemctl enable jenkins 

3. 修改Jenkins端口号

端口8080比较热门,Jenkins安装版默认也是8080,很容易和其他软件的端口冲突。所以需要修改端口,本文以修改为7575端口为例 备注:本文是通过yum方式安装的。如果直接下载war包安装的配置方式可能有差异

vim /etc/sysconfig/jenkins

# JENKINS_PORT修改为你想要的端口
JENKINS_PORT="7575"

4. 修改初始密码

网上很多文章提到可以通过vim /var/lib/jenkins/secrets/initialAdminPassword来查看初始密码。然后不知道是因为版本的原因亦或是其它原因,这个文件中的密码总是无法登陆。所以需要手动修改为一个已知的密码

# 切换到配置目录
cd /var/lib/jenkins/users/
ls # 会有一个admin_3094158771002410946目录和  users.xml文件
cd  admin_3094158771002410946
vim config.xml

在最下方找到此节点,将passwordHash内容替换为密码 111111的hash值

<hudson.security.HudsonPrivateSecurityRealm_-Details>
      <!-- <passwordHash>#jbcrypt:$2a$10$DYGjZdlJ4CtLcUoNooTqP.xPGW53yiD6qrBCFoA12u55bXQdTkhtu</passwordHash> -->
	  <passwordHash>#jbcrypt:$2a$10$DdaWzN64JgUtLdvxWIflcuQu2fgrrMSAMabF5TSrGK5nXitqK9ZMS</passwordHash>
    </hudson.security.HudsonPrivateSecurityRealm_-Details>

修改后重启Jenkins

# 重启
service jenkins restart

5. 开始访问Jenkins

开启防火墙端口

firewall-cmd --zone=public --add-port=7575/tcp --permanent
# 开启后,一定要记得重启防火墙,否则不会生效
firewall-cmd --reload

浏览器访问此地址

http://${服务器ip}/7575

输入账号密码 admin/111111

之后会遇到一个神坑,提示『Jenkins无法连接到网络』。

出现此错误的原因并不是无法连接到网络,而是https证书搞的鬼

http://{ip}:7575/pluginManager/advanced。 这里面最底下有个【升级站点】,把其中的链接改成http的就好了

# 重启Jenkins
service jenkins restart

6. 插件配置

Jenkins第一次进入推荐安装的插件就默认安装就行。至于java和git、maven接下来需要手动指定 点击左上角下拉菜单,找到『系统管理』,『全局工具配置』(话说这个入口藏得忒深!)

有小伙伴可能会被这两个配置项难住,不知道在怎么找。不用着急,通过这两个命令即可

# 查看 java 目录
echo $JAVA_HOME
/usr/java/jdk1.8.0_131/  #  填入此值即可
# 查看maven目录  
mvn -v
Apache Maven 3.0.5 (Red Hat 3.0.5-17)
Maven home: /usr/share/maven #  填入此值即可 /usr/share/maven
Java version: 1.8.0_131, vendor: Oracle Corporation
Java home: /usr/java/jdk1.8.0_131/jre
# 查看git目录
find / -name 'git'
/etc/selinux/targeted/active/modules/100/git
/etc/bash_completion.d/git
/usr/bin/git # 填入此值即可
# 省略。。。

五、创建任务

1. 点击右上角的创建任务,输入任务名,并选择『构建一个自由风格的软件项目』

2. 勾选『参数化构建过程』,点击点击参数,选择『文本参数』

需要添加四个参数,参数的含义如下

* jar_path :本意是准备项目打包后的jar位置,其实这里是Jenkins工作空间
* spring_profile:这个是读取配置文件前缀,比如dev,test,prod
* jar_name:jar包名称
* project_name:项目名称

3. 添加git源码仓库地址,以及对应的账号密码(或者鉴权key)

4. 点击构建tab,点击增加『构建步骤』→『执行shell』

在里面添加如下命令

mvn clean install -Dmaven.test.skip=true
echo $spring_profile $jar_path $jar_name
cd /usr/local/shell/
sudo ./stop.sh $jar_name
echo "Execute shell Finish"
sudo ./startup.sh $spring_profile $jar_path $jar_name $project_name

5. 上述步骤的命令需要依赖两个shell脚本,需要手动创建并赋予权限,并配置sudo执行无需确认密码。

# 创建存放脚本的目录
mdkir /usr/local/shell

# 创建并设置脚本内容
vim startup.sh
# 脚本内容如下
spring_profile=${1}
jar_path=${2}
jar_name=${3}
project_name=${4}
cd ${jar_path}/${project_name}/target/
echo ${jar_path}/${project_name}/target/
echo nohup java -jar ${jar_name} &
BUILD_ID=dontKillMe nohup java -jar ${jar_name} --spring.profiles.active=${spring_profile} &
# 创建并设置脚本内容
vim stop.sh
# 脚本内容如下
r_name=${1}
echo "Stopping" ${jar_name}
pid=`ps -ef | grep ${jar_name} | grep -v grep | awk '{print $2}'`
if [ -n "$pid" ]
then
   echo "  kill -9 的pid:" $pid
    kill -9 $pid
fi

给脚本添加执行权限和sudo执行免密码确认(这一步很重要,不要遗漏,否则会报sudo: no tty present and no askpass program specified错误

# 添加执行权限
chmod +x startup.sh
chmod +x stop.sh
# sudo执行免密码确认
sudo visudo # 相当于打开了一个vi编辑器
# 在末尾添加内容
jenkins ALL=(ALL) NOPASSWD: ALL
# 重启Jenkins
service jenkins restart

六、 启动任务并查看启动日志

至此大功告成。 如果有报错情况,可以查看启动日志并谷歌,或者留言反馈

七、参考