Jenkins-Pipeline

news2024/11/24 15:38:08

Pipeline

1 安装插件
在这里插入图片描述

2 新建一个 Pipline 工程
在这里插入图片描述
3 配置Pipeline 脚本
agent的使用可以参考这个文档

pipeline {
    agent any

    stages {
        stage('Build') { 
            steps {
                echo 'Building project...'
            }
        }
        stage('Test') { 
            steps {
                echo 'Testing project...'
            }
        }
        stage('Deploy') { 
            steps {
                echo 'Deploying to server ...'
            }
        }
        stage('Push') { 
           steps {
               echo 'Pusing to harbor ...'
           }
       }
    }
}

我们配置的每一个阶段都可以在这里展示:
在这里插入图片描述
4 如果我们需要在阶段内部执行多条指令

pipeline {
  agent any
  stages {
      stage('Build') { 
          steps {
              sh 'echo "multi-steps pipeline"'
              sh '''
                  echo "multi command"
                  pwd
                  ls
              '''
          }
      }
  }
}

5 失败以后重重试

pipeline {
    agent any

    stages {
        stage('Build') { 
            steps {
                sh 'echo "multi-steps pipeline"'
                sh '''
                    echo "multi command"
                    pwd
                    ls
                '''
            }
        }
        stage('Test') { 
            steps {
                echo 'Testing project...'
            }
        }
        stage('Deploy') { 
            steps {
                echo 'Deploying to server ...'
            }
        }
          stage('Push') { 
            steps {
                echo 'Pusing to harbor ...'
            }
        }
          stage('Retry') { 
            steps {
                retry(3) {
                    sh 'Retry failure...'
                }
            }
        }
    }
}

在这里插入图片描述

在这里插入图片描述
6 超时重试

pipeline {
    agent any

    stages {
        stage('Build') { 
            steps {
                sh 'echo "multi-steps pipeline"'
                sh '''
                    echo "multi command"
                    pwd
                    ls
                '''
            }
        }
        stage('Test') { 
            steps {
                echo 'Testing project...'
            }
        }
       stage('Deploy') { 
            steps {
                retry(3) {
                    sh 'echo hello_world'
                }
                
                timeout(time: 3, unit: 'SECONDS') {
                    sh 'sleep 5'
                }
            }
        }
          stage('Push') { 
            steps {
                echo 'Pusing to harbor ...'
            }
        }
          stage('Retry') { 
            steps {
                retry(3) {
                    sh 'Retry failure...'
                }
            }
        }
    }
}

在这里插入图片描述
7 使用环境变量

pipeline {
    agent any
    #在这里进行环境变量的定义
    environment {
        EV1 = 'e1'
        EV2 = 'e2'
    }
    stages {
        stage('Build') { 
            steps {
                #在后面的i奥本中进行应用
                sh 'echo "Hello, $NAME1 and $NAME2"'
            }
        }
    }
}

上面的例子是为了方便演示,这里也提供一个生产环境中会使用的真正的pipeline,是一个脱敏后的demo, 然后我们还可加一些代码检查机制在构建步骤里面,关于代码检查:

pipeline {
    agent {
        node {
            label 'Slave1'
        }
    }
    environment {
        
         def artifactId = 'xxxx'
         def projectNameSpace='backend'
         def harborIp='ip:8888'
    }
    stages{
        stage('pull'){
            steps{
                git branch: 'master', credentialsId: 'jenkins-gitlab', url: 'http:xxxx.git'
            }
        }
        stage('compiler'){
            steps{ 
            
                sh '''
                 mvn clean package -DskipTests -Pmaster
                '''
            }
        }
        stage('build'){
            environment {
                def version = sh script: 'mvn org.apache.maven.plugins:maven-help-plugin:3.1.0:evaluate -Dexpression=project.version -q -DforceStdout', returnStdout: true
            } 
            steps{
                 sh '''
                 cp -r ./gis-config    startup/demo-project/target/
                mv ./startup/demo-project/Dockerfile startup/demo-project/target/Dockerfile
                docker build -t ${harborIp}/${projectNameSpace}/b_${artifactId}:${version} startup/demo-project/target
                docker build -t ${harborIp}/${projectNameSpace}/b_${artifactId}:1.1.8 startup/demo-project/target
                '''
            }
        }
		stage('push'){
		    environment {
                def version = sh script: 'mvn org.apache.maven.plugins:maven-help-plugin:3.1.0:evaluate -Dexpression=project.version -q -DforceStdout', returnStdout: true
            } 
            steps{
                sh '''
                docker push ${harborIp}/${projectNameSpace}/b_${artifactId}:${version}
                docker push ${harborIp}/${projectNameSpace}/b_${artifactId}:1.1.8
                '''
            }
        }
    }
}

8 使用post action

pipeline {
   agent any

   stages {
       stage('Build') { 
           steps {
               sh 'echo "multi-steps pipeline"'
               sh '''
                   echo "multi command"
                   pwd
                   ls
               '''
           }
       }
       stage('Test') { 
           steps {
               echo 'Testing project...'
           }
       }
      stage('Deploy') { 
           steps {
               retry(3) {
                   sh 'echo hello_world'
               }
               timeout(time: 3, unit: 'SECONDS') {
                   sh 'sleep 5'
               }
           }
       }
         stage('Push') { 
           steps {
               echo 'Pusing to harbor ...'
           }
       }
         stage('Retry') { 
           steps {
               retry(3) {
                   sh 'Retry failure...'
               }
           }
       }
   }
    post {
      
       always {
           echo 'always executed'
       }
     
       success {
           echo 'executed if this test success'
       }
      
       failure {
           echo 'executed if this test fails'
       }
   }
}

在这里插入图片描述

Blue Ocean

除了在Jenkins项目配置中写入Pipeline DSL, 还可以通过BlueOcean UI设置流水线项目。

Blue Ocean 重新思考Jenkins的用户体验,重新设计Jenkins Pipeline, 但与原有的Jenkins作业兼容,增加了新的特性:

  • Pipeline可视化
  • 异常处理可视化
  • Pipeline 编辑器
  • Git集成协作

但是BlueOcean暂时还不成熟,原有的Jenkins classic UI依然保留。需要以插件的形式安装BlueOcean

BlueOcean Plugin

默认情况下不安装 BlueOcean Plugin,手动安装流程如下

  • Manage Jenkins > Manage Plugins > Available Tab
  • 在filter框内输入blue ocean,点击安装
  • Blue Ocean 会自动安装有依赖关系的插件
  • 重启

Dashboard左侧出现Open Blue Ocean

这个其实就是,将Pipe的脚本采用UI的界面来配置,这里演示了,感兴趣的可以去试试,我还是喜欢直接写脚本。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1394020.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

模具制造企业ERP系统有哪些?企业怎么选型适配的软件

模具的生产管理过程比较繁琐,涵盖接单报价、车间排期、班组负荷评估、库存盘点、材料采购、供应商选择、工艺流转、品质检验等诸多环节。 有些采用传统管理手段的模具制造企业存在各业务数据传递不畅、信息滞后、不能及时掌握订单和车间生产情况,难以对…

SD-WAN企业组网:实现高效、安全的跨国企业连接

在当今数字化时代,企业日益全球化,跨国办公成为常态。为了应对这一挑战,越来越多的企业选择采用先进的网络技术,其中SD-WAN(软件定义广域网)便是一种备受青睐的解决方案。 什么是SD-WAN企业组网&#xff1…

【LeetCode每日一题】2171. 拿出最少数目的魔法豆

2024-1-18 文章目录 [2171. 拿出最少数目的魔法豆](https://leetcode.cn/problems/removing-minimum-number-of-magic-beans/)思路: 2171. 拿出最少数目的魔法豆 思路: 对输入的数组进行排序,使得数组中的元素按照升序排列。初始化一个变量s…

易懂的方式讲解ARM中断原理以及中断嵌套方法

ARM有七种模式,我们这里只讨论SVC、IRQ和FIQ模式。 我们可以假设ARM核心有两根中断引脚(实际上是看不见的),一根叫 irq pin, 一根叫fiq pin。在ARM的cpsr中,有一个I位和一个F位,分别用来禁止IRQ和FIQ。 先…

flink 最后一个窗口一直没有新数据,窗口不关闭问题

flink 最后一个窗口一直没有新数据&#xff0c;窗口不关闭问题 自定义实现 WatermarkStrategy接口 自定义实现 WatermarkStrategy接口 代码&#xff1a; public static class WatermarkDemoFunction implements WatermarkStrategy<JSONObject>{private Tuple2<Long,B…

第17章_反射机制拓展练习(关于Class,反射的应用,综合练习)

文章目录 第17章_反射机制拓展练习关于Class1、获取Class对象 反射的应用2、创建对象3、修改属性值4、调用方法5、获取类型信息6、榨汁机7、获取泛型参数8、自定义注解19、自定义注解2 综合练习10、AtguiguDemo11、AtguiguStudent12、自定义注解 第17章_反射机制拓展练习 关于C…

AttributeError: ‘DataFrame‘ object has no attribute ‘ix‘

文章目录 报错信息报错原因解决方案 报错信息 AttributeError: DataFrame object has no attribute ix 报错原因 这个ix属性在最新的pandas版本中已经升级修改。 解决方案 修改前 column01 dataset.ix[1, roomtype] 修改后 column01 dataset.loc[:,total_price] 关注公…

芯片制造上下游产业链及其工艺

整个产业链可分为&#xff1a;设计验证&#xff0c;晶圆制造&#xff0c;封装测试 设计验证&#xff1a;系统设计&#xff0c;逻辑设计&#xff0c;电路设计&#xff0c;物理设计 晶圆制造&#xff1a;拉单晶&#xff0c;磨外圆&#xff0c;切片&#xff0c;倒角&#xff0c;…

海思3559 yolov5模型转wk详细笔记

文章目录 前言1.编译caffer1.1安装虚拟机1.2安装caffer1.3编译python接口 2.适应wk的yolov5模型训练2.1下载yolov5-6.0项目源码2.2安装yolov5-6.0运行环境2.3修改模型2.4修改数据集2.5修改模型算子2.6 模型训练 3.模型转换&#xff1a;pt->onnx->caffe->wk3.1 pt->…

Docker安装Nginx并部署MySQL容器构建

一.MySQL容器的构建 1.创建MySQL根目录及配置文件夹&data文件夹 mkdir -p mysql/{conf,data} 2.上传配置文件 将配置文件上传到conf文件夹&#xff08;数据库配置文件已放到置顶资源中&#xff09; 3.命令构建MySQL容器 /soft/mysql/conf/my.cnf:/etc/my.cnf目录为我们…

如何安装配置VisualSVN服务并实现公网访问本地服务【内网穿透】

文章目录 前言1. VisualSVN安装与配置2. VisualSVN Server管理界面配置3. 安装cpolar内网穿透3.1 注册账号3.2 下载cpolar客户端3.3 登录cpolar web ui管理界面3.4 创建公网地址 4. 固定公网地址访问 前言 SVN 是 subversion 的缩写&#xff0c;是一个开放源代码的版本控制系统…

STM32入门教程-2023版【4-1】OLED调试工具

关注 点赞 不错过精彩内容 大家好&#xff0c;我是硬核王同学&#xff0c;最近在做免费的嵌入式知识分享&#xff0c;帮助对嵌入式感兴趣的同学学习嵌入式、做项目、找工作! 一、概述 在这一节先提前介绍一下&#xff0c;在以后的教程中我们会经常用到这个显示屏&#xff0…

javaScript设计模式-工厂

它的好处是消除对象间的耦合度&#xff0c;在派生子类时提供了更大的灵活性。但盲目的把普通的构造函数扔在一边&#xff0c;并不值得提倡。如果要采一不可能另外换用一个类&#xff0c;或都不需要在运行期间在一系列可互换的类中进行选择&#xff0c;就不应该使用。这样在后期…

中仕公考:国考进面后资格复审需要准备什么?

参加国考面试的考生在资格审核阶段需要准备以下材料&#xff1a; 1、本人身份证、学生证或工作证复印件。 2、公共科目笔试准考证复印件。 3、考试报名登记表。 4、本(专)科、研究生各阶段学历、学位证书(应届毕业生没有可以暂时不提供)。 5、报名资料上填写的各类证书材料…

页面数据类型为json,后端接受json数据

项目结构 依赖pom.xml <dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>5.2.8.RELEASE</version></dependency><dependency><groupId>org.springframework…

一些面试会问到的奇怪问题与面试总结

1.v-for、v-if先后顺序。 官方不建议一起使用&#xff0c;但是有时候面试的时候会问到。 在vue2中是v-for先与v-if的。 源码js编译结果&#xff1a; _c()就是vm.$createElement()&#xff0c;意思是创建一个虚拟的element&#xff0c;就是返回值是VNode。 _l就是renderlist…

C#,入门教程(18)——分支语句(switch-case)的基础知识

上一篇&#xff1a; C#&#xff0c;入门教程(17)——条件语句&#xff08;if-else&#xff09;的基础知识https://blog.csdn.net/beijinghorn/article/details/124033376 1、switch概述 switch-case分支语句 可以理解为 大号 的 if-else。 switch语句以switch关键字开头&…

redis7部署集群:包含主从模式、哨兵模式、Cluster集群模式等三种模式

前言&#xff1a; redis部署集群常见的一般有三种模式&#xff1a;主从模式&#xff0c;Sentinel&#xff08;哨兵模式&#xff09;&#xff0c;Redis Cluster&#xff08;高可用Cluster集群&#xff09;&#xff0c;根据不同的需求可自定义选择部署方式。 Redis 主从模式&…

2.【Linux】(进程的状态||深入理解fork||底层剖析||task_struct||进程优先级||并行和并发||详解环境变量)

一.进程 1.进程调度 Linux把所有进程通过双向链表的方式连接起来组成任务队列&#xff0c;操作系统和cpu通过选择一个task_struct执行其代码来调度进程。 2.进程的状态 1.运行态&#xff1a;pcb结构体在运行或在运行队列中排队。 2.阻塞态&#xff1a;等待非cpu资源就绪&am…

工厂企业消防安全AI可视化视频智能监管解决方案

一、方案背景 2023年11月20日下午6时30分许&#xff0c;位于江苏省无锡市惠山区前洲街道的某公司突发严重火灾&#xff0c;共造成7人死亡。这次火灾提醒我们工业安全至关重要&#xff0c;企业都应该时刻保持警惕&#xff0c;加强安全意识和培训&#xff0c;提高应对突发事件的…