为了账号安全,请及时绑定邮箱和手机立即绑定

Jenkins 在脚本化 Jenkinsfile 的分布式构建中找不到 krb5.conf 文件

Jenkins 在脚本化 Jenkinsfile 的分布式构建中找不到 krb5.conf 文件

繁花不似锦 2021-08-25 10:04:56
我在我们的分布式 Jenkins 构建环境中运行了一个脚本化的 Jenkinsfile。我在 Jenkinsfile 中有执行 Kerberos 身份验证的代码。该代码基于两个小型 Java 程序,均成功通过 Kerberos 身份验证。这两个 Java 程序在我的 Windows 工作站和 Linux 虚拟机来宾上运行。也就是说:我有一对工作的 Java 程序,它们使用一组 Kerberos 配置文件从 Windows 和 Linux 成功执行 Kerberos 身份验证。当我将代码转换为我的 Jenkinsfile 时,它显然在第 1 步失败:找到我精心构建的 krb5.conf(和 login.conf)文件。Kerberos 代码位于正确配置的全局共享库中。我知道它配置正确,因为该库在我的 Jenkinsfile 中的其他地方使用,我知道它已经从我们的存储库下载了正确的 Kerberos 库,因为我没有得到任何类型的编译或类未找到错误。具体的错误消息,我没有设法在几十个不同的构建中让步,试图将 krb5.conf 文件放在我认为 Jenkins 可能会寻找它的任何地方,是这样的:GSSException: Invalid name provided (Mechanism level: KrbException: Cannot locate default realm)是的,有一个更长的堆栈跟踪,但如果你知道发生了什么,这就是你所需要的。我尝试使用 Jenkinsfile 中的 System.setProperty() 指向一个已签入项目的文件,使用 Jenkins 文件凭据创建,并使用 writeFile 步骤将包含配置文件的字符串直接写入构建工作区。在每种情况下,Jenkins 似乎都找不到 krb5.conf 文件,并且我收到相同的“无法找到默认领域”错误。由于各种原因,将文件放在 /etc 中是有问题的。另外,当有一个明确阐明的算法来查找它们时,我真的应该将 Kerberos 配置文件放在那里,而且我似乎正在遵循它吗?如果您知道发生了什么,任何帮助将不胜感激。注意:我已使用此处讨论的 krb5.conf 和 login.conf 文件成功通过 Kerberos 身份验证。他们工作。Kerberos 和我的配置似乎不是问题。无论詹金斯在做什么或不做什么似乎都是问题所在。
查看完整描述

2 回答

?
慕的地8271018

TA贡献1796条经验 获得超4个赞

回答我自己的问题,因为我最终找到了解决此问题的方法,并在我们的构建过程中成功地将 Kerberos 身份验证(以某种方式)与 Jenkins Pipeline 结合使用。

我们的 Jenkins 实例在 AWS 云的一小部分中使用了许多执行程序。实际上,我们管道中唯一在执行器上运行的部分是构建步骤:Jenkins 将工作区检出到构建节点(执行器)并在这些节点上执行构建。

几乎所有其他内容,以及 Jenkins 所谓的全局共享库中的所有内容,包括在我的原始问题中引用的 Kerberos 代码,实际上都是在 master 上运行的: 即使您将调用包装在 node() 中的全局共享库中的函数进入您的 Jenkinsfile,这些调用仍然在 master 上运行。

因为,很明显,对吧?

我试图做的是将 krb5.conf 文件放在它应该在构建节点上的所有位置。但是由于我的 Kerberos 代码不是构建的一部分(或其他几个步骤之一,如在 Jenkins 中的节点上运行的 sh()),它没有发生在节点上:它发生在 Jenkins 主节点上. 即使调用包含在节点步骤中。我不苦。没关系。

将 krb5.conf 文件放在 master 上的正确位置解决了这个问题,但产生了其他问题。最终,我将 Kerberos 逻辑与相应的配置文件一起放入 jar 中的一个小型 Java 命令行实用程序中。这是通过 curl 下载并执行的,所有这些都在我们管道的 sh() 步骤中。不是最优雅的解决方案,但即使在与 Cloudbees 支持讨论了这个问题之后,这也是他们为我们尝试做的事情推荐的解决方案。


查看完整回答
反对 回复 2021-08-25
?
芜湖不芜

TA贡献1796条经验 获得超7个赞

JDK 中的 Kerberos 实现使用系统属性“java.security.krb5.conf”来定位 krb5.conf。我不确定您是否在使用 3rd-party Kerberos 库。


查看完整回答
反对 回复 2021-08-25
  • 2 回答
  • 0 关注
  • 278 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信