Как минимизировать сложность этого кода, избегая его обхода всей работы Дженкинса (скажем, 5000 работ?) - PullRequest
0 голосов
/ 23 октября 2019

Я изменяю URL-адрес SCM моей работы Дженкинса с, скажем, gitlab на github с помощью скрипта Groovy. Есть ли способ минимизировать сложность этого кода?

Я использовал Jenkins.instance.items.each {}, который проходит через все задания в моем jenkins

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

def modifyGitUrl(url) {
    def newurl = url.replace("source", "destination")
    return newurl
                }

    def modifyGitID(credentialsId) {
    def newID = ("Jenkins User ID")
    return newID
                }

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