无需提交即可测试对 Jenkins Pipeline 共享库的修改

Test modifications to Jenkins Pipeline shared library without needing a commit

场景: 我在一个项目中有一个 JenkinsFile,它使用 @Library('my-lib') 语法引用共享管道库中的代码。我想测试对我的库函数的更改,而无需执行对我的库 repo 的提交。

我意识到我可以在我的 include 语句中针对库的特定版本或分支。我还意识到我可以通过使用 Jenkins UI 中的 "Replay" 功能修改 JenkinsFile 中的脚本而无需提交。如何在不需要提交我正在测试的分支的情况下测试对共享库代码的修改?现在,我们必须在对我们的库代码进行每次调整时执行一次提交,并且我们不希望拥有超级粗略的提交历史记录。换句话说,我们只希望将我们知道有效的代码提交到我们的库 repo。

对于我的用例,我想测试在不同分支上创建的库变量的更改。

由于回放将使用已经设置的那些,您需要一种清除它们的方法,以确认它们已正确加载。

我还没有检查是否有 "cleaner" 方法可以做到这一点。这将是下一步。

这是我的解决方法:

  1. 进入重播并评论 Mainscript (Jenkinsfile) 上的 @Library('libname')

    //@Library('libname')
    
  2. 运行 构建。这将按预期失败并清除之前的重播变量。

  3. 再次进入replay,取消注释调整库测试分支

    @Library('libname@test-branch')
    
  4. 构建应该 运行 成功并且重播变量应该反映更改。

原来我要么瞎了,要么 Jenkins Pipeline 现在支持在使用 "Replay" 功能时编辑库代码。每当您将新文件添加到您的库中时,您都必须进行提交,以使其显示在重放屏幕上。一旦它在那里,您就可以对其进行编辑,而无需每次都进行提交。一旦您满意它正在使用重放工作,那么您可以提交并推送。