【问题标题】:Getting job repository URL in Jenkins build plugin在 Jenkins 构建插件中获取作业存储库 URL
【发布时间】:2013-10-14 11:25:30
【问题描述】:

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

【问题讨论】:

  • 我也在寻找这个问题的答案,我一直在查看 JavaDocs 和插件源代码,但没有成功。我知道如何使用 xml 来做到这一点,但这种方式非常复杂、缓慢且容易出错。一定有办法做scm.getUrl()什么的

标签: plugins jenkins jenkins-plugins


【解决方案1】:

存储库在作业的 config.xml 中可用。

http://[jenkins 服务器]/job/[job]/config.xml

【讨论】:

    【解决方案2】:

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

    我正在开发我的插件以使用 Subversion,因此我查看了 Subversion 插件的 source code,并找到了方法 getLocations,它返回一个 ModuleLocation[],其中包含有关该项目中所有 SVN 存储库的信息.只需遍历ModuleLocation[] 并调用getSVNURL() 即可获得我想要的信息。然后我可以根据需要使用SVNURLtoString() 给了我完整的存储库路径)。

    在您的情况下,对于 Git,source code 表明有一个名为 getRepositories() 的方法,它返回一个 List<RemoteConfig>。查看 RemoteConfig source code 以查看哪种方法可以为您提供所需的信息。 (我相信getURIs() 会成功的)。

    【讨论】:

      【解决方案3】:

      我设法使用以下代码获取特定作业的 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-04-27
        • 1970-01-01
        • 2022-01-12
        • 1970-01-01
        • 2020-05-25
        • 2018-01-03
        • 2016-06-14
        • 2014-04-08
        • 1970-01-01
        相关资源
        最近更新 更多