Я пытаюсь писать из jenkins в слияние, но у меня возникают некоторые проблемы: либо заставить работать конкретное решение (конфигурация? Ошибки плагина?), Либо возникают проблемы с поиском соответствующей информации для реализации.
Конечный результат образца:
Возможное решение 1 - Плагин Confluence Publisher
(блок кода ниже не появится, если между приведенным выше списком и блоком кода нет чего-то ... ошибка форматирования serverfault?)
AxisFault
faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.userException
faultSubcode:
faultString: com.atlassian.confluence.rpc.AuthenticationFailedException: Attempt to log in user 'redacted@redacted.com' failed. The maximum number of failed login attempts has been reached. Please log into the web application through the web interface to reset the number of failed login attempts.
faultActor:
faultNode:
faultDetail:
{}com.atlassian.confluence.rpc.AuthenticationFailedException:null
{http://xml.apache.org/axis/}hostname:redacted.atlassian.net
com.atlassian.confluence.rpc.AuthenticationFailedException: Attempt to log in user 'redacted@redacted.com' failed. The maximum number of failed login attempts has been reached. Please log into the web application through the web interface to reset the number of failed login attempts.
Возможное решение 2 - Опубликуйте Jenkins на произвольном хосте и используйте макрос iframe из слияния
Возможное решение 3 - Я обнаружил, что могу использовать REST API напрямую. Задача состоит в том, чтобы убедиться, что вызов curl идеально отформатирован (содержимое json + html)
Возможное решение N - Я что-то упустил?
В итоге я пошел по маршруту REST API, используя jq для анализа входящего JSON.
Сначала получите идентификатор страницы:
pageID=$(curl -u $Confluence_UserID:$Confluence_Password -X GET \
"https://redacted.atlassian.net/wiki/rest/api/content?title=$PageTitle&spaceKey=$Space" \
| jq -r .results[].id \
)
Затем получите версию (номер версии должен быть указан и увеличен, иначе вызов обновления не удастся!)
pageVersion=$(curl -u $Confluence_UserID:$Confluence_Password \
"https://redacted.atlassian.net/wiki/rest/api/content/$pageID?expand=version" \
| jq .version.number \
)
((pageVersion++))
Ранее в работе Дженкинса он сгенерировал HTML для страницы слияния в файл в рабочей области. Загрузите это для использования ниже
htmlOutput=$(<myHTMLSnippet.txt)
И последняя часть, отправка обновления страницы
curl -u $Confluence_UserID:$Confluence_Password \
-X PUT -H 'Content-Type: application/json' \
https://redacted.atlassian.net/wiki/rest/api/content/$pageID \
--data @- <<END;
{
"id": "$pageID",
"type": "page",
"title": "$PageTitle",
"space": {
"key": "$Space"
},
"body": {
"storage": {
"value": "$htmlOutput",
"representation": "storage"
}
},
"version": {
"number": $pageVersion,
"minorEdit": true
}
}
END