Запуск линии Jenkins из внешнего скрипта.
В Jenkins существует возможность настроить запуск линии из внешнего скрипта посредством API.
В разделе Build Triggers ставится «галка» около пункта Trigger builds remotely (e.g., from scripts)
Задаётся Authentication Token — длинный набор цифр и латиницы (AUTH_TOKEN).
Если линия параметризованная, то обязательно нужно использовать запрос POST и конструкцию в URL /buildWithParameters?token=AUTH_TOKEN
Кроме того для пользователя требуется сгенерировать API_TOKEN.
Для генерации последнего использую скрипт:
#!/bin/bash
FILE=/tmp/api_token.txt
if [ -f "$FILE" ]; then
echo "$FILE exists."
else
echo "$FILE does not exist."
JENKINS_URL=https://jenkins.host
JENKINS_USER=Runner
JENKINS_USER_PASS=Password
JENKINS_CRUMB=$(curl -u $JENKINS_USER:$JENKINS_USER_PASS -s -c /tmp/cookies $JENKINS_URL'/crumbIssuer/api/json' | jq -r '.crumb')
ACCESS_TOKEN=$(curl -u $JENKINS_USER:$JENKINS_USER_PASS -H "Jenkins-Crumb:$JENKINS_CRUMB" -s \
-b /tmp/cookies $JENKINS_URL'/me/descriptorByName/jenkins.security.ApiTokenProperty/generateNewToken' \
--data 'newTokenName=GlobalToken' | jq -r '.data.tokenValue')
echo $ACCESS_TOKEN > /tmp/api_token.txt
Таким образом новый API-токен пользователя (API_TOKEN) можно добыть из файла /tmp/api_token.txt
Для запуска линии ( build job ) можно использовать curl:
curl -X POST https://jenkins.host/job/JobName/buildWithParameters?token=AUTH_TOKEN --user Runner:API_TOKEN
Добавить комментарий