在 bash 脚本中:
jenkins_folder=`cut -d "|" -f1 -s input.csv`
jenkins_url='https://url.com:8181/jenkins/view/'
echo "jenkins_folder : ${jenkins_folder}"
for job in `java -jar jenkins-cli.jar -s ${jenkins_url}${jenkins_folder} list-jobs ${jenkins_folder} `
do
echo "Job name:: ${job} ****"
java -jar jenkins-cli.jar -s ${jenkins_url}${jenkins_folder} get-job ${job} > job.xml
done
给出以下输出
jenkins_folder : Platform-X.X.X-SPO-MyPD-Integration-Dummy
****ame:: NH-AccountManagementAudit-Consumer-MyPD-Integration-DUMMY-Reporting
'; perhaps you meant 'NH-AccountManagementAudit-Consumer-MyPD-Integration-DUMMY-Reporting'?
当我替换所有变量的值并运行以下命令时;效果很好
java -jar jenkins-cli.jar -s https://url.com:8181/jenkins/view/Platform-X.X.X-SPO-MyPD-Integration-Dummy get-job NH-AccountManagementAudit-Consumer-MyPD-Integration-DUMMY-Reporting > job.xml
我在这件事上浪费了太多时间。我什至尝试使用 eval 函数但没有运气。请帮忙。
感谢@Kusalananda,当我试图以奇怪的方式回显作业名称其打印输出时..我觉得这是根本原因..但不确定为什么会发生这种情况
如果我尝试缩短可变作业的长度(使用子字符串);然后打印得很好。因此,如果工作的价值是长期的;它正在制造问题
答案1
第一个问题很明显:您的 url 是https://url.com:8181/jenkins/view
,因此由于它不以斜杠结尾,因此 的值${jenkins_url}${jenkins_folder}
是https://url.com:8181/jenkins/viewPlatform-X.X.X-SPO-MyPD-Integration-Dummy
。因此修复网址:
jenkins_url='https://url.com:8181/jenkins/view/'
或者,在组合变量时添加斜杠:
${jenkins_url}/${jenkins_folder}
接下来,请记住始终引用您的变量:
java -jar jenkins-cli.jar -s "${jenkins_url}${jenkins_folder}" get-job "$job" > job.xml
您的另一个问题是,听起来您有一个带有 Windows 行结尾的文件或命令输出。这可能是input.csv
或其他任何东西,但您需要删除它们。第一次运行
dos2unix input.csv
或者,如果您没有dos2unix
,请运行:
sed -i 's/\r//' input.csv
然后再次尝试您的脚本。如果仍然不起作用,请用更多详细信息更新您的问题。如果\r
来自您的jenkins-cli
命令,请尝试以下操作:
jenkins_folder=`cut -d "|" -f1 -s input.csv`
jenkins_url='https://url.com:8181/jenkins/view/'
echo "jenkins_folder : ${jenkins_folder}"
java -jar jenkins-cli.jar \
-s "${jenkins_url}/${jenkins_folder}" \
list-jobs "$jenkins_folder" |
sed 's/\r$//' | while read job
do
echo "Job name:: ${job} ****"
java -jar jenkins-cli.jar -s ${jenkins_url}${jenkins_folder} get-job ${job} > job.xml
done