2

我正在为 Jenkins 编写一个构建通知插件。SCM 存储库 URL(SCM 以 git 开头)包含我想在我的代码中获取的有用信息。作为 Jenkins API 的初学者,我无法弄清楚我应该如何检索作业的存储库位置。这是可行的,如果可行,怎么做?

4

3 回答 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()即可获得我想要的信息。然后我可以根据需要使用SVNURLtoString()给我完整的存储库路径)。

在您的情况下,对于 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 回答