3.2 使用Pipeline自动打包Docker镜像

一、编写Pipeline脚本

  1. 可以部分脚本可以使用流水线语法功能自动生成

    注意:只用通过插件的功能,才可以使用语法生成器

  2. 某些环境需要手动引入(案例案例中的maven)

  3. 注释语法://即可

  4. 运行shell脚本

    1. 单条shell脚本:

      sh "mvn clean install"
    2. 运行多条shell语句

      sh """
      	cd gateway
      	mvn clean install
      """

      使用三个引号包裹,表示同一环境下执行命令

  5. 示例

    pipeline {
        agent any
    
        // 引入maven包
        tools {
    
            maven "maven-3.8.6"
    
        }
    
        stages {
            stage('拉取代码') {
                steps {
                    git credentialsId: 'cb2d9230-218a-4922-99d2-6d5753b6d72e', url: 'https://e.coding.net/lonelysnow/snow-currency-project/snow-gateway.git'
                    echo '拉取成功'
                }
            }
            stage('开始构建') {
                steps {
                    // 执行一条shell脚本
                    // sh "mvn --version"
                    // 注意pom所在目录
                    sh "mvn clean install"
                    echo '构建成功'
                }
            }
            stage('发送jar包') {
                steps {
                    sshPublisher(
                        publishers: [
                            sshPublisherDesc(
                                configName: 'txy', 
                                transfers: [
                                    sshTransfer(
                                        cleanRemote: false, 
                                        excludes: '', 
                                        execCommand: 'sh /code/gateway/start.sh', 
                                        execTimeout: 120000, 
                                        flatten: false, 
                                        makeEmptyDirs: false, 
                                        noDefaultExcludes: false, 
                                        patternSeparator: '[, ]+', 
                                        remoteDirectory: 'gateway', 
                                        remoteDirectorySDF: false, 
                                        removePrefix: 'target/', 
                                        sourceFiles: 'target/gateway-*.jar'
                                    ), 
                                    sshTransfer(
                                        cleanRemote: false, 
                                        excludes: '', 
                                        execCommand: '''
                                            docker build -t demo .
                                            docker run -p 8080:8080 --name gateway gateway
                                        ''', 
                                        execTimeout: 120000, 
                                        flatten: false, 
                                        makeEmptyDirs: false, 
                                        noDefaultExcludes: false, 
                                        patternSeparator: '[, ]+', 
                                        remoteDirectory: 'gateway', 
                                        remoteDirectorySDF: false, 
                                        removePrefix: 'docker', 
                                        sourceFiles: 'docker/dockerfile'
                                    )
                                ], 
                                usePromotionTimestamp: false, 
                                useWorkspaceInPromotion: false, 
                                verbose: false
                            )
                        ]
                    )
                    echo '构建成功'
                }
            }
        }
    }

Last updated