亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

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 關注
  • 319 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號