使用Jenkins+docker 部署springboot项目
1. jenkins 的安装
Jenkins 不要使用docker 去安装,这样会产生很多麻烦,比如要网络穿透,网络连接,如何让Jenkins在宿主机执行shell脚本等等一系列麻烦事,所以Jenkins 就简单的在宿主机上安装即可
宿主机安装Jenkins有很多方法,我比较习惯性的使用是 pm2 管理
-
先安装pm2 ;pm2 的安装步骤请查看另一篇博客:centos7下用命令安装node&pm2
-
pm2 安装好后, 下载jenkins 的war包,可以去官网下载,也可以csdn 下载,下载地址
-
然后需要启动Jenkins 了
4. Jenkins-app.json 的脚本
{
"name": "jenkins-app", //项目名称
"script": "/xsfx/java/jdk1.8.0_202/bin/java -jar jenkins.war --httpPort=8092 ", //要执行的脚本
}
启动脚本
pm2 start jenkins-app.json
查看日志脚本
pm2 logs jenkins-app
查看pm2 的管控列表
pm2 list
- jenkins 启动后,使用ip+ 端口进行访问,第一次启动的情况下,需要安装推荐插件,然后安装完后登录是需要查看日志找到密码路径获取密码
6. 登录以后,我们的项目如是maven 项目,则需要安装maven 插件,用来构建maven 的项目
7. 配置jenkins 的全局配置
准备工作就完了,现在开始实现 jenkins + gitlab + spring-boot 项目的构建
2. 发布项目
- 新建Item
2. 添加正常
3. 添加构建脚本,这里的标注是重点,需要等项目构建完后,在执行当前脚本
4. 构建的脚本记录
#!/bin/bash
#操作/项目路径(Dockerfile存放的路劲)
BASE_PATH=/home/workspcase
#docker 镜像/容器名字或者jar名字 这里都命名为这个
SERVER_NAME=demo
# 源jar路径
SOURCE_PATH=/root/.jenkins/workspace/$SERVER_NAME
# 版本号
VERSION=-0.0.1-SNAPSHOT
##Dockerfile存放的项目路劲
PROJECT_PATH=$BASE_PATH/$SERVER_NAME
## 当前时间
DATE=`date +%Y%m%d%H%M`
# 最新构建代码 移动到项目环境
function transfer(){
echo "最新构建代码 $SOURCE_PATH/$SERVER_NAME/target/$SERVER_NAME$VERSION.jar 迁移至 $PROJECT_PATH ...."
mkdir -p "$PROJECT_PATH"
cp $SOURCE_PATH/$SERVER_NAME/target/$SERVER_NAME$VERSION.jar $PROJECT_PATH
echo "迁移完成"
}
# 备份
function backup(){
echo "$PROJECT_PATH/$SERVER_NAME$VERSION.jar 有备份,则执行备份"
cp $PROJECT_PATH/$SERVER_NAME$VERSION.jar $BASE_PATH/backup/$SERVER_NAME-$DATE.jar
echo "$PROJECT_PATH/$SERVER_NAME$VERSION.jar 删除原有安装包,清除缓存.."
rm -rf $PROJECT_PATH/$SERVER_NAME$VERSION.jar
}
function createDockerfile(){
echo "先删除Dockerfile ,清除缓存.."
rm -rf $PROJECT_PATH/Dockerfile
echo "创建新的dockerfile 文件写入 创建 ..."
touch $PROJECT_PATH/Dockerfile
echo "FROM java:8
MAINTAINER eangulee 'yiqiniu'
VOLUME /tmp
ADD $SERVER_NAME$VERSION.jar $SERVER_NAME.jar
RUN sh -c 'touch /app.jar'
ENV JAVA_OPTS=\"\"
ENTRYPOINT [ \"sh\", \"-c\", \"java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -Xms512m -Xmx768m -jar $SERVER_NAME.jar\" ]" >> $PROJECT_PATH/Dockerfile
echo "执行dockerfile 文件写入 创建 完成"
}
# 构建docker镜像
function build(){
echo " 停止,删除原有容器,可清除缓存"
docker stop $SERVER_NAME
docker rm $SERVER_NAME
docker rmi $SERVER_NAME
echo " 删除原有镜像,可清除缓存 ,开始构建镜像"
cd $PROJECT_PATH
docker build -t $SERVER_NAME .
}
function runDocker(){
echo " 执行镜像,启动服务..."
docker run --name $SERVER_NAME --restart=always --net=host -d $SERVER_NAME
echo " 执行镜像,启动服务 完成..."
}
# 运行docker容器
function run(){
backup
transfer
createDockerfile
build
runDocker
}
#入口
run
ok , 完毕!!!!