如何在所有Jenkins作业中更改Git URL

如何在所有Jenkins作业中更改Git URL,jenkins,jenkins-plugins,jenkins-cli,django-jenkins,jenkins-scriptler,Jenkins,Jenkins Plugins,Jenkins Cli,Django Jenkins,Jenkins Scriptler,我在Jenkins有100多个工作,自从我们更改Git服务器以来,我必须在每个工作中更改Git URL。 我必须遍历每个作业并更改Git URL。有人能帮我写一个groovy脚本吗 我能够遍历每个作业,但无法获取或更改Git URL: import hudson.plugins.emailext.* import hudson.model.* import hudson.maven.* import hudson.maven.reporters.* import hudson.tasks.*

我在Jenkins有100多个工作,自从我们更改Git服务器以来,我必须在每个工作中更改Git URL。 我必须遍历每个作业并更改Git URL。有人能帮我写一个groovy脚本吗

我能够遍历每个作业,但无法获取或更改Git URL:

import hudson.plugins.emailext.*
import hudson.model.*
import hudson.maven.*
import hudson.maven.reporters.*
import hudson.tasks.*

// For each project
for(item in Hudson.instance.items) {
 println("JOB : " + item.name);
}

在这方面我急需帮助,请有人帮帮我。

我会关闭服务器,用脚本(sed/awk perl或其他什么)编辑所有config.xml文件,然后重新启动jenkins以加载新的配置

如果关闭jenkins不是一个选项,那么可以使用下面的内容编辑并发布每个config.xml

GET http://myserver/job/config.xml| sed s/oldurl/newurl/g |POST http://myserver/job/config.xml

下面的脚本将修改所有Git URL。您需要填写modifyGitUrl方法。该脚本是为Git插件版本2.3.2编写的。检查以将其调整到所需的版本,例如,构造函数参数可能已更改

import hudson.plugins.git.*
import jenkins.*
import jenkins.model.*

def modifyGitUrl(url) {
  // Your script here
  return url + "modified"
}

Jenkins.instance.items.each {
  if (it.scm instanceof GitSCM) {
    def oldScm = it.scm
    def newUserRemoteConfigs = oldScm.userRemoteConfigs.collect {
      new UserRemoteConfig(modifyGitUrl(it.url), it.name, it.refspec, it.credentialsId)
    }
    def newScm = new GitSCM(newUserRemoteConfigs, oldScm.branches, oldScm.doGenerateSubmoduleConfigurations,
                            oldScm.submoduleCfg, oldScm.browser, oldScm.gitTool, oldScm.extensions)
    it.scm = newScm 
    it.save()
  }
}

jenkin使用的git实例位于一个中心位置;詹金斯的配置页面。选择git作为SCM的项目使用该设置。是否有关于如何使用上述脚本的介绍?