首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何在先后阶段执行下一阶段--尽管在Jenkins管道上出现了以前的故障

如何在先后阶段执行下一阶段--尽管在Jenkins管道上出现了以前的故障
EN

Stack Overflow用户
提问于 2021-06-01 20:32:05
回答 2查看 1.2K关注 0票数 0

目前,我在Jenkins中定义了两个阶段,因为它们都需要不同的代理。

这是我的概念代码证明

代码语言:javascript
运行
AI代码解释
复制
stages {
    stage("Run Tests"){
        agent docker
        stage("Do setup"){}
        stage("Testing") {}
        post{
            always{
                echo "always"
            }
            failure {
                echo "failure"
            }
        }
    }
    stage("Generate Reports"){
        agent node-label
        stage("Generate"){

        }
    }
}

我需要不同代理的“生成报告”,因为某些二进制文件位于节点上,而不是在docker容器中。测试运行在节点上的docker共享卷中,因此我获得在节点上生成报告所需的所有工件。

(我曾尝试在后期运行“生成报告”,但它似乎以某种方式在码头容器中运行。)

现在,如果“运行测试”失败,则会跳过"Generate“,因为以前的阶段失败了。任何知道我如何可以强制“生成报告”阶段运行,即使是在前一个阶段的失败。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-06-01 21:25:35

下面是管道。

代码语言:javascript
运行
AI代码解释
复制
pipeline {
agent none
stages {
    stage("Run Tests"){
    agent { label "agent1" }
        stages  {           
            stage("Do setup"){
                steps{
                    sh 'exit 0'
                    }
                }
            stage("Testing") {
                steps {
                    catchError(buildResult: 'SUCCESS', stageResult: 'FAILURE') {
                    sh "exit 1"
                        } //catchError
                    } //steps
                post{
                    always{
                        echo "always"
                        }
                    failure {
                        echo "failure"
                        }
                    } // post
                } // Testing
            } // stages
        } // Run Test

    stage("Generate Reports"){
        agent { label "agent2" }
            steps {
                sh 'exit 0'
            }
        } // Reports
    }    
}

管道是成功的,但是阶段测试显示为失败,您可以选择buildResultstageResult的状态,以防您希望它不稳定或失败:

票数 1
EN

Stack Overflow用户

发布于 2021-06-01 22:00:50

如果希望始终运行"Generate“阶段,那么如果出现故障,可以将早期阶段标记为unstable

通过这种方式,Jenkins将执行所有阶段,并且不会在特定阶段停止错误。

示例:

代码语言:javascript
运行
AI代码解释
复制
stages {
    stage("Run Tests"){
        agent docker
        stage("Do setup"){}
        stage("Testing") {
          steps {
                script {
            // To show an example, Execute "set 1" which will return failure 
            def result = bat label: 'Check bat......', returnStatus: true, script: "set 1"
                   if (result !=0) {
                   // If the result status is not 0 then mark this stage as unstable to continue ahead 
                   // and all later stages will be executed 
                   unstable ('Testing failed')
                   }
                }
            }
         }
    }
}
    stage("Generate Reports"){
        agent node-label
        stage("Generate"){

        }
    }
}

选项2,如果不想通过返回状态处理,可以使用try and catch block

代码语言:javascript
运行
AI代码解释
复制
stage("Testing") {
          steps {
                script {
                 try {
                        // To show an example, Execute "set 1" which will return failure 
                         bat "set 1"
                   }
                   catch (e){
                   unstable('Testing failed!')
                   }
                }
            }
         }

选项3:无论阶段失败,您都可以将返回状态更改为完整构建的成功。

代码语言:javascript
运行
AI代码解释
复制
stage("Testing") {
          steps {
                catchError(buildResult: 'SUCCESS', stageResult: 'FAILURE'){
                script {
                         // To show an example, Execute "set 1" which will return failure 
                         bat "set 1"
                   }
                }
            }

注意:选项3有一个缺点,如果有任何错误,它将不会在同一阶段执行进一步的步骤。

示例:

在本例中,由于bat set 1命令中存在问题,将不会执行打印消息“测试阶段”。

代码语言:javascript
运行
AI代码解释
复制
stage("Testing") {
          steps {
                catchError(buildResult: 'SUCCESS', stageResult: 'FAILURE'){
                script {
                         // To show an example, Execute "set 1" which will return failure 
                         bat "set 1"
                         // Note : Below step will not be executed since there was failure in prev step
                         println "Testing stage"
                   }
                }
            }

选项4:您已经尝试过将生成报告阶段始终保存在“邮报”中

段,以便始终执行,而不考虑任何失败。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67798958

复制
相关文章
ARKit 教学:如何搭配SceneKit来建立一个简单的ARKit Demo设定ARKit SceneKit View从ARSCNView移除物件
增强现实(Argument Reality)来啰!记得宝可梦(Pokemon Go)吗?它当然也是增强现实的代表之一!Apple终于在iOS11将增强现实带进来,也因为iOS11,未来将会有数不清的iPhones和iPads就会搭载AR功能,这将会让ARKit成为世界最大的平台,是的,如果你对建置增强现实的Apps有兴趣,让你就来对地方了。
iOSDevLog
2018/08/22
1.8K0
ARKit 教学:如何搭配SceneKit来建立一个简单的ARKit Demo设定ARKit SceneKit View从ARSCNView移除物件
ARKit 初探
今年7月Apple推出了AR工具ARKit,着实闪着了大家的眼睛。从目前的评测可以知道 ARKit已经非常成熟,完全可以进行商用了。
音视频_李超
2020/04/01
2.4K0
ARKit 初探
到底有多强?苹果的增强现实框架:ARKit
写在前面 其实准备ARKit已经很久了,确切地说当WWDC开始介绍时就开始了。其后参加了苹果的ARKit workShop,加上自己有点事,所以文章一直没发出来,现在再发一篇上手文章,也没什么意义。
郭艺帆
2017/09/05
3.5K0
到底有多强?苹果的增强现实框架:ARKit
ARKit示例 - 第4部分:现实主义 - 照明和PBR
在本文中,我们将在场景中插入更逼真的虚拟内容。我们可以通过使用称为基于物理的渲染(PBR)的技术使用更详细的模型来实现这一点,并且还可以更准确地表示场景中的光照。
iOSDevLog
2018/09/20
1.3K0
ARKit示例 - 第4部分:现实主义 - 照明和PBR
ARKit示例 - 第2部分:平面检测+可视化
在我们的第一个hello world ARKit应用程序中,我们设置了我们的项目并渲染了一个虚拟3D立方体,可以在现实世界中渲染并在您移动时进行跟踪。
iOSDevLog
2018/09/20
3K1
ARKit示例 - 第2部分:平面检测+可视化
SceneKit_高级06_加载顶点、纹理、法线坐标
SceneKit_入门01_旋转人物 SceneKit_入门02_如何创建工程 SceneKit_入门03_节点 SceneKit_入门04_灯光 SceneKit_入门05_照相机 SceneKit_入门06_行为动画 SceneKit_入门07_几何体 SceneKit_入门08_材质 SceneKit_入门09_物理身体 SceneKit_入门10_物理世界 SceneKit_入门11_粒子系统 SceneKit_入门12_物理行为 SceneKit_入门13_骨骼动画 SceneKit_中级01_模型之间的过渡动画 SceneKit_中级02_SCNView 详细讲解 SceneKit_中级03_切换照相机视角 SceneKit_中级04_约束的使用 SceneKit_中级05_力的使用 SceneKit_中级06_场景的切换 SceneKit_中级07_动态修改属性 SceneKit_中级08_阴影详解 SceneKit_中级09_碰撞检测 SceneKit_中级10_滤镜效果制作 SceneKit_中级11_动画事件 SceneKit_高级01_GLSL SceneKit_高级02_粒子系统深入研究 SceneKit_高级03_自定义力 SceneKit_高级04_自定义场景过渡效果 SceneKit_高级05 检测手势点击到节点 SceneKit_高级06_加载顶点、纹理、法线坐标 SceneKit_高级07_SCNProgram用法探究 SceneKit_高级08_天空盒子制作 SceneKit_高级09_雾效果 SceneKit_大神01_掉落的文字 SceneKit_大神02_弹幕来袭 SceneKit_大神03_navigationbar上的3D文字
酷走天涯
2022/05/13
9840
SceneKit_高级06_加载顶点、纹理、法线坐标
ARKit浅析V1.0
本文主要介绍了ARKit框架,包括其开发环境、实现原理、API以及使用场景。ARKit框架是苹果在WWDC2017上推出的,可以用于构建增强现实应用。本文从ARKit的介绍、工作原理、API介绍、使用场景以及一个3D虚拟物体的例子等方面进行了详细阐述。
MelonTeam
2018/01/04
1.9K0
ARKit浅析V1.0
ARKit和CoreLocation:第一部分
演示代码 ARKit和CoreLocation:第一部分 ARKit和CoreLocation:第二部分 ARKit和CoreLocation:第三部分
iOSDevLog
2018/09/20
2.3K0
ARKit和CoreLocation:第一部分
《 iPhone X ARKit Face Tracking 》
该文章讲述了作者从一名普通iOS开发者到Apple开发者的历程,包括开发经历、学习Apple官方文档、开发者社区、开发工具、代码仓库、团队协作、总结与收获。\n在开发过程中,作者通过学习Apple的官方文档,了解了Objective-C以及Swift编程语言,并逐渐掌握了iOS开发的核心概念。通过参加技术社区,了解到了ARKit、SceneKit、Core ML等框架,并深入学习了Objective-C与Swift编程语言的基础知识和最佳实践。在开发工具方面,作者使用了Xcode、Instruments、Sketch、Adobe XD、Figma等工具。在团队协作方面,作者通过使用GitHub进行版本控制,与团队成员进行代码共享、沟通、协作。\n通过开发iOS应用,作者深入了解了ARKit、SceneKit、Core ML等框架的原理和最佳实践,并逐渐掌握了基于这些框架的开发流程。同时,作者通过总结与收获,逐渐形成了一套适用于自己的iOS开发学习体系。\n
腾讯Bugly
2017/11/20
3.7K0
《 iPhone X ARKit Face Tracking 》
《iPhone X ARKit Face Tracking》
有幸去 Cupertino 苹果总部参加了 iPhone X 的封闭开发,本文主要分享一下iPhone X上使用 ARKit 进行人脸追踪及 3D 建模的相关内容。
腾讯Bugly
2018/03/23
2K0
ARKit:增强现实技术在美团到餐业务的实践
增强现实(Augmented Reality)是一种在视觉上呈现虚拟物体与现实场景结合的技术。Apple 公司在 2017 年 6 月正式推出了 ARKit,iOS 开发者可以在这个平台上使用简单便捷的 API 来开发 AR 应用程序。
美团技术团队
2019/03/22
2.1K0
ARKit:增强现实技术在美团到餐业务的实践
ARKit by Example - 第1部分:AR立方体
这篇第一篇文章将使用ARKit创建一个非常简单的hello world AR应用程序。最后,我们将能够在增强的世界中定位3D立方体,并使用我们的iOS设备移动它。
iOSDevLog
2018/09/20
1.3K0
ARKit by Example - 第1部分:AR立方体
OpenGL(八)--纹理相关APIOpenGL(八)--纹理相关API
OpenGL(八)--纹理相关API 1. 原始图像数据 //存储图像数据所占内存大小 size = 图像的高度 * 图像的宽度 * 每个像素所占字节数 像素所占字节数:一般为4Byte,包含RGBA四个通道,每个通道为1Byte(8Bit) 2. 认识函数 像素存储方式 //改变像素存储方式 void glPixelStorei(GLenum pname,GLint param); //恢复像素存储方式 void glPixelStoref(GLenum pname,GLint param); /
用户8893176
2021/08/09
1.3K0
OpenGL(八)--纹理相关APIOpenGL(八)--纹理相关API
ARKit 初学和发布会 Demo
增强现实技术(Augmented Reality,简称 AR) ,概念我就不说了百度百科会告诉你,下面是我在iOS ARKit发布会对iOS AR应用的理解。
星宇大前端
2019/01/15
7150
ARKit示例 - 第3部分:添加几何和物理乐趣
在上一篇文章中,我们使用ARKit来检测现实世界中的水平平面,然后将这些平面可视化。在本文中,我们现在将开始为我们的AR体验添加虚拟内容,并开始与检测到的平面进行交互。
iOSDevLog
2018/09/19
1K0
iOS版 使用ARKit和Swift创建交互式Domino游戏
在下面的教程中,我将向您展示如何使用Swift和ARKit制作有趣的Domino游戏。
iOSDevLog
2019/03/06
2.4K0
iOS版 使用ARKit和Swift创建交互式Domino游戏
SceneKit_入门08_材质
SceneKit_入门01_旋转人物 SceneKit_入门02_如何创建工程 SceneKit_入门03_节点 SceneKit_入门04_灯光 SceneKit_入门05_照相机 SceneKit_入门06_行为动画 SceneKit_入门07_几何体 SceneKit_入门08_材质 SceneKit_入门09_物理身体 SceneKit_入门10_物理世界 SceneKit_入门11_粒子系统 SceneKit_入门12_物理行为 SceneKit_入门13_骨骼动画 SceneKit_中级01_模型之间的过渡动画 SceneKit_中级02_SCNView 详细讲解 SceneKit_中级03_切换照相机视角 SceneKit_中级04_约束的使用 SceneKit_中级05_力的使用 SceneKit_中级06_场景的切换 SceneKit_中级07_动态修改属性 SceneKit_中级08_阴影详解 SceneKit_中级09_碰撞检测 SceneKit_中级10_滤镜效果制作 SceneKit_中级11_动画事件 SceneKit_高级01_GLSL SceneKit_高级02_粒子系统深入研究 SceneKit_高级03_自定义力 SceneKit_高级04_自定义场景过渡效果 SceneKit_高级05 检测手势点击到节点 SceneKit_高级06_加载顶点、纹理、法线坐标 SceneKit_高级07_SCNProgram用法探究 SceneKit_高级08_天空盒子制作 SceneKit_高级09_雾效果 SceneKit_大神01_掉落的文字 SceneKit_大神02_弹幕来袭 SceneKit_大神03_navigationbar上的3D文字
酷走天涯
2022/05/13
1.3K0
SceneKit_入门08_材质
ARKit 简介
ARKit 简介 苹果在AR一直布局VR,最近的苹果开发者大会上,果家终于放出大招:iOS移动端ARKit平台以及VR兼容新桌面操作系统macOS High Sierra。 增强现实(AugmentedReality,简称 AR),是一种实时地计算摄影机影像的位置及角度并加上相应图像的技术,这种技术的目标是在屏幕上把虚拟世界套在现实世界并进行互动。说起AR,其实它并不是第一次出现,不管在国内还是国外,好多大小公司都对AR有所涉猎,去年流行的Pokémon Go,阿里的AR红包,百度的AR地图…都是AR领
xiangzhihong
2018/02/06
2.6K0
ARKit 简介
ARKit 到底怎么实现的
Integrate iOS device camera and motion features to produce augmented reality experiences in your app or game
酷走天涯
2018/09/14
1.1K0
ARKit 到底怎么实现的
建立您的第一个AR体验
此示例应用程序运行ARKit世界跟踪会话,其内容显示在SceneKit视图中。为了演示平面检测,应用程序只需放置一个SCNPlane对象来可视化每个检测到ARPlaneAnchor对象。
iOSDevLog
2018/08/22
1.1K0
建立您的第一个AR体验

相似问题

从起始节点查找DAG中的所有路径

21

查找DAG上两个节点之间的所有路径

21

DAG在Web中不可见

1214

到达DAG中所有节点的最小节点数

21

使用贪心算法访问DAG中的所有节点

22
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档