2013-10-14 43 views
2

我正在爲Jenkins編寫構建通知插件。 SCM存儲庫URL(SCM作爲git開始)包含我想要在代碼中獲得的有用信息。作爲Jenkins API的初學者,我很難弄清楚我應該如何去檢索作業的存儲庫位置。這是可行的,如果是這樣,如何?在Jenkins構建插件中獲取作業存儲庫URL

+0

我也在尋找答案,我一直在尋找JavaDocs和插件源代碼,沒有成功。我知道如何使用XML來做到這一點,但這種方式顯得過於複雜,緩慢且容易出錯。必須有一種做'scm.getUrl()'的方法 – Illidanek

回答

1

終於找到了答案!所需的方法未在摘要SCM類中定義,而是由擴展它的類定義。所以當你打電話給project.getSCM()時,你必須把它轉換成你實際擁有的SCM類型(GitSCM,SubversionSCM等)。

我發展我的插件使用Subversion的工作,所以我通過source code尋找Subversion的插件,並發現它返回一個ModuleLocation[]包含在該項目中所有SVN倉庫的信息的方法getLocations。簡單地循環訪問ModuleLocation[]並致電getSVNURL()可以獲得我想要的信息。然後,我可以根據需要使用SVNURLtoString()爲我提供完整的存儲庫路徑)。

對於你的情況,對於Git,source code顯示有一種方法稱爲getRepositories(),它返回List<RemoteConfig>。查看RemoteConfig source code,瞭解哪種方法可以爲您提供所需的信息。 (我相信getURIs()將做到這一點)。

3

存儲庫在作業的config.xml中可用。

的http:// [詹金斯服務器] /工作/ [任務] /config.xml

2

我設法SVN倉庫的URL使用下面的代碼特殊作業:

String jobName = manager.build.project.getName() 
def job = hudson.model.Hudson.instance.getItem(jobName) 
def svnScm = job.scm 
def svnLocation = svnScm.getLocations() 
def svnURLstr = svnLocation[0].getSVNURL().toString() 

也許這將是有用的人。

相關問題