代码拉取完成,页面将自动刷新
pipeline {
agent any
environment {
project_name = 'jenkins01'
tag = 'latest'
}
stages {
stage('拉取代码') {
steps {
git credentialsId: '6e43ad235a73a8e7fc5267c25a27e7d9', url: 'https://gitee.com/ypcgoal/jenkins.git'
}
}
stage('工程编译') {
steps {
sh """
PATH=/usr/local/maven/bin:$PATH
mvn clean package -Dmaven.test.skip=true
"""
}
}
stage('镜像打包') {
steps {
script {
def container_name = "${project_name}"
def image_name = "${project_name}:${tag}"
// 判断容器是否存在
if (dockerContainerExists(container_name)) {
echo "容器 $container_name 存在"
// 关闭容器
echo "关闭容器 $container_name"
sh "docker stop $container_name"
// 删除容器
echo "删除容器 $container_name"
sh "docker rm $container_name"
} else {
echo "容器 $container_name 不存在"
}
// 删除镜像
if (dockerImageExists(image_name)) {
echo "镜像 $image_name 存在"
echo "删除镜像 $image_name"
sh "docker rmi $image_name"
} else {
echo "镜像 $image_name 不存在"
}
// 清理未标记的镜像
echo "清理未标记的镜像"
try {
def danglingImages = sh(returnStdout: true, script: "docker images -qf \"dangling=true\"").trim()
if (danglingImages) {
sh "docker rmi -f $danglingImages"
}
} catch (err) {
echo "清理未标记镜像时遇到错误: $err"
}
// 重新构建镜像
echo "重新构建镜像 $image_name"
sh "docker build -t $image_name ."
// 启动容器
echo "启动容器 $container_name"
sh "docker run -d --name $container_name -p 80:80 $image_name"
}
}
}
}
}
// 自定义函数,检查容器是否存在
def dockerContainerExists(String name) {
def containers = sh(returnStdout: true, script: "docker ps -a --format '{{.Names}}'")
return containers.contains(name)
}
// 自定义函数,检查镜像是否存在
def dockerImageExists(String name) {
def images = sh(returnStdout: true, script: "docker images --format '{{.Repository}}:{{.Tag}}'")
return images.contains(name)
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。