H__D  

概念

  是一套运行在 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效果

 

 

 

参考:2.Jenkins之Pipeline使用 - RollBack2010 - 博客园 (cnblogs.com)

posted on 2022-12-06 01:42  H__D  阅读(237)  评论(0编辑  收藏  举报