2 回答
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 支持讨论了这个问题之后,这也是他们为我们尝试做的事情推荐的解决方案。
TA贡献1796条经验 获得超7个赞
JDK 中的 Kerberos 实现使用系统属性“java.security.krb5.conf”来定位 krb5.conf。我不确定您是否在使用 3rd-party Kerberos 库。
添加回答
举报