Plugins 在Jenkins构建插件中获取作业存储库URL
我正在为Jenkins编写一个构建通知插件。SCM存储库URL(SCM首先是git)包含我希望在代码中获得的有用信息。作为Jenkins API的初学者,我很难弄清楚应该如何检索作业的存储库位置。这是否可行,如果可行,如何实现?存储库位于作业的config.xml中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()时,必须将其转换为您实际拥
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()
或其他操作