Как устранить это «Ошибка 403 В запрос не была включена допустимая крошка» при попытке опубликовать триггер сборки для выполнения - PullRequest
0 голосов
/ 31 августа 2018

Согласно https://support.cloudbees.com/hc/en-us/articles/219152268-Use-POST-Commit-Hook-with-Perforce-Triggers Я должен использовать следующее, чтобы опубликовать триггер для сборки.

#!/bin/bash

# The first argument is the change number
CHANGE=$1

# POST the payload
curl --header 'Content-Type: application/json' \
     --request POST \ 
     --data "{\"change\":$CHANGE, \"p4port\":\"localhost:1666\"}" \
     http://localhost:8080/p4/change

Я немного изменил это, чтобы добавить свой порт и номер изменения, после чего он начал давать мне крошку не найден.

После прочтения этого Как запросить поставщика крошек для Дженкинса и Spinnaker: 403 В запрос не была включена допустимая крошка Сначала я попытался отключить CSRF, но это дало мне 404, так что я попытался с включенным, получил крошку и встроил его так, что снова дает мне 404.

curl -X POST http://username:password@jenkinsip:8080/p4/change -H "Jenkins-Crumb:the-crumb" --data "{\"change\":$CHANGE, \"p4port\":\"myport\"}"

Но если я попробую это, я снова получу ту же ошибку 403.

curl -X POST http://jenkinsip:8080/p4/change -H "Jenkins-Crumb:the-crumb" --data "{\"change\":$CHANGE, \"p4port\":\"myport\"}"

Так что же я делаю не так, что это дает мне 404

1 Ответ

0 голосов
/ 31 августа 2018

Прежде чем просить Дженкинса запустить сборку на основе вашего нового изменения производительности, вам нужно запросить крошку у Дженкинса и включить ответ в ваш запрос.

У нас работает следующий триггерный скрипт:

#!/bin/bash
CHANGE=$1

P4PORT=<perforceserver>:<portnumber>
JUSER=<jenkinsuser>
JPASS=<hispassword>
JSERVER=https://<jenkinsserver>

# Get CRUMB
CRUMB=$(curl --insecure --silent --user $JUSER:$JPASS $JSERVER/crumbIssuer/api/xml?xpath=concat\(//crumbRequestField,%22":"%22,//crumb\))

curl --header "$CRUMB" \
     --request POST \
     --insecure \
     --silent \
     --user $JUSER:$JPASS \
     --data payload="{change:$CHANGE,p4port:\"$P4PORT\"}" \
     $JSERVER/p4/change

Обновление
Я только что обнаружил, что однажды украл вышеуказанный скрипт из документации к плагину Jenkins Perforce. Смотри здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...