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 庫。
添加回答
舉報