3.2 使用Pipeline自动打包Docker镜像
一、编写Pipeline脚本
可以部分脚本可以使用
流水线语法功能自动生成注意:只用通过插件的功能,才可以使用语法生成器
某些环境需要手动引入(案例案例中的maven)
注释语法:
//即可运行shell脚本
单条shell脚本:
sh "mvn clean install"运行多条shell语句
sh """ cd gateway mvn clean install """使用三个引号包裹,表示同一环境下执行命令
示例
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