概念
是一套运行在 Jenkins 上的工作流框架,将原来独立运行于单个或者多个节点 的任务连接起来,实现单个任务难以完成的复杂流程编排和可视化的工作。
优势
代码:Pipeline以代码的形式实现,通常被检入源代码控制,使团队能够编辑,审查和迭代其传送流程。
持久:无论是计划内的还是计划外的服务器重启,Pipeline都是可恢复的。
可停止:Pipeline可接收交互式输入,以确定是否继续执行Pipeline。
多功能:Pipeline支持现实世界中复杂的持续交付要求。它支持fork/join、循环执行,并行执行任务的功能。
可扩展:Pipeline插件支持其DSL的自定义扩展 ,以及与其他插件集成的多个选项。
插件安装
需要安装插件Pipeline
安装后,在Jenkins中"新建Item"时会出现一个选项
使用步骤
1、新建pipeline项目
2、编辑模板
选择对应模板,Groovy定义流水线脚本。
3、PipeLine语法
1 #声明式: 2 pipeline { 3 agent any 4 stages { #整个流水线的所有执行阶段。通常stages只有1个,里面包含多个stage 5 stage('拉取代码' ) { #流水线中的某个阶段,可能出现多个。一般分为拉取代码,编译构建,部署等阶段。 6 steps { #代表一个阶段内需要执行的逻辑。steps里面是shell脚本,git拉取代码,ssh远程发布等任意内容 7 echo '拉取代码' 8 } 9 } 10 stage('编译代码 ') { 11 steps { 12 echo '编译代码' 13 } 14 } 15 stage('发布运行 ') { 16 steps { 17 echo '发布运行' 18 } 19 } 20 } 21 } 22 #脚本式: 23 node { 24 stage('拉取代码' ) { 25 echo '拉取代码' 26 } 27 stage('编译代码 ') { 28 echo '编译代码' 29 } 30 stage('发布运行 ') { 31 echo '发布运行' 32 } 33 }
4、使用流水线语法
5、将内容粘贴到steps中
6、实现拉取->编译->部署
脚本内容:
pipeline { agent any stages { stage('pull code') { steps { checkout([$class: 'GitSCM', branches: [[name: '*/main']], extensions: [], userRemoteConfigs: [[credentialsId: '4a684b9a-6e5c-4e3d-8ea5-979e24fc', url: 'git@github.com:xxxx/mall.git']]]) } } stage('build project') { steps { sh '/data/soft/apache-maven-3.8.6/bin/mvn -version' sh '/data/soft/apache-maven-3.8.6/bin/mvn clean -DskipTests=true package' } } stage('publish project') { steps { sh 'pwd' sshPublisher(publishers: [sshPublisherDesc(configName: '192.168.1.153 - hd03', transfers: [sshTransfer(cleanRemote: false, excludes: '', execCommand: '''mkdir -p /data/app/jar cp mall-product/*.jar /data/app/jar/ /data/app/bin/deploy.sh /data/app/jar/mall-admin-1.0-SNAPSHOT.jar "-Xms256m -Xmx256m"''', execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: '[, ]+', remoteDirectory: 'mall-product', remoteDirectorySDF: false, removePrefix: 'mall-product/target', sourceFiles: 'mall-product/target/*.jar')], usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: false)]) } } } }
7、执行Pipeline效果