Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/jenkins/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Plugins 在Jenkins构建插件中获取作业存储库URL_Plugins_Jenkins_Jenkins Plugins - Fatal编程技术网

Plugins 在Jenkins构建插件中获取作业存储库URL

Plugins 在Jenkins构建插件中获取作业存储库URL,plugins,jenkins,jenkins-plugins,Plugins,Jenkins,Jenkins Plugins,我正在为Jenkins编写一个构建通知插件。SCM存储库URL(SCM首先是git)包含我希望在代码中获得的有用信息。作为Jenkins API的初学者,我很难弄清楚应该如何检索作业的存储库位置。这是否可行,如果可行,如何实现?存储库位于作业的config.xml中 http://[jenkins server]/job/[job]/config.xml终于找到了答案!所需的方法不是在抽象类中定义的,而是由扩展它的类定义的。因此,当您调用project.getSCM()时,必须将其转换为您实际拥

我正在为Jenkins编写一个构建通知插件。SCM存储库URL(SCM首先是git)包含我希望在代码中获得的有用信息。作为Jenkins API的初学者,我很难弄清楚应该如何检索作业的存储库位置。这是否可行,如果可行,如何实现?

存储库位于作业的config.xml中


http://[jenkins server]/job/[job]/config.xml

终于找到了答案!所需的方法不是在抽象类中定义的,而是由扩展它的类定义的。因此,当您调用
project.getSCM()
时,必须将其转换为您实际拥有的SCM类型(GitSCM、SubversionSCM等)

我正在开发与Subversion一起使用的插件,因此我查看了Subversion插件,找到了方法
getLocations
,该方法返回一个
ModuleLocation[]
,其中包含该项目中所有SVN存储库的信息。只需在
ModuleLocation[]
中循环并调用
getSVNURL()
即可获得所需信息。然后,我可以根据需要使用(
toString()
提供了完整的存储库路径)


在您的例子中,对于Git,显示有一个名为
getRepositories()
的方法,它返回一个
列表。查看RemoteConfig以查看哪个方法可以获得所需的信息。(我相信
getURIs()
会奏效)

我使用以下代码为特定作业获取了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()

也许它会对某些人有用。

我也在寻找答案,我一直在浏览JavaDocs和插件源代码,但没有成功。我知道如何使用xml来实现这一点,但这种方式非常复杂、缓慢而且容易出错。必须有一种方法来执行scm.getUrl()
或其他操作