1

私はジェンキンスに要件があります。

  1. たとえば、特定の構成を持つビュー ABC に 10 個のジョブがあります。
  2. ここで、Jenkins XYZ で新しいビューを作成し、ABC のすべてのジョブを別の名前で複製し、SCM URL などの構成を変更する必要があります。

これを行う可能性のあるグルーヴィーなスクリプトに出くわしましたが、グルーヴィーについてはあまり知りません

https://wiki.jenkins-ci.org/display/JENKINS/Clone+all+projects+in+a+View

リリースごとに新しいブランチ (新しい URL) を作成します。したがって、ビュー ABC の下のジョブは、別の名前と更新された URL で XYZ にコピーする必要があります。各ジョブを別々の名前で個別に作成してから XYZ ビューに追加するのに時間を無駄にしたくありません。

どんな助けでも大歓迎です。

4

2 に答える 2

1

これには、ビューを作成するためのインターフェースも含まれているjenkins job dslを使用できます

これを使用して、ビュー内のジョブを反復できます

http://<your jenkins server>:<your jenkins port if its not on 80>/view/<your view>/api/json

次に、ジョブコマンドでジョブを複製します

job{
  name 'new name'
  using 'original name'

  //other configuration 
}

これはすべて、別のジョブのビルドステップとして groovy でコーディングされています。ビューとジョブに名前を付けたり、SCM から追い出すためのパラメーターを設定することもできます。


編集いい質問です。こんな感じで実装しました

templateView という名前のビュー

templateJobA、templateJobBなどと呼ばれるジョブ

def templateJobsURL = new URL("http://jenkins-server:8080/view/templateView/api/json")
def templateJobs = new groovy.json.JsonSlurper().parse(templateJobsURL.newReader())
def newJobs = []

templateJobs.jobs.each { 
    def templateName = it.name
    def newName = templateName.replaceAll('template','new')
    job {
        name newName
        using templateName
    }
    newJobs.push(newName)
    println templateName + ' ' + newName
}

view(type: ListView) {
    name('new')
    description('All jobs for project A')
    jobs {
        newJobs.each{
           names (it)
           println 'view add ' + it
        }
    }
    columns {
        status()
        weather()
        name()
        lastSuccess()
        lastFailure()
        lastDuration()
        buildButton()
    }
}
于 2014-06-17T00:07:17.627 に答える