Jenkins流水线pipeline--基于上一章的工作流程

1流水线部署

1.流水线文本名Jenkinsfile,将流水线放入gitlab远程仓库代码里面

2构建参数

2pipeline脚本

Jenkinsfile文件内容

复制代码
pipeline {
    agent any

   environment {
        key="value"
   }
    stages {
        stage("拉取git仓库代码") {
            steps {
                deleteDir()
                checkout scmGit(branches: [[name: "$tag"]], extensions: [], userRemoteConfigs: [[url: 'http://192.168.88.120:8929/root/test.git']])
                echo '拉取git仓库代码 --SUCCESS'
            }
        }
        stage("通过maven构建项目") {
             steps {
                sh '/var/jenkins_home/maven/bin/mvn clean package -DskipTests'
                echo '通过maven构建项目 --SUCCESS'
             }
        }
         stage("通过sonarqube做代码质量检测") {
              steps {
                sh '/var/jenkins_home/sonar-scanner/bin/sonar-scanner  -Dsonar.source=./ -Dsonar.projectname=${JOB_NAME} -Dsonar.login=2f0c3fe097389f621ebe683db16dc83931cb3502  -Dsonar.projectKey=${JOB_NAME}   -Dsonar.java.binaries=./target/'
                echo '通过sonarqube做代码质量检测 --SUCCESS'
               }
         }
         stage("通过docker制作自定义镜像") {
              steps {
                sh '''mv target/*.jar  docker/
                cd docker/
                docker build -t ${JOB_NAME}:$tag ./'''
                echo '通过docker制作自定义镜像 --SUCCESS'
              }
         }

          stage("将自定义镜像推送到harbor仓库") {
               steps {
                    sh '''docker login -u admin -p Harbor12345 192.168.88.121:80
                          docker tag ${JOB_NAME}:$tag 192.168.88.121:80/repo/${JOB_NAME}:$tag
                          docker push 192.168.88.121:80/repo/${JOB_NAME}:$tag'''
                    echo '将自定义镜像推送到harbor仓库 --SUCCESS'
               }
          }
          stage("远程仓库下载并启动容器") {
                 steps {
                   sshPublisher(publishers: [sshPublisherDesc(configName: 'test', transfers: [sshTransfer(cleanRemote: false, excludes: '', execCommand: "docker.sh 192.168.88.121:80 repo ${JOB_NAME}  $tag  $container_port  $host_port", execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: '[, ]+', remoteDirectory: '', remoteDirectorySDF: false, removePrefix: '', sourceFiles: '')], usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: false)])
                   echo '远程仓库下载并启动容器 --SUCCESS'
                 }
          }
    }

}

3.优化后的pipeline代码

复制代码
pipeline {
    agent any

   environment {
        harborUser = "admin"
        harborPasswd = "Harbor12345"
        harborAddress = "192.168.88.121:80"
        harborRepo = "repo"
   }
    stages {
        stage("拉取git仓库代码") {
            steps {
                deleteDir()
                checkout scmGit(branches: [[name: "$tag"]], extensions: [], userRemoteConfigs: [[url: 'http://192.168.88.120:8929/root/test.git']])
                echo '拉取git仓库代码 --SUCCESS'
            }
        }
        stage("通过maven构建项目") {
             steps {
                sh '/var/jenkins_home/maven/bin/mvn clean package -DskipTests'
                echo '通过maven构建项目 --SUCCESS'
             }
        }
         stage("通过sonarqube做代码质量检测") {
              steps {
                sh '/var/jenkins_home/sonar-scanner/bin/sonar-scanner  -Dsonar.source=./ -Dsonar.projectname=${JOB_NAME} -Dsonar.login=2f0c3fe097389f621ebe683db16dc83931cb3502  -Dsonar.projectKey=${JOB_NAME}   -Dsonar.java.binaries=./target/'
                echo '通过sonarqube做代码质量检测 --SUCCESS'
               }
         }
         stage("通过docker制作自定义镜像") {
              steps {
                sh '''mv target/*.jar  docker/
                cd docker/
                docker build -t ${JOB_NAME}:${tag} ./'''
                echo '通过docker制作自定义镜像 --SUCCESS'
              }
         }

          stage("将自定义镜像推送到harbor仓库") {
               steps {
                    sh '''docker login -u ${harborUser} -p ${harborPasswd} ${harborAddress}
                          docker tag ${JOB_NAME}:$tag ${harborAddress}/${harborRepo}/${JOB_NAME}:$tag
                          docker push ${harborAddress}/${harborRepo}/${JOB_NAME}:${tag}'''
                    echo '将自定义镜像推送到harbor仓库 --SUCCESS'
               }
          }
          stage("远程仓库下载并启动容器") {
                 steps {
                   sshPublisher(publishers: [sshPublisherDesc(configName: 'test', transfers: [sshTransfer(cleanRemote: false, excludes: '', execCommand: "docker.sh ${harborAddress} ${harborRepo} ${JOB_NAME}  ${tag}  ${container_port}  ${host_port}", execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: '[, ]+', remoteDirectory: '', remoteDirectorySDF: false, removePrefix: '', sourceFiles: '')], usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: false)])
                   echo '远程仓库下载并启动容器 --SUCCESS'
                 }
          }
    }

}
相关推荐
电星托马斯43 分钟前
Linux系统CentOS 6.3安装图文详解
linux·运维·服务器·程序人生·centos
啞謎专家1 小时前
CentOS中挂载新盘LVM指南:轻松扩展存储空间,解决磁盘容量不足问题
linux·运维·服务器
s_little_monster1 小时前
【Linux】进程信号的捕捉处理
linux·运维·服务器·经验分享·笔记·学习·学习方法
一大Cpp1 小时前
Ubuntu与本地用户交流是两种小方法
linux·运维·ubuntu
小王不会写code1 小时前
CentOS 7 镜像源失效解决方案(2025年)
linux·运维·centos
zyplanke1 小时前
CentOS Linux升级内核kernel方法
linux·运维·centos
ghostwritten2 小时前
Docker Registry Clean
运维·docker·容器
niuniu_6662 小时前
简单的自动化场景(以 Chrome 浏览器 为例)
运维·chrome·python·selenium·测试工具·自动化·安全性测试
这儿有一堆花3 小时前
Kali Linux 2025.1a:主题焕新与树莓派支持的深度解析
linux·运维·服务器
wanhengidc4 小时前
算力服务器和普通服务器之间的不同之处
运维·服务器