jenkins批量复制Job项目的shell脚本实现

时间:2025-04-21 07:59:08
#!/bin/bash # Jenkins配置 JENKINS_URL="http://10.10.84.21:8088" USERNAME="xxxx" API_TOKEN="xxxx" SOURCE_FOLDER="test" TARGET_FOLDER="test2" # 检查并创建目标文件夹 function create_folder() { folder_exists=$(curl -s -o /dev/null -w "%{http_code}" -u "$USERNAME:$API_TOKEN" "$JENKINS_URL/job/$TARGET_FOLDER/") if [ "$folder_exists" != "200" ]; then echo "创建文件夹 $TARGET_FOLDER..." curl -X POST -u "$USERNAME:$API_TOKEN" -H "Content-Type:application/xml" -d @folder_config.xml "$JENKINS_URL/createItem?name=$TARGET_FOLDER" fi } # 生成文件夹配置XML(需CloudBees Folder插件) cat > folder_config.xml <<EOF <com.cloudbees.hudson.plugins.folder.Folder> <description>目标文件夹</description> </com.cloudbees.hudson.plugins.folder.Folder> EOF # 获取CSRF Crumb(如果启用) CRUMB=$(curl -s -u "$USERNAME:$API_TOKEN" "$JENKINS_URL/crumbIssuer/api/xml?xpath=concat(//crumbRequestField,\":\",//crumb)") # 主逻辑 create_folder echo "获取源目录Jobs..." JOBS=$(curl -s -u "$USERNAME:$API_TOKEN" "$JENKINS_URL/job/$SOURCE_FOLDER/api/json?tree=jobs%5Bname%5D" | jq -r '.jobs[].name') for JOB in $JOBS; do echo "正在复制:$JOB" curl -X POST -u "$USERNAME:$API_TOKEN" -H "$CRUMB" "$JENKINS_URL/job/$TARGET_FOLDER/createItem?name=$JOB&mode=copy&from=../$SOURCE_FOLDER/$JOB" done echo "复制操作完成!请验证结果。"