jenkins是devops神器,本篇文章介绍如何安装和使用 jenkins 部署Spring Boot项目。
为了接近后面的生产环境,我这里使用 Linux 来测试(其实 Windows 也可以安装 Jenkins 的)。
在 win10 上安装 VMware Workstation Pro 虚拟机,使用 NAT 模式(本机和虚拟机都可以上网)。
虚拟机安装 ubuntu16.04 系统。代码是从 Git 上拉取。
1、安装 ssh
查看ip:ifconfig
2、安装 vim
sudo apt-get install vim
3、本地使用 git bash 或者 XShell 等工具ssh 远程连接
示例
ssh -q -l root -p 22 192.168.28.128
4、安装 jdk
sudo apt-get install openjdk-8-jdk
java -version # 查看是否安装成功
且 java 安装目录在 /usr/lib/jvm/java-8-openjdk-amd64
5、安装 maven
版本要求maven3.5.0
wget http://mirror.bit.edu.cn/apache/maven/maven-3/3.5.0/binaries/apache-maven-3.5.0-bin.tar.gz ## 下载
tar vxf apache-maven-3.5.0-bin.tar.gz ## 解压
mv apache-maven-3.5.0 /usr/local/maven3 ## 移动
修改环境变量
在/etc/profile (也有可能是在 ~/.bash_profile)中添加以下几行
记得执行source /etc/profile使环境变量生效。
验证
最后运行mvn -v验证maven是否安装成功
6、安装 Git
sudo apt-get install git # 安装git
git config --global user.name "saysky"
git config --global user.email "847064370@qq.com"
7、关闭防火墙
sudo ufw status # 查看防火墙状态
sudo ufw disable #关闭防火墙
1、在本地完成一个 SpringBoot 的 HelloWorld 项目,提交到码云(gitee.com,主要比 github 访问快点)上
代码地址:https://gitee.com/nicejava/HelloWorld
2、在 Linux 内新建目录
/home/saysky/workspace
/home/saysky/workspace/backup
/home/saysky/workspace/Jenkins-in
3、在 /home/saysky/workspace/Jenkins-in 内创建 stop.sh、replace.sh
stop.sh
replace.sh
注意:这几个文件的创建可以到第五章第7步再做,放在这里是主要是方便以后查看。
下载
cd /opt
wget http://mirrors.jenkins.io/war/2.83/jenkins.war
启动服务
默认启动在8080
java -jar jenkins.war &
启动在指定端口可以
nohup java -jar jenkins.war --httpPort=8080 &
Jenkins 就启动成功了!它的war包自带Jetty服务器
第一次启动Jenkins时,出于安全考虑,Jenkins会自动生成一个随机的按照口令。注意控制台输出的口令,复制下来,然后在浏览器输入密码:
浏览器访问:
因为项目是启动在 ubuntu 系统里,所以我们在外面可以用服务器ip访问
http://192.168.28.128:8080
输入上面的密码
进入用户自定义插件界面,建议选择安装官方推荐插件,因为安装后自己也得安装:
接下来是进入插件安装进度界面:
等待一段时间之后,插件安装完成,配置用户名密码:
进入 系统管理-》全局工具配置
1、设置 jdk(前面安装的java,但是显示不在 jenkins 里的错误,所以这里再手动安装)
2、设置 Git
3、设置 Maven
1、首页点击新建:输入项目名称
下方选择构建一个maven项目,点击确定。
勾选丢弃旧的构建,选择是否备份被替换的旧包。我这里选择备份最近的10个
如果你没有第二个选项,需要安装 Maven Integration plugin 插件
2、勾选丢弃旧的构建,选择是否备份被替换的旧包。我这里选择备份最近的10个
3、源码管理,选择sgit,配置Git相关信息
4、构建环境中勾选“Add timestamps to the Console Output”,代码构建的过程中会将日志打印出来
5、在Build中输入打包前的mvn命令,如:
6、Post Steps 选择 Run only if build succeeds
7、点击Add post-build step,选择 Excute Shell
其中shell命令中的 shell 脚本再第二章已经创建。
保存
点击左侧立即构建
左侧有构建项目状态,如果构建成功会执行我们之前填的 shell 命令,如 java -jar 命令
左侧有构建状态,蓝色表示成功,红色表示失败。
点进去可以查看本次构建信息,点击左侧的控制台日志
里面有从 gitee 拉去项目代码,Maven 打包项目,运行 jar 项目的日志
访问项目,成功!
以后我们频繁更新项目,部署项目就方便多了
一、Linux 环境搭建
为了接近后面的生产环境,我这里使用 Linux 来测试(其实 Windows 也可以安装 Jenkins 的)。
在 win10 上安装 VMware Workstation Pro 虚拟机,使用 NAT 模式(本机和虚拟机都可以上网)。
虚拟机安装 ubuntu16.04 系统。代码是从 Git 上拉取。
1、安装 ssh
- sudo apt-get update # 更新软件源
- sudo apt-get install openssh-server # 安装ssh
- sudo ps -e |grep ssh ## 查询是否启动 ,如果没有启动 sudo service ssh start 启动
- 使用gedit修改配置文件”/etc/ssh/sshd_config” 获取远程ROOT权限
打开”终端窗口”,输入”sudo gedit /etc/ssh/sshd_config“–>回车–>把配置文件中的”PermitRootLogin without-password“加一个”#”号,把它注释掉–>再增加一句”PermitRootLogin yes“–>保存,修改成功
查看ip:ifconfig
2、安装 vim
sudo apt-get install vim
3、本地使用 git bash 或者 XShell 等工具ssh 远程连接
示例
ssh -q -l root -p 22 192.168.28.128
4、安装 jdk
sudo apt-get install openjdk-8-jdk
java -version # 查看是否安装成功
且 java 安装目录在 /usr/lib/jvm/java-8-openjdk-amd64
5、安装 maven
版本要求maven3.5.0
wget http://mirror.bit.edu.cn/apache/maven/maven-3/3.5.0/binaries/apache-maven-3.5.0-bin.tar.gz ## 下载
tar vxf apache-maven-3.5.0-bin.tar.gz ## 解压
mv apache-maven-3.5.0 /usr/local/maven3 ## 移动
修改环境变量
在/etc/profile (也有可能是在 ~/.bash_profile)中添加以下几行
- MAVEN_HOME=/usr/local/maven3
- export MAVEN_HOME
- export PATH=${PATH}:${MAVEN_HOME}/bin
记得执行source /etc/profile使环境变量生效。
验证
最后运行mvn -v验证maven是否安装成功
6、安装 Git
sudo apt-get install git # 安装git
git config --global user.name "saysky"
git config --global user.email "847064370@qq.com"
7、关闭防火墙
sudo ufw status # 查看防火墙状态
sudo ufw disable #关闭防火墙
二、项目准备
1、在本地完成一个 SpringBoot 的 HelloWorld 项目,提交到码云(gitee.com,主要比 github 访问快点)上
代码地址:https://gitee.com/nicejava/HelloWorld
2、在 Linux 内新建目录
/home/saysky/workspace
/home/saysky/workspace/backup
/home/saysky/workspace/Jenkins-in
3、在 /home/saysky/workspace/Jenkins-in 内创建 stop.sh、replace.sh
stop.sh
- # 将应用停止
- #stop.sh
- #!/bin/bash
- echo "Stopping SpringBoot Application"
- pid=`ps -ef | grep hello-world-0.0.1-SNAPSHOT.jar | grep -v grep | awk '{print $2}'`
- if [ -n "$pid" ]
- then
- kill -9 $pid
- fi
replace.sh
- #replace.sh 用于将上次构建的结果备份,然后将新的构建结果移动到合适的位置
- #!/bin/bash
- # 先判断文件是否存在,如果存在,则备份
- file="/www/server/workspace/autumn-0.0.1-SNAPSHOT.jar"
- if [ -f "$file" ]
- then
- mv /home/saysky/workspace/hello-world-0.0.1-SNAPSHOT.jar.`date +%Y%m%d%H%M%S`
- fi
- mv /root/.jenkins/workspace/HelloWorld/target/hello-world-0.0.1-SNAPSHOT.jar /home/saysky/workspace/hello-world-0.0.1-SNAPSHOT.jar
注意:这几个文件的创建可以到第五章第7步再做,放在这里是主要是方便以后查看。
三、jenkins 安装
下载
cd /opt
wget http://mirrors.jenkins.io/war/2.83/jenkins.war
启动服务
默认启动在8080
java -jar jenkins.war &
启动在指定端口可以
nohup java -jar jenkins.war --httpPort=8080 &
Jenkins 就启动成功了!它的war包自带Jetty服务器
第一次启动Jenkins时,出于安全考虑,Jenkins会自动生成一个随机的按照口令。注意控制台输出的口令,复制下来,然后在浏览器输入密码:
浏览器访问:
http://localhost:8080/
因为项目是启动在 ubuntu 系统里,所以我们在外面可以用服务器ip访问
http://192.168.28.128:8080
输入上面的密码
进入用户自定义插件界面,建议选择安装官方推荐插件,因为安装后自己也得安装:
接下来是进入插件安装进度界面:
等待一段时间之后,插件安装完成,配置用户名密码:
四、 Jenkins 系统配置
进入 系统管理-》全局工具配置
1、设置 jdk(前面安装的java,但是显示不在 jenkins 里的错误,所以这里再手动安装)
2、设置 Git
3、设置 Maven
五、部署项目
1、首页点击新建:输入项目名称
下方选择构建一个maven项目,点击确定。
勾选丢弃旧的构建,选择是否备份被替换的旧包。我这里选择备份最近的10个
如果你没有第二个选项,需要安装 Maven Integration plugin 插件
2、勾选丢弃旧的构建,选择是否备份被替换的旧包。我这里选择备份最近的10个
3、源码管理,选择sgit,配置Git相关信息
4、构建环境中勾选“Add timestamps to the Console Output”,代码构建的过程中会将日志打印出来
5、在Build中输入打包前的mvn命令,如:
- clean install -Dmaven.test.skip=true -Ptest
6、Post Steps 选择 Run only if build succeeds
7、点击Add post-build step,选择 Excute Shell
其中shell命令中的 shell 脚本再第二章已经创建。
- cd /home/saysky/Jenkins-in
- sh stop.sh
- sh replace.sh
- BUILD_ID=dontKillMe nohup java -jar /home/saysky/workspace/helloworld-0.0.1-SNAPSHOT.jar &
保存
六、构建项目
点击左侧立即构建
左侧有构建项目状态,如果构建成功会执行我们之前填的 shell 命令,如 java -jar 命令
左侧有构建状态,蓝色表示成功,红色表示失败。
点进去可以查看本次构建信息,点击左侧的控制台日志
里面有从 gitee 拉去项目代码,Maven 打包项目,运行 jar 项目的日志
访问项目,成功!
以后我们频繁更新项目,部署项目就方便多了
2019年08月08日 01:43:08
按照 你的还有错误啊,可以看下吗? 2019-08-06 02:23:23.683+0000 [id=37] WARNING h.p.t.TimestamperBuildWrapper$ConsoleLogFilterImpl#decorateLogger: File already exists: /root/.jenkins/jobs/demo/builds/28/timestamper/timestamps java.io.IOException: File already exists: /root/.jenkins/jobs/demo/builds/28/timestamper/timestamps at hudson.plugins.timestamper.io.TimestampsWriter.(TimestampsWriter.java:96) at hudson.plugins.timestamper.TimestamperBuildWrapper$ConsoleLogFilterImpl.decorateLogger(TimestamperBuildWrapper.java:117) at jenkins.tasks.SimpleBuildWrapper.decorateLogger(SimpleBuildWrapper.java:193) at hudson.maven.MavenBuild$ProxyImpl2.(MavenBuild.java:600) at hudson.maven.MavenModuleSetBuild$MavenModuleSetBuildExecution.doRun(MavenModuleSetBuild.java:733) at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:504) at hudson.model.Run.execute(Run.java:1815) at hudson.maven.MavenModuleSetBuild.run(MavenModuleSetBuild.java:543) at hudson.model.ResourceController.execute(ResourceController.java:97) at hudson.model.Executor.run(Executor.java:429) 2019-08-06 02:23:53.719+0000 [id=37] WARNING hudson.Proc$LocalProc#join: Process leaked file descriptors. See https://jenkins.io/redirect/troubleshooting/process-leaked-file-descriptors for more information java.lang.Exception at hudson.Proc$LocalProc.join(Proc.java:335)
2019年11月05日 18:02:06
解决了吗 我也是
2018年11月23日 10:43:39
写的很好 :mrgreen: