首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何识别Jenkins pipeline的groovy脚本中的编译错误?

如何识别Jenkins pipeline的groovy脚本中的编译错误?
EN

Stack Overflow用户
提问于 2020-04-06 12:52:38
回答 1查看 354关注 0票数 2

我正在编写Jenkins流水线,我的流水线相当大,因此为了测试目的,我创建了一个小的,我添加了新的代码并想要测试。

在小测试流水线中测试完代码后,我将代码复制/粘贴到原始的大流水线中。当运行大型流水线时,在运行了几个小时后,它失败了,原因很简单,比如没有定义变量,这是从测试流水线复制/粘贴时遗漏的。

这些微不足道的错误在Jenkins Pipeline UI和Intellij Idea(我使用的)中都没有发现。

有没有人可以帮助我,如何避免这些小错误,使管道运行了很长时间后不会失败?

EN

回答 1

Stack Overflow用户

发布于 2020-04-06 13:56:36

您应该考虑使用Pipeline Unit Test库为您的管道设置单元测试。它允许您在不到1秒的时间内编译和模拟复杂流水线的执行。当然,您可能需要花费一些时间来正确配置您的单元测试,但这是值得投资的工作。

您可以从打印调用堆栈的简单测试开始,例如:

代码语言:javascript
运行
复制
import com.lesfurets.jenkins.unit.BasePipelineTest

class TestExampleJob extends BasePipelineTest {

        //...

        @Test
        void should_execute_without_errors() throws Exception {
            def script = loadScript("job/exampleJob.jenkins")
            script.execute()
            printCallStack()
        }
}

如果您在调用堆栈中没有看到错误,则可以添加assertJobStatusSuccess()来验证管道的执行是否没有导致构建状态的更改。然后,您可以开始添加诸如assertCallStackContains(str)之类的内容,以开始验证在执行过程中是否存在特定的命令或阶段。

此单元测试还应捕获任何(或至少大多数)编译问题。在极少数情况下,管道单元测试通过,但在Jenkins上执行的管道失败。我在我的Jenkins共享库中使用了这个库两年,它为我节省了数百小时的手动测试和捕获简单错误的时间。

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

https://stackoverflow.com/questions/61053157

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档