Я хотел бы удаленно изменить описание конструкции Jenkins. У меня есть мой скрипт, который настроен и готов, за исключением одной крошечной проблемы: Несколько описаний строк.Изменение Jenkins Описание для сборки
Я использую REST API и JSON в Дженкинс, чтобы загрузить старое описание:
old_description=$(curl -s --user "$USER:$PASSWORD" --data-urlencode "tree=description" \
"$jenkins_url/job/$job_name/$build_number/api/json")
old_description=${old_description#*:\"} #Remove JSON garbage
old_description=${old_description%\"\}} #Remove JSON garbage
Параметр `локон команда вытаскивает:
<font color=blue><b>At first you don't succeed. Try again</b></font><br/>
\r\n<font color=gold><b>At first you don't succeed. Try again</b></font><br/>
\r\n<font color=green><b>At first you don't succeed. Try again</b></font>
(Примечание: Я добавил разрывы строк чтобы сделать это проще для чтения. Это вытаскивается как одна строка).
\r\n
отдельные линии, так что я делаю это:
old_description=$(sed 's/\\r\\n/\
/g' <<<$old_description)
И что изменения $old_description
к:
font color=blue><b>At first you don't succeed. Try again</b></font><br/>
<font color=gold><b>At first you don't succeed. Try again</b></font><br/>
<font color=green><b>At first you don't succeed. Try again</b></font>
(ПРИМЕЧАНИЕ: Новые линии являются частью значения Это. является трехстрочным описанием.)
Моя программа (в зависимости от параметров командной строки) может заменить приложение конец, или предварять новое описание для сборки:
if [ "$prepend_flag" -a -n "$old_description" ] #Prepend new description to old description
then
new_description="$new_description<br/>
$old_description"
elif [ "$append_flag" -a -n "$old_description" ] #Append new description to old description
then
new_description="$old_description<br/>
$new_description"
fi
Теперь я переделать описание:
if curl -u $USER:$PASSWORD --data-urlencode "description=$new_description" \
--data-urlencode "Submit=Submit" \
"$jenkins_url/job/$job_name/$build_number/submitDescription"
then
echo "Description successfully changed on Build #$build_number in Jenkins job $job_name"
else
echo "WARNING: Description was not set. Manually change the descripiton of the build"
echo " for Build #$build_number in Jenkins job $job_name"
fi
Если я предваряя или добавления нового описания в первый раз, я получаю это в Дженкинсе:
<font color=blue><b>At first you don't succeed. Try again</b></font><br/>
<font color=gold><b>At first you don't succeed. Try again</b></font><br/>
<font color=green><b>At first you don't succeed. Try again</b></font><br/>
<font color=red><b>My new description</b></font><br/>
Выглядит хорошо. В следующий раз это не сработает. Я получаю это:
<font color=blue><b>At first you don't succeed. Try again</b></font><br/>\n<font color=gold><b>At first you don't succeed. Try again</b></font><br/>\n<font color=green><b>At first you don't succeed. Try again</b></font><br/>\n<font color=red><b>My new description</b></font><br/>
<font color=blue><b>My new new description</b></font>
Обратите внимание, что отображается \n
.
Как исправить эту проблему?
Я положил всю программу в pastebin.