我在我们的分布式 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 和我的配置似乎不是问题。无论詹金斯在做什么或不做什么似乎都是问题所在。
慕的地8271018
芜湖不芜
相关分类