Запуск линии Jenkins из внешнего скрипта.

Запуск линии 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
Nicko

Добавить комментарий