加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
Jenkinsfile 3.13 KB
一键复制 编辑 原始数据 按行查看 历史
ypcgoal 提交于 2024-09-13 08:13 . update Jenkinsfile.
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)
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化