Я пытаюсь настроить автоматизацию для постепенного удаления рабочего узла в Jenkins. В настоящее время я могу сделать следующее, чтобы узел прекратил принимать новые задания:
JENKINS_CRUMB=$(curl -v -c /tmp/cookie -u "$user:$pass" "$JENKINS_URL/crumbIssuer/api/json" | jq -r '.crumb')
echo "CSFR Token: $JENKINS_CRUMB"
echo "Disabling Node $NODE_NAME"
curl -v -b /tmp/cookie -u "$user:$pass" "$JENKINS_URL/computer/$NODE_NAME/toggleOffline"
echo "Waiting for Jobs to Finish"
???
Но после этого я хочу дождаться завершения существующих работ, прежде чем скрипт завершится. Я просмотрел конечную точку /api/computer/
, и она, кажется, перечисляет только имена узлов, но не указывает количество запущенных заданий. Я пробовал /computer/<worker name>/api/json
и xml
, и они показывают кучу атрибутов executor, но, похоже, они не заполнены метаданными при выполнении заданий. Они всегда пусты.
Это работает на AWS, и я в конечном итоге хочу вызвать его из Агента SSM (через ловушку жизненного цикла), срабатывающего всякий раз, когда групповая политика автоматического масштабирования хочет уменьшить узел , Моя цель - чистое завершение работы, ожидание завершения заданий sh, поэтому я не убиваю узел, пока у разработчика есть работа.