jenkins部署springboot项目
1、创建一个项目 上传到gitee
1、创建项目
2、上传到git
2、jenkins创建一个pipeline项目
Pipeline简介
1)概念
Pipeline,简单来说,一套运行在 Jenkins 上的工作流框架,将原来独立运行于单个或者多个节点 的任务连接起来,实现单个任务难以完成的复杂流程编排和可视化的工作。
2)使用Pipeline有以下好处:
代码:Pipeline以代码的形式实现,通常被检入源代码控制,使团队能够编辑,审查和迭代其传送流 程。
持久:无论是计划内的还是计划外的服务器重启,Pipeline都是可恢复的。
可停止:Pipeline可接 收交互式输入,以确定是否继续执行Pipeline。
多功能:Pipeline支持现实世界中复杂的持续交付要 求。它支持fork/join、循环执行,并行执行任务的功能。
可扩展:Pipeline插件支持其DSL的自定义扩 展 ,以及与其他插件集成的多个选项。
3)如何创建 Jenkins Pipeline呢?
- Pipeline 脚本是由 Groovy 语言实现的,但是我们没必要单独去学习 Groovy
- Pipeline 支持两种语法:Declarative(声明式)和 Scripted Pipeline(脚本式)语法
- Pipeline 也有两种创建方法: - 可以直接在 Jenkins 的 Web UI 界面中输入脚本;- 也可以通过创建一 个 Jenkinsfile 脚本文件放入项目源码库中(一般我们都推荐在 Jenkins 中直接从源代码控制(SCM) 中直接载入 Jenkinsfile Pipeline 这种方法)。 流水线项目配置:
3、自动化构建配置
1、项目结构
2、流水线文件详情:
关于流水线语法直接省略、大家也没有必要 去了解和掌握、复制下面的即可
def project_name='jenkins01'
def tag = "latest"
// 执行脚本
node {
stage('拉取代码') {
git credentialsId: 'be908ce3-b7d6-425f-b76a-e580044axxxx', url: 'https://gitee.com/xxx/demo_jenkins.git'
}
stage('工程编译'){
//编译,构建
sh """
PATH=/usr/localhost/mavenxxx/bin:$PATH
mvn clean package -Dmaven.test.skip=true
"""
}
stage('镜像打包'){
// 镜像打包
sh 'pwd'
sh 'docker build -t jenkins01:latest .'
}
stage('docker的部署'){
//镜像名称
def imageName = "${project_name}:${tag}"
//删除原有容器
sh "docker rm -f ${project_name}"
//容器加一层挂载目录 启动容器
sh "docker run -id --name ${project_name} -p 9000:9000 ${imageName}"
}
}
3、dockerFile文件
#FROM java:8
FROM openjdk:8
COPY ./target/demo_jenkins-0.0.1-SNAPSHOT.jar app.jar
EXPOSE 9000
ENTRYPOINT ["java","-jar","/app.jar"]
4、构建结果
5、上面的脚本存在问题、没有删除容器、删除镜像
我们写一个shell脚本、判断是这个容器是否存在、如果存在关闭容器、删除容器、删除镜像、重新构建
#!/bin/bash
# 容器名称
container_name="你的容器"
# 镜像名称
image_name="你的镜像名字"
# 判断容器是否存在
if docker ps -a --format "{{.Names}}" | grep -q "$container_name"; then
echo "容器 $container_name 存在"
# 关闭容器
echo "关闭容器 $container_name"
docker stop $container_name
# 删除容器
echo "删除容器 $container_name"
docker rm $container_name
else
echo "容器 $container_name 不存在"
fi
# 删除镜像
if docker images --format "{{.Repository}}" | grep -q "$image_name"; then
echo "镜像 $image_name 存在"
echo "删除镜像 $image_name"
docker rmi $image_name
else
echo "镜像 $image_name 不存在"
fi
# 重新构建镜像
echo "重新构建镜像 $image_name"
docker build -t $image_name .
# 启动容器
echo "启动容器 $container_name"
docker run -id --name $container_name -p 9000:9000 $image_name
执行shell脚本:
stage('执行shell命令-镜像打包'){sh"""chmod +x ./docker.sh
sh docker.sh"""
}
版权归原作者 昔我往昔 所有, 如有侵权,请联系我们删除。