jenkins pipeline流水線


1.華東預發前端發布

 

 

 

 

 

 

地址:http://192.168.100.140:8080/

此次jenkins發布主要依賴pipeline 聲明式語法

 

v1版本發布主要更新拉取代碼構建發布

pipeline {

    agent any

 

    stages {

        

        stage('checkout') {

            steps {

                checkout([$class: 'GitSCM', branches: [[name: '*/masterv3.3']], doGenerateSubmoduleConfigurations: false, extensions: [], submoduleCfg: [], userRemoteConfigs: [[url: 'http://192.168.100.140/esl_front/ESL-manager.git']]])

            }

        }

        stage('BUILD') {

            steps {

                sh 'npm run build'

               

            }

        }

        stage('Deploy') {

            steps {

                sshPublisher(publishers: [sshPublisherDesc(configName: '華東(121.40.124.33)', transfers: [sshTransfer(cleanRemote: false, excludes: '', execCommand: '', execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: '[, ]+', remoteDirectory: '/etc/nginx/html/build/', remoteDirectorySDF: false, removePrefix: '', sourceFiles: 'dist/**')], usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: false)])

            }

        }

    }

}

 

1.1 華東前端發布

pipeline {

    agent any

    environment {

    DINGDING_ROBOT_URL = 'https://oapi.dingtalk.com/robot/send?access_token=aa67b55f25245c319aedd6efe5d20d81ac1cfe6e858c15d20914e8fd26a4e6ac'

    BRANCH="master3.3"

    BUILD_USER_ID = ""

    BUILD_USER = ""

    BUILD_USER_EMAIL = ""

    ChangeLog = ""

        

    }

    stages {

        //拉取代碼

        stage('checkout') {

            steps {

                checkout([$class: 'GitSCM', branches: [[name: '*/masterv3.3']], doGenerateSubmoduleConfigurations: false, extensions: [], submoduleCfg: [], userRemoteConfigs: [[url: 'http://192.168.100.140/esl_front/ESL-manager.git']]])

            }

        }

        

        

        

        //構建

        stage('BUILD') {

            steps {

                sh 'npm run build'

               

            }

        }

        

        

        //部署

        stage('Deploy') {

            steps {

                sshPublisher(publishers: [sshPublisherDesc(configName: '華東(121.40.124.33)', transfers: [sshTransfer(cleanRemote: false, excludes: '', execCommand: '', execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: '[, ]+', remoteDirectory: '/etc/nginx/html/build/', remoteDirectorySDF: false, removePrefix: '', sourceFiles: 'dist/**')], usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: false)])

            }

        }

    }

    

    

    

    // stages 所有任務執行后觸發post

    post {

        //構建失敗通知

        failure {

          script {

                 dingtalk (

                        robot: '31ca2fb0-964a-468f-81dd-edf521f78446',

                        type'MARKDOWN',

                        title: "項目構建信息",

                        text: [

                            '### 項目構建信息',

                            ">- job名稱:    **${JOB_NAME}**",

                            ">- 持續時間:    **${currentBuild.durationString}**",

                            ">- 當前分支:    **${env.BRANCH}**",

                            ">- 構建發起:    **${BUILD_USER}**",

                            ">- 構建結果:   **構建失敗❌*",

                            ">- 構建日志:    [點擊查看詳情](${env.BUILD_URL}console)",

                           // ">- 更新記錄:    **${ChangeLog}**",

                            

                                  

                        ],

 

                        at: [

                          '所有人'

                        ]

                    )

          }

 

        }

        //構建成功通知

        success {

        wrap([$class: 'BuildUser']) {

                   script {

                       BUILD_USER_ID = "${env.BUILD_USER_ID}"

                       BUILD_USER = "${env.BUILD_USER}"

                       BUILD_USER_EMAIL = "${env.BUILD_USER_EMAIL}"

                       ChangeLog = "${env.ChangeLog}"

                   }

                }

            dingtalk (

                        robot: '31ca2fb0-964a-468f-81dd-edf521f78446',

                        type'MARKDOWN',

                        title: "項目構建信息",

                        text: [

                            '### 項目構建信息',

                            ">- job名稱:    **${JOB_NAME}**",

                            ">- 持續時間:    **${currentBuild.durationString}**",

                            ">- 當前分支:    **${env.BRANCH}**",

                            ">- 構建發起:    **${BUILD_USER}**",

                            ">- 構建結果:   **構建成功 ✅**",

                            ">- 構建日志:    [點擊查看詳情](${env.BUILD_URL}console)",

                           // ">- 更新記錄:    **${ChangeLog}**",

                            

                                  

                        ],

 

                        at: [

                          '所有人'

                        ]

                    )

        }

    }

    

}

 

 

1.2 華東后端

pipeline {

    agent any

    environment {

    DINGDING_ROBOT_URL = 'https://oapi.dingtalk.com/robot/send?access_token=aa67b55f25245c319aedd6efe5d20d81ac1cfe6e858c15d20914e8fd26a4e6ac'

    BRANCH="master3.3"

    BUILD_USER_ID = ""

    BUILD_USER = ""

    BUILD_USER_EMAIL = ""

    ChangeLog = ""

         

    }

 

    stages {

         

        

        stage('checkout') {

            steps {

                  checkout([$class: 'GitSCM', branches: [[name: '*/dev_3.3']], doGenerateSubmoduleConfigurations: false, extensions: [], submoduleCfg: [], userRemoteConfigs: [[url: 'http://192.168.100.140/esl_backend/zk.git']]])

 

            }

        }

        

        //構建

        stage('Build') {

            steps {

                withMaven(jdk: 'jdk', maven: 'maven') {

                   sh 'mvn clean package -DskipTests'

                }

            }

        }

        

        //同步jar包到服務器  start

        stage('Push package') {

            steps {

                  sshPublisher(publishers: [sshPublisherDesc(configName: '華東(121.40.124.33)', transfers: [sshTransfer(cleanRemote: false, excludes: '', execCommand: '/usr/local/esl/start.sh', execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: '[, ]+', remoteDirectory: '/usr/local/esl', remoteDirectorySDF: false, removePrefix: 'target', sourceFiles: 'target/*')], usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: false)])

 

            }

        }

        

    }

    

      post {

        //構建失敗通知

        failure {

          script {

                 dingtalk (

                        robot: '31ca2fb0-964a-468f-81dd-edf521f78446',

                        type'MARKDOWN',

                        title: "項目構建信息",

                        text: [

                            '### 項目構建信息',

                            ">- job名稱:    **${JOB_NAME}**",

                            ">- 持續時間:    **${currentBuild.durationString}**",

                            ">- 當前分支:    **${env.BRANCH}**",

                            ">- 構建發起:    **${BUILD_USER}**",

                            ">- 構建結果:   **構建失敗❌*",

                            ">- 構建日志:    [點擊查看詳情](${env.BUILD_URL}console)",

                           // ">- 更新記錄:    **${ChangeLog}**",

                             

                                   

                        ],

 

                        at: [

                          '所有人'

                        ]

                    )

          }

 

        }

        //構建成功通知

        success {

        wrap([$class: 'BuildUser']) {

                   script {

                       BUILD_USER_ID = "${env.BUILD_USER_ID}"

                       BUILD_USER = "${env.BUILD_USER}"

                       BUILD_USER_EMAIL = "${env.BUILD_USER_EMAIL}"

                       ChangeLog = "${env.ChangeLog}"

                   }

                }

            dingtalk (

                robot: '31ca2fb0-964a-468f-81dd-edf521f78446',

                        type'MARKDOWN',

                        title: "項目構建信息",

                        text: [

                            '### 項目構建信息',

                            ">- job名稱:    **${JOB_NAME}**",

                            ">- 持續時間:    **${currentBuild.durationString}**",

                            ">- 當前分支:    **${env.BRANCH}**",

                            ">- 構建發起:    **${BUILD_USER}**",

                            ">- 構建結果:   **構建成功 ✅**",

                            ">- 構建日志:    [點擊查看詳情](${env.BUILD_URL}console)",

                           // ">- 更新記錄:    **${ChangeLog}**",

                             

                                   

                        ],

 

                        at: [

                          '所有人'

                        ]

                    )

        }

    }

}

 

2. 阿里雲東京

    阿里雲Jenkins任務主要構建master和back01-02機器、

   更新順序 master→> back01→back02

   pipeline 流水線如下

2.1 阿里雲東京-前端

pipeline {

    agent any

    environment {

    //DINGDING_ROBOT_URL 'https://oapi.dingtalk.com/robot/send?access_token=aa67b55f25245c319aedd6efe5d20d81ac1cfe6e858c15d20914e8fd26a4e6ac'

    BRANCH="shantian"

    BUILD_USER_ID = ""

    BUILD_USER = ""

    BUILD_USER_EMAIL = ""

    // ChangeLog = ""

         

    }

 

    stages {

        //GIT語法 

        //checkout:Check out from version control

        stage('checkout') {

            steps {

               checkout([$class: 'GitSCM', branches: [[name: '*/shantian']], doGenerateSubmoduleConfigurations: false, extensions: [], submoduleCfg: [], userRemoteConfigs: [[url: 'http://192.168.100.140/esl_front/ESL-manager.git']]])

            }

        }

        stage('BUILD') {

            steps {

                sh 'npm run build'

                

            }

        }

        //sshPublisher

        stage('Deploy') {

            steps {

              sshPublisher(publishers: [sshPublisherDesc(configName: '47.91.29.12', transfers: [sshTransfer(cleanRemote: false, excludes: '', execCommand: '', execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: '[, ]+', remoteDirectory: '/usr/share/nginx/html/build', remoteDirectorySDF: false, removePrefix: '', sourceFiles: 'dist/**')], usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: false)])

            }

        }

    }

    

    post {

        //構建失敗通知

        failure {

            wrap([$class: 'BuildUser']) {

                   script {

                       BUILD_USER_ID = "${env.BUILD_USER_ID}"

                       BUILD_USER = "${env.BUILD_USER}"

                       BUILD_USER_EMAIL = "${env.BUILD_USER_EMAIL}"

                       ChangeLog = "${env.ChangeLog}"

                   }

                }

          script {

                 dingtalk (

                        robot: '31c097ba-4f71-4e9e-97f0-5f13e18c1ee2',

                        type'MARKDOWN',

                        title: "項目構建信息",

                        text: [

                            '### 項目構建信息',

                            ">- job名稱:    **${JOB_NAME}**",

                            ">- 持續時間:    **${currentBuild.durationString}**",

                            ">- 當前分支:    **${env.BRANCH}**",

                            ">- 構建發起:    **${BUILD_USER}**",

                            ">- 構建結果:   **構建失敗❌*",

                            ">- 構建日志:    [點擊查看詳情](${env.BUILD_URL}console)",

                           // ">- 更新記錄:    **${ChangeLog}**",

                             

                                   

                        ],

 

                        at: [

                          '所有人'

                        ]

                    )

          }

 

        }

        //構建成功通知

        success {

        wrap([$class: 'BuildUser']) {

                   script {

                       BUILD_USER_ID = "${env.BUILD_USER_ID}"

                       BUILD_USER = "${env.BUILD_USER}"

                       BUILD_USER_EMAIL = "${env.BUILD_USER_EMAIL}"

                       ChangeLog = "${env.ChangeLog}"

                   }

                }

            dingtalk (

                robot: '31c097ba-4f71-4e9e-97f0-5f13e18c1ee2',

                        type'MARKDOWN',

                        title: "項目構建信息",

                        text: [

                            '### 項目構建信息',

                            ">- job名稱:    **${JOB_NAME}**",

                            ">- 持續時間:    **${currentBuild.durationString}**",

                            ">- 當前分支:    **${env.BRANCH}**",

                            ">- 構建發起:    **${BUILD_USER}**",

                            ">- 構建結果:   **構建成功 ✅**",

                            ">- 構建日志:    [點擊查看詳情](${env.BUILD_URL}console)",

                            // ">- 流水線:       [點擊查看詳情](${env.JOB_URL}console)",

                           // ">- 更新記錄:    **${ChangeLog}**",

                             

                                   

                        ],

 

                        at: [

                          '所有人'

                        ]

            )

        }

    }

}

2.2 阿里雲東京后端發布

//山田mster 后端備份

 

 

pipeline {

    agent any

    environment {

    DINGDING_ROBOT_URL = 'https://oapi.dingtalk.com/robot/send?access_token=aa67b55f25245c319aedd6efe5d20d81ac1cfe6e858c15d20914e8fd26a4e6ac'

    BRANCH="shantian"

    BUILD_USER_ID = ""

    BUILD_USER = ""

    BUILD_USER_EMAIL = ""

    ChangeLog = ""

         

    }

 

    stages {

         

        

        stage('checkout') {

            steps {

                  checkout([$class: 'GitSCM', branches: [[name: '*/shantian']], doGenerateSubmoduleConfigurations: false, extensions: [], submoduleCfg: [], userRemoteConfigs: [[url: 'http://192.168.100.140/esl_backend/zk.git']]])

 

            }

        }

        

        //構建

        stage('Build') {

            steps {

                withMaven(jdk: 'jdk', maven: 'maven') {

                   sh 'mvn clean package -DskipTests'

                }

            }

        }

        

        //同步jar包到服務器  start

        stage('Push package') {

            steps {

               sshPublisher(publishers: [sshPublisherDesc(configName: '47.91.29.12', transfers: [sshTransfer(cleanRemote: false, excludes: '', execCommand: 'cd /usr/local/esl/ &&  docker-compose up -d --build', execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: '[, ]+', remoteDirectory: '/usr/local/esl/app', remoteDirectorySDF: false, removePrefix: 'target', sourceFiles: 'target/*')], usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: false)])

 

            }

        }

 

         // 山田backup 01 start

        stage('push package Backup 01') {

            steps {

               sshPublisher(publishers: [sshPublisherDesc(configName: '8.209.252.82', transfers: [sshTransfer(cleanRemote: false, excludes: '', execCommand: 'cd /usr/local/esl/ &&  docker-compose up -d --build', execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: '[, ]+', remoteDirectory: '/usr/local/esl/app', remoteDirectorySDF: false, removePrefix: 'target', sourceFiles: 'target/*')], usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: false)])

            }

 

        }

       

 

       //山田 backup 02 start

       stage('Push package Backup 02') {

            steps {

            sshPublisher(publishers: [sshPublisherDesc(configName: '47.91.31.80', transfers: [sshTransfer(cleanRemote: false, excludes: '', execCommand: 'cd /usr/local/esl/ &&  docker-compose up -d --build', execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: '[, ]+', remoteDirectory: '/usr/local/esl/app', remoteDirectorySDF: false, removePrefix: 'target', sourceFiles: 'target/*')], usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: false)])

            }

       }

        

    }

 

    post {

        //構建失敗通知

        failure {

            wrap([$class: 'BuildUser']) {

                   script {

                       BUILD_USER_ID = "${env.BUILD_USER_ID}"

                       BUILD_USER = "${env.BUILD_USER}"

                       BUILD_USER_EMAIL = "${env.BUILD_USER_EMAIL}"

                       ChangeLog = "${env.ChangeLog}"

                   }

                }

          script {

                 dingtalk (

                        robot: '31c097ba-4f71-4e9e-97f0-5f13e18c1ee2',

                        type'MARKDOWN',

                        title: "項目構建信息",

                        text: [

                            '### 項目構建信息',

                            ">- job名稱:    **${JOB_NAME}**",

                            ">- 持續時間:    **${currentBuild.durationString}**",

                            ">- 當前分支:    **${env.BRANCH}**",

                            ">- 構建發起:    **${BUILD_USER}**",

                            ">- 構建結果:   **構建失敗❌*",

                            ">- 構建日志:    [點擊查看詳情](${env.BUILD_URL}console)",

                           // ">- 更新記錄:    **${ChangeLog}**",

                             

                                   

                        ],

 

                        at: [

                          '所有人'

                        ]

                    )

          }

 

        }

        //構建成功通知

        success {

        wrap([$class: 'BuildUser']) {

                   script {

                       BUILD_USER_ID = "${env.BUILD_USER_ID}"

                       BUILD_USER = "${env.BUILD_USER}"

                       BUILD_USER_EMAIL = "${env.BUILD_USER_EMAIL}"

                       ChangeLog = "${env.ChangeLog}"

                   }

                }

            dingtalk (

                robot: '31c097ba-4f71-4e9e-97f0-5f13e18c1ee2',

                        type'MARKDOWN',

                        title: "項目構建信息",

                        text: [

                            '### 項目構建信息',

                            ">- job名稱:    **${JOB_NAME}**",

                            ">- 持續時間:    **${currentBuild.durationString}**",

                            ">- 當前分支:    **${env.BRANCH}**",

                            ">- 構建發起:    **${BUILD_USER}**",

                            ">- 構建結果:   **構建成功 ✅**",

                            ">- 構建日志:    [點擊查看詳情](${env.BUILD_URL}console)",

                            // ">- 流水線:       [點擊查看詳情](${env.JOB_URL}console)",

                           // ">- 更新記錄:    **${ChangeLog}**",

                             

                                   

                        ],

 

                        at: [

                          '所有人'

                        ]

            )

        }

    }

    

}

3.釘釘配置

系統配置下 id會自動生成對應pipeline下的post通知

 

image.png

通知如下

image.png

4.pipeline流水線Blue Ocean

 

地址:http://192.168.100.140:8080/blue/organizations/jenkins/pipelines

 

image.png

 

發布前端涉及checkout build 和deploy 目前沒有更新回滾操作

 

5.流水線語法參考

作用pipeline 流水線拉取代碼

image.png

 

生成jia包同步到服務器上

image.png

 
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM