使用Jenkins构建、部署spring boot项目
一、环境搭建
本次实验的环境为Ubuntu 16.04,Jenkins 2.8.3
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、本地使用ssh工具或者git bash远程连接
ssh root@47.95.0.243 -p 22
这里推荐一个不错的ssh工具,基于Java开发,叫FinalShell,下载地址http://www.hostbuf.com/。自带加速海外连接功能。
4、安装jdk
sudo apt-get install openjdk-8-jdk
java -version # 查看是否安装成功
openjdk的安装目录在 /usr/lib/jvm/java-8-openjdk-amd64
5、安装maven
最新版本为3.6.0
wget http://apache.communilink.net/maven/maven-3/3.6.0/binaries/apache-maven-3.6.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 中添加以下几行
MAVEN_HOME=/usr/local/maven3 #此处根据你的maven安装地址修改
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 "zsh"
git config --global user.email "43240825@qq.com"
7、关闭防火墙
sudo ufw status # 查看防火墙状态
sudo ufw disable #关闭防火墙
active为开启状态。inactive为关闭状态
8、安装MySQL(非必需)
sudo apt-get update
sudo apt-get install mysql-server
在弹出的页面中输入两次数据库root用户的密码即可。
修复数据库中文乱码问题
修改/etc/mysql/my.cnf,加入下面这几行
[mysqld]
character_set_server=utf8
[mysql]
default-character-set= utf8
[client]
default-character-set = utf8
重启数据库:
service mysql restart
查询数据库字符编码
mysql -uroot -p
show variables like '%character%';
自此中文乱码问题已经修复。
一般阿里云或者腾讯云买的服务器,Ubuntu 16.04 中自带ssh和vim。
二、Jenkins 安装
下载 https://pkg.jenkins.io/debian-stable/
sudo apt-get update
sudo apt-get install jenkins
或者离线下载之后,上传至服务器,此处我放在了 /opt
启动服务
默认启动在8080
java -jar jenkins.war &
启动在指定端口可以
nohup java -jar jenkins.war --httpPort=8080 &
Jenkins 就启动成功了!它的war包自带Jetty服务器
第一次启动Jenkins时,出于安全考虑,Jenkins会自动生成一个随机的按照口令。注意控制台输出的口令,复制下来,然后在浏览器输入密码:
因为项目是启动在 ubuntu 系统里,所以我们在外面可以用服务器ip访问
http://47.95.0.243:8080
此处注意,如果没有给服务器防火墙打开8080端口,是没法访问的。
输入上面的密码
进入用户自定义插件界面,建议选择安装官方推荐插件,因为安装后自己也得安装:
等待一段时间之后,插件安装完成,如果有部分插件未安装成功,不比担心,继续配置用户名密码:
三、Jenkins 配置
进入 系统管理 -> 全局工具配置
1、配置jdk
2、配置git
3、配置maven
四、部署项目
1、首页点击新建:输入项目名称
如果你没有第二个选项,需要安装 Maven Integration 插件
2、勾选丢弃旧的构建,选择是否备份被替换的旧包。我这里选择备份最近的10个
3、源码管理,选择git,配置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
cd /home/admin/Jenkins-in #根据自己stop.sh、replace.sh脚本地址写
sh stop.sh
sh replace.sh
BUILD_ID=dontKillMe nohup java -jar /home/admin/workspace/personal-0.0.1-SNAPSHOT.jar &
#根据自己jar包的名称、地址修改
stop.sh
# 将应用停止
#stop.sh
#!/bin/bash
echo "Stopping SpringBoot Application"
pid=`ps -ef | grep personal-0.0.1-SNAPSHOT.jar | grep -v grep | awk '{print $2}'`
if [ -n "$pid" ]
then
kill -9 $pid
fi #此处personal-0.0.1-SNAPSHOT.jar根据自己的jar包名称修改
replace.sh
#replace.sh 用于将上次构建的结果备份,然后将新的构建结果移动到合适的位置
#!/bin/bash
# 先判断文件是否存在,如果存在,则备份
file="/www/server/workspace/autumn-0.0.1-SNAPSHOT.jar"
if [ -f "$file" ]
then
mv /home/admin/workspace/personal-0.0.1-SNAPSHOT.jar.`date +%Y%m%d%H%M%S`
fi
mv /root/.jenkins/workspace/hello/target/personal-0.0.1-SNAPSHOT.jar /home/admin/workspace/personal-0.0.1-SNAPSHOT.jar #此处 /home/admin/workspace/personal-0.0.1-SNAPSHOT.jar根据自己实际jar包名称和路径修改
此处如果使用windows的notepad++写好之后再上传上去,有可能出现一个错误
stop.sh: Syntax error: end of file unexpected (expecting "then")
解决方案
在vim中修改下文件的格式就好了,直接输入":",然后在":"之后输入"set ff"如下图所示
把格式改为unix,方法是输入":set ff=unix",也可以输入":set fileformat=unix"如下图所示。
输入完之后,回车即可完成切换格式。然后我们再输入":set ff"来查看格式,如下图所示,可以看到当前脚本格式变成了我们想要的"unix"了。
此时就没有问题了。
五、构建项目
左侧有构建状态,蓝色表示成功,红色表示失败。
点进去可以查看本次构建信息,点击左侧的控制台日志。
访问项目,成功!
使用Jenkins构建、部署spring boot项目的更多相关文章
- 使用Jenkins部署Spring Boot项目
jenkins是devops神器,本篇文章介绍如何安装和使用jenkins部署Spring Boot项目 jenkins搭建 部署分为三个步骤: 第一步,jenkins安装 第二步,插件安装和配置 第 ...
- Jenkins自动部署spring boot
Jenkins自动部署spring boot 背景介绍 本公司属于微小型企业,初期业务量不高,所有程序都写在一个maven项目里面,不过是多模块开发. 分了login模块,service模块,cms模 ...
- 使用Docker部署Spring boot项目
Docker是一个使用广泛的Linux容器管理工具包,它允许用户创建镜像,并将其容器实例化.通过本指南,我们可以学习到如何使用Docker部署Spring Boot项目. 先决条件 开发之前,你必须具 ...
- Docker Gitlab CI 部署 Spring Boot 项目
目前在学习这一块的内容,但是可能每个人环境都不同,导致找不到一篇博客能够完全操作下来没有错误的,所以自己也写一下,记录一下整个搭建的过程. Docker 的安装这里就不赘述了,基本上几行命令都可以了, ...
- Gitlab CI 集成 Kubernetes 集群部署 Spring Boot 项目
在上一篇博客中,我们成功将 Gitlab CI 部署到了 Docker 中去,成功创建了 Gitlab CI Pipline 来执行 CI/CD 任务.那么这篇文章我们更进一步,将它集成到 K8s 集 ...
- 使用 Docker 部署 Spring Boot 项目
Docker 介绍 Docker 属于 Linux 容器的一种封装,提供简单易用的容器使用接口.它是目前最流行的 Linux 容器解决方案. Docker 将应用程序与该程序的依赖,打包在一个文件里面 ...
- IDEA连接远程服务器Docker部署Spring Boot项目
开始前的准备工作 拥有一台云服务器,我的是腾讯云服务器(CentOS7) 腾讯云服务器安装Docker,我的版本是Docker 19.03.9,关于安装和配置镜像加速器可以查阅我的另一篇博文:http ...
- 使用 Docker 部署 Spring Boot 项目,带劲!!
上一篇:年轻人的第一个 Docker 应用 Docker 一次构建.处处运行及快速启停的特性,在微服务架构中有着举足轻重的地位,具体的概念性的东西就不介绍了,不懂的点击这里阅读 Docker 基础教程 ...
- 从零部署Spring boot项目到云服务器(正式部署)
上一篇文章总结了在Linux云服务器上部署Spring Boot项目的准备过程,包括环境的安装配置,项目的打包上传等. 链接在这里:http://www.cnblogs.com/Lovebugs/p/ ...
- Windows Docker 部署 Spring Boot 项目
目录 Docker Configuration Config IDEA Plugin Create Spring Boot Project Containerize It Use Dockerfile ...
随机推荐
- python+selenium入门
from selenium import webdriver打开浏览器 driver = webdriver.Chrome() 打开网页 driver.get("http://www.bai ...
- CentOS7.5 防火墙指令
防火墙指令 1. 查看防火墙状态: firewall-cmd --state 2. 启动防火墙 systemctl start firewalld.service 3. 关闭防火墙 systemctl ...
- jQuery显示隐藏
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...
- ling join 报错The specified LINQ expression contains references to queries that are associated with different cont
The specified LINQ expression contains references to queries that are associated with different cont ...
- c++学习笔记(七)- lambda表达式 迭代器 算法
关于lambda表达式: 刷题的时候遇到一句代码不懂: char ch = *it;auto it2 = find_if(it, b.end(), [ch](char x){ return x != ...
- CS131&Cousera图像处理学习笔记 - L5边缘
cs131: http://vision.stanford.edu/teaching/cs131_fall1617/ coursera: https://www.coursera.org/learn/ ...
- python中装饰器修复技术
python装饰器@wraps作用-修复被装饰后的函数名等属性的改变 Python装饰器(decorator)在实现的时候,被装饰后的函数其实已经是另外一个函数了(函数名等函数属性会发生改变), 为了 ...
- python 读csv文件对列名进行合法性验证
如果正在读取CSV 数据并将它们转换为命名元组,需要注意对列名进行合法性认证.例如,一个CSV 格式文件有一个包含非法标识符的列头行,这样最终会导致在创建一个命名元组时产生一个ValueError 异 ...
- 第三方统计分析埋点工具对比,神策、Ptmind、GrowingIO、国双,还有谷歌分析,谁更好?
第三方统计分析埋点工具对比,神策.Ptmind.GrowingIO.国双,还有谷歌分析,谁更好?https://www.colabug.com/2985393.html GA.Mixpanel 和神策 ...
- reids非关系性数据库
1.Redis环境配置 下载安装地址: https://github.com/MicrosoftArchive/redis/releases 解压文件到指定的目录,D:\ChromeCoreDown ...