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

Hou*_*und 3 jenkins jenkins-plugins django-jenkins jenkins-scriptler jenkins-cli

我在Jenkins有超过100个工作,因为我们更改了git服务器,所以我必须在每个工作中更改Git URL.我必须遍历每个工作并更改Git URL.任何人都可以用一个时髦的脚本来帮助我吗?

我能够遍历每个作业,但无法获取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);
}
Run Code Online (Sandbox Code Playgroud)

我非常需要帮助,请有人帮助我.

cei*_*ors 6

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

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()
  }
}
Run Code Online (Sandbox Code Playgroud)