我正在为 Jenkins 编写一个构建通知插件。SCM 存储库 URL(SCM 以 git 开头)包含我想在我的代码中获取的有用信息。作为 Jenkins API 的初学者,我无法弄清楚我应该如何检索作业的存储库位置。这是可行的,如果可行,怎么做?
问问题
2727 次
3 回答
3
存储库在作业的 config.xml 中可用。
http://[jenkins 服务器]/job/[job]/config.xml
于 2014-02-07T17:52:21.860 回答
2
终于找到答案了!所需的方法不是在抽象SCM类中定义的,而是由扩展它的类定义的。因此,当您调用时,project.getSCM()
您必须将其转换为您实际拥有的 SCM 类型(GitSCM、SubversionSCM 等)。
我正在开发我的插件以使用 Subversion,因此我查看了 Subversion 插件的源代码,并找到了getLocations
返回 a的方法,ModuleLocation[]
其中包含有关该项目中所有 SVN 存储库的信息。只需循环ModuleLocation[]
并调用getSVNURL()
即可获得我想要的信息。然后我可以根据需要使用SVNURL(toString()
给我完整的存储库路径)。
在您的情况下,对于 Git,源代码显示有一个名为 的方法getRepositories()
,它返回一个List<RemoteConfig>
. 查看 RemoteConfig源代码以查看哪种方法可以为您提供所需的信息。(我相信getURIs()
会成功的)。
于 2014-06-03T11:04:24.567 回答
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()
也许它对某人有用。
于 2017-03-22T07:52:13.033 回答