2015-10-23 113 views
3

我有要求將登錄的用戶ID信息導入Jenkins插件。如何獲取Jenkins登錄用戶

我創建了HelloWorldclass,它擴展了hudson.tasks.Builder類來創建插件。從這個類中,我試圖讓登錄的用戶執行方法。

我已經嘗試過各種選項,但無法獲取登錄的用戶,每個選項都返回SYSTEM作爲用戶ID。

User.current(): - 在Jenkins控制檯上返回SYSTEM,但在jenkins腳本控制檯上給出了完美的結果,但是相同的代碼沒有記錄用戶信息。然而,當我四處打獵時,我可以看到用戶ID始終顯示在用戶界面的右上角,嘲弄我,因爲這是我想要的信息,但看起來不可用。

任何人都可以幫助解決這個問題。

回答

0

我認爲這是jenkins問題。如果您的類擴展了hudson.tasks.Builder,那麼它將不會通過調用方法User.Current()爲您提供已記錄的使用信息,而是它將爲您提供SYSTEM用戶。但是如果你從其他應該擴展Jenkins類的類調用同樣的方法,那麼它可能會讓你登錄的用戶。

在我的情況下,我創建了另一個類,它擴展了hudson.model.ManagementLink並用hudson.Extension註釋進行了註釋。在這個類中User.Current()給我登錄的用戶。

+0

你可以添加代碼示例嗎? – burtsevyg

0

User.current()獲取代表當前用戶的User對象,如果在Jenkins的「腳本控制檯」中打印該對象,則調用toString()。這又反過來很可能調用getFullName()(或getDisplayName() - 未在代碼中檢查它,並且它在API中既不明顯,也沒有正確的描述,也沒有管理用戶UI,因爲只有一個字段:全名)。

User.current().getId()獲取用戶的ID。

請參閱hudson.model.User

+0

這是真的Gerold Broser,但在我的情況下,我試圖在我的類中擴展hudson.tasks.Builder.perform(),但不知何故詹金斯沒有給我當前記錄的用戶名。 –