Лучшее решение для запуска команды внутри, если? - PullRequest
1 голос
/ 10 апреля 2020

Я хочу кое-что проверить с помощью Jenkins API. Состояние последнего задания if ошибка, просто перезапускайте и проверяйте каждые x секунды, пока оно не выполнится.

#!/bin/bash

while ! curl -u admin:xxxxxxxxxxxxxxx http://jenkins.xxxxxxxxxxxxxxx/job/sync/lastBuild/api/json | grep -q 'result":SUCCESS'; do
sleep 5
        if [[ $(curl -u admin:xxxxxxxxxxxxxxx http://jenkins.xxxxxxxxxxxxxxx/job/sync/lastBuild/api/json | grep -q result\":FAILURE) ]]; then
                echo 'build did not succeed, retrying'
                curl -I -u admin:xxxxxxxxxxxxxxx "http://ts.xxxxxxxxxxxxxxx/job/sync/build?token=sync"
                sleep 10
        else
                echo "next round"
        fi
  sleep 10
done

echo 'build succeeded'

Основная проблема, я думаю, что если задание не было выполнено, не вызвано if.

1 Ответ

0 голосов
/ 10 апреля 2020

Я не знаю, что curl предоставляет в качестве кодов возврата, но я использую

command ||
{
    echo "error happened during command"
}

со многими различными командами (scp / sftp и т. Д.).

Итак, в вашем на случай, если это будет

curl -u admin:xxxxxxxxxxxxxxx http://jenkins.xxxxxxxxxxxxxxx/job/sync/lastBuild/api/json ||
{
    echo "build did not succeed"
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...