Modyfikowanie opisu Jenkinsa dla kompilacji

chciałbymzdalnie zmień opis budowy Jenkinsa. Mój skrypt jest ustawiony i gotowy z wyjątkiem jednego drobnego problemu: wielu opisów linii.

Używam REST API i JSON w Jenkins, aby pobrać stary opis:

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

Polecenie `curl wyciąga:

<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>

(Uwaga: Dodałem podziały wierszy, aby ułatwić czytanie. To jest wyciągane jako pojedyncza linia).

The\r\n są oddzielnymi liniami, więc robię to:

old_description=$(sed 's/\\r\\n/\
/g' <<<$old_description)

I to się zmienia$old_description do:

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>

(UWAGA: Nowe linie są częścią wartości. To jest opis trzech linii.)

Mój program (w zależności od parametrów wiersza poleceń) może zastąpić, dołączyć lub dodać nowy opis do kompilacji:

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

Teraz powtórzę opis:

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

Jeśli przygotowuję lub dołączam nowy opis za pierwszym razem, otrzymuję to w Jenkins:

<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/>

Wygląda dobrze. Następnym razem to nie działa. Rozumiem:

<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>

Zanotuj\n pojawia się.

Jak mogę rozwiązać ten problem?

Włożyłem cały programpastebin.

questionAnswers(1)

yourAnswerToTheQuestion