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

}
相关推荐
云栖梦泽6 分钟前
网络设备驱动(3)
linux·运维·服务器·网络·嵌入式硬件
云生信1 小时前
服务器上新 OmicOS,体验生信 AI 计算
运维·服务器·人工智能
DFT计算杂谈1 小时前
无图形界面服务器用 Codex 终端连接本地部署的 DeepSeek
运维·服务器·网络
两点王爷13 小时前
解决 Linux 中 version `CXXABI_1.3.8‘ not found 报错
linux·运维·服务器
0+11113 小时前
Linux --线程概念与控制
linux·运维·服务器·jvm
宽海智能仓储物流14 小时前
航发自动化立体库异构系统改造:宽海智能30天联调技术全解析
运维·数据仓库·自动化
鹤落晴春14 小时前
【K8s】从 ConfigMap 到 Argo CD:Kubernetes 配置管理链路
运维·云原生·容器·kubernetes
2601_9494999414 小时前
DT‑1414PTZ如何百分百兼容(安华高)HFBR‑1414PTZ
运维·网络·人工智能·科技·光模块
fengyehongWorld14 小时前
Linux 安装frp实现内网穿透
linux·运维·服务器
一技安身15 小时前
【信创】银河麒麟V10服务器使用安装光盘Packages自建本地yum源
linux·运维·服务器