Skip to content

Instantly share code, notes, and snippets.

@hishida
Created November 10, 2015 00:33
Show Gist options
  • Star 2 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save hishida/c9603817a911ffbdce50 to your computer and use it in GitHub Desktop.
Save hishida/c9603817a911ffbdce50 to your computer and use it in GitHub Desktop.
Copy all of Jenkins jobs that is included in certain directory.
#!/bin/bash
# ex: copy_jenkins_jobs.sh /tmp/jenkinsjobs
JENKINS_URL="http://localhost"
CONFIG_TMP_XML="config_tmp.xml"
DIR=$1
files="$DIR/*"
for filepath in $files; do
if [ -d $filepath ]; then
PROJECT=${filepath##*/}
# copy config file
cp $DIR/$PROJECT/config.xml $CONFIG_TMP_XML
# create a new job
curl -f -s -X POST -o /dev/null --data-binary "@$CONFIG_TMP_XML" -H "Content-Type:text/xml" "$JENKINS_URL/createItem?name=${PROJECT}"
if [ $? -ne 0 ]; then
echo "WARN: $PROJECT already exists on the jenkins server. No action taken."
continue
fi
# disable job
curl -s -o /dev/null --data disable "$JENKINS_URL/job/$PROJECT/disable"
# remove temporary config file
rm $CONFIG_TMP_XML
echo "SUCCESS: $PROJECT copied successfully."
fi
done
@hishida
Copy link
Author

hishida commented Nov 10, 2015

http://qiita.com/hishida/items/3c5f1ce84af751bdca74
特定のディレクトリのJenkinsジョブをすべてコピーします。

  • 引数にコピーしたいジョブを格納したディレクトリを指定します。(旧環境のjobs以下をコピーしてきたものなどです)
  • 変数JENKINS_URLはlocalhostを指定していますが、リモートのURLに変更してもできると思います(試していません)
  • ディレクトリ名をそのままジョブ名にしますが、コピー先のJenkinsに同名のジョブがある場合は警告を出してコピーしません。
  • コピー後はジョブを無効化します。(自動実行されると困る場合もあるので)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment