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

}
相关推荐
姜太小白2 小时前
【Linux】df -h 卡住问题的通用排查与解决方案总结
linux·运维·php
fengyehongWorld3 小时前
Linux 终端快捷键
linux·运维
hyf3266334 小时前
泛程序:从零开始搭建稳定程序项目框架
运维·服务器·爬虫·百度·seo
为自己_带盐4 小时前
安敢越雷池一步?浅尝雷池WAF社区版
运维·web安全
NiceCloud喜云4 小时前
海外云服务器怎么选?适用场景、价格和避坑经验总结
运维·服务器
easy_coder5 小时前
Linux LVM 知识文档
linux·运维
小小的木头人6 小时前
Ubuntu 使用 udev + systemd + UUID 实现 USB 硬盘自动挂载
linux·运维·ubuntu
布鲁飞丝7 小时前
彩笔运维勇闯机器学习--cpu与qps的线性关系
运维·人工智能·机器学习
kaoa0007 小时前
Linux入门攻坚——84、网络虚拟化技术-1
linux·运维·服务器
我头发多我先学8 小时前
linux系统编程:初识进程
linux·运维·服务器