Jenkins-Pipeline

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的界面来配置,这里演示了,感兴趣的可以去试试,我还是喜欢直接写脚本。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

STL之vector容器的介绍与模拟实现

STL之vector容器的介绍与模拟实现 1. vector简介2. vector容器使用2.1vectord 定义2.2 vector iterator 的使用2.3 vector 空间增长问题2.4 注意事项 3. vector功能模拟实现3.1 架构搭建3.2 空间控制板块3.3 迭代器3.4 增加/删除数据3.5 运算符重载3.6构造/析构 4. 整体代码 所…

vscode mysql cmake windows 常见问题和推荐文章

1.在windows中安装mingw64和cmake(可查一下网上的安装教程),配置环境变量 2.在vscode中用CMake构建项目的时候,可能会出现这样的问题:“The C compiler identification is unknownn...”,可参考这篇博客 在windows下使用Vscode用…

Java基础面试题(四)

Java基础面试题(四) 文章目录 Java基础面试题(四)Oracle JDK vs OpenJDKJava 和 C 的区别? 文章来自Java Guide 用于学习如有侵权,立即删除 Oracle JDK vs OpenJDK 可能在看这个问题之前很多人和我一样并没有接触和使…

基于springboot+vue的图书个性化推荐系统(前后端分离)

博主主页:猫头鹰源码 博主简介:Java领域优质创作者、CSDN博客专家、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战 主要内容:毕业设计(Javaweb项目|小程序等)、简历模板、学习资料、面试题库、技术咨询 文末联系获取 项目背景…

1. 安装Git

01. 安装Git 最早Git是在Linux上开发的,很长一段时间内,Git也只能在Linux和Unix系统上跑。不过,慢慢地有人把它移植到了Windows上。现在,Git可以在Linux、Unix、Mac和Windows这几大平台上正常运行了。 要使用Git,第一…

【C++入门到精通】智能指针 auto_ptr、unique_ptr简介及C++模拟实现 [ C++入门 ]

阅读导航 引言一、std::auto_ptr1. 简介2. 使用示例3. C模拟实现 二、std::unique_ptr1. 简介2. 使用示例3. C模拟实现 温馨提示 引言 在 C 中,智能指针是一种非常重要的概念,它能够帮助我们自动管理动态分配的内存,避免出现内存泄漏等问题。…

靶机-Billu_b0x root 123456

查找靶机IP nmap查看开放端口22,80 目录扫描 查看网站,典型注入 phpmy 果然是登陆界面,不过不知道账户及密码 in.php php的配置信息,可以看看 add.php 上传文件目录,可以上传,不过没有回显 …

C# ObjectArx 绘制表格并设置单元格合并

第一行默认是标题,可设置行【RowType】进行设置类型 Document doc Application.DocumentManager.MdiActiveDocument;using (Transaction tr doc.TransactionManager.StartOpenCloseTransaction()){BlockTable bt tr.GetObject(doc.Database.BlockTableId, OpenMo…

UE4 添加按键输入事件 并在蓝图中使用按键输入节点

绑定按键 选择Edit/ProjectSettings/Engine/Input 在bindings中可以选择添加ActionMappings或则AxisMappings ActionMappings:按键事件,有按下和抬起两个事件,需要分别用两个键触发AxisMappings:输入事件,返回值为float,对于键盘…

Rust之构建命令行程序(三):重构改进模块化和错误处理

开发环境 Windows 10Rust 1.74.1 VS Code 1.85.1 项目工程 这次创建了新的工程minigrep. 重构改进模块化和错误处理 为了改进我们的程序,我们将修复与程序结构及其处理潜在错误的方式有关的四个问题。首先,我们的main函数现在执行两项任务:解析参数和…

一文了解Servlet

文章目录 1、什么是Servlet2、Servlet快速入门3、Servlet生命周期4、Servlet体系结构5、urlPatern配置6、XML编写Servlet 1、什么是Servlet Servlet是Java提供的一门动态web资源开发技术Servlet是JavaEE规范之一,其实就是一个接口,将来我们需要定义Serv…

Apache JMeter 5.6.3压力测试步骤详解

Apache JMeter 5.6.3压力测试步骤详解 压力测试简介软件测试概述性能测试性能测试指标性能指标推算web资源公式 1. 安装 Jmeter2. 创建测试任务2.1 创建线程组2.2 创建 HTTP 请求2.3 添加HTTP消息头管理器 3.添加查看结果监听器4. 执行测试5. 查看结果6. 非GUI模式测试7. 使用c…

CSS||Emmet语法

1、简介 ​ Emmet语法的前身是Zen coding,它使用缩写,来提高html/css的编写速度, Vscode内部已经集成该语法。 ​ 快速生成HTML结构语法 ​ 快速生成CSS样式语法 2、快速生成HTML结构语法 生成标签 直接输入标签名 按tab键即可 比如 div 然后tab 键&#xff0c; 就可以生成 <…

CSS 设置背景图片

文章目录 设置背景颜色设置背景图片背景图片偏移量计算原点背景图片尺寸设置背景图片位置设置背景图片重复方式设置背景范围设置背景图片是否跟随元素移动测试背景图片 本文概念部分参考&#xff1a;CSS背景background设置 设置背景颜色 background-color 设置背景颜色 设置…

UE5 独立程序的网络TCP/UDP服务器与客户端基础流程

引擎源码版&#xff0c;复制\Engine\Source\Programs\路径下的BlankProgram空项目示例。 重命名BlankProgram&#xff0c;例如CustomTcpProgram&#xff0c;并修改项目名称。 修改.Build.cs内容 修改Target.cs内容 修改Private文件夹内.h.cpp文件名并修改.cpp内容 刷新引擎 …

联想模拟器抓包

联想模拟器抓包 下载抓包工具配置代理并启动模拟器配置代理返回reqable查看抓包数据 下载抓包工具 reqable 配置代理并启动 模拟器配置代理 返回reqable查看抓包数据

定义公共样式css

index.less 文件 // 全局按钮颜色 btn_background: #005298; btn_border-color: #6fa18d;// 默认的 btn_border-color-highlight: #0598d3;// 高亮边框 btn_border-color-success: #36be7e;// 成功边框 btn_font_color: #fff;// 边框颜色 背景色 文字颜色 .btn_public(btn_bo…

外贸网站建设有哪些技巧?如何做海洋建站?

搭建外贸网站需要什么流程步骤&#xff1f;独立网站建站怎么做&#xff1f; 外贸网站的建设变得至关重要。一家成功的外贸企业需要一个强大而专业的在线存在&#xff0c;以便吸引国际客户。在这篇文章中&#xff0c;海洋建站将探讨一些关键的技巧&#xff0c;帮助您打造出色的…

Vg3225vfn压控晶体振荡器规格书

频率范围: 25mhz ~ 500mhz电源电压:3.3 V类型绝对拉力范围:50 10 6分钟。/ 25mhz至42.5 MHz50 MHz至85 MHz&#xff0c;100mhz ~ 170mhz:20 10 6最小&#xff0c;10 10 6分钟。/ 25mhz ~ 250mhz:10 10 6分钟。/ 250 MHz至500 MHz(85C最高)操作温度温度范围:-40℃~ 85℃温度…

低代码开发:解锁数字化转型新维度

在信息化浪潮中&#xff0c;企业正面临着前所未有的挑战与机遇。一方面&#xff0c;市场环境瞬息万变&#xff0c;业务需求迭代频繁&#xff0c;对快速应用开发提出了更高要求&#xff1b;另一方面&#xff0c;传统软件开发模式受限于高成本、长周期等瓶颈&#xff0c;难以满足…