4

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);
}

私はこれでひどく助けが必要です、誰かが私を助けてください。

4

2 に答える 2

7

以下のスクリプトは、すべての 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()
  }
}
于 2014-12-25T10:01:58.063 に答える