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'
                 }
          }
    }

}
相关推荐
ALex_zry3 小时前
SSH主机密钥验证失败:全面解决方案与技术手册
运维·ssh
DN金猿3 小时前
Jenkins的流水线执行shell脚本执行jar命令后项目未启动未输出日志问题处理
servlet·jenkins·jar
厦门辰迈智慧科技有限公司4 小时前
城市排水管网流量监测系统解决方案
运维·服务器
我没有开挂4 小时前
旧 docker 版本通过 nvkind 搭建虚拟多节点 gpu 集群的坑
运维·docker·容器
qq_339282234 小时前
centos中libc.so.6No such file的解决方式
linux·运维·centos
小鸡,啄米5 小时前
centos9安装docker 配置docker代理
运维·docker·容器
水银嘻嘻5 小时前
12 web 自动化之基于关键字+数据驱动-反射自动化框架搭建
运维·前端·自动化
在肯德基吃麻辣烫5 小时前
Netdata在Ubuntu环境下的安装与配置:构建实时系统监控与性能分析平台
linux·运维·ubuntu
不念霉运6 小时前
Gitee DevOps:中国企业数字化转型的“本土化加速器“
运维·gitee·团队开发·代码规范·devops·代码复审
安迪小宝6 小时前
6 任务路由与负载均衡
运维·python·celery