「Jenkins」Jenkins API で別フォルダにジョブを一括コピーする

Jenkins API を使ってあるフォルダに存在するジョブを別フォルダに一括コピーするスクリプトのサンプル。

#!/bin/bash

# get job list under folder
curl --user jenkins:112fceef147dfee13be6f161d883b029fd "http://172.20.10.5:8080/job/Folder1/api/json" | jq -r .jobs[].name > job_list

# download config.xml
cat job_list | while read line
do
  #echo $line
  curl -o "${line}_config.xml" --user jenkins:112fceef147dfee13be6f161d883b029fd "http://172.20.10.5:8080/job/Folder1/job/${line}/config.xml"
done

# create job
cat job_list | while read line
do
  curl -s -XPOST --data-binary @"${line}_config.xml" -H "Content-Type:text/xml" --user jenkins:112fceef147dfee13be6f161d883b029fd -H "Jenkins-Crumb: 4fabb80a28c94f32ff377272b9411507" "http://jenkins:jenkins@172.20.10.5:8080/job/Folder2/createItem?name=${line}"
done


フォルダの一階層したジョブ前提になっちゃってますが、まぁこんなところで。
APIトークンやCRUMBの調べ方は下記のエントリーを参照してください。

a4dosanddos.hatenablog.com

軽い感じですが、以上です。

[環境情報]
Jenkins 2.60.3