Я хочу опубликовать веб-страницу в Confluence (Cloud) с помощью конвейера Jenkins. Я использовал плагин Jenkins Confluence, он не работал. Когда я устанавливаю URL своей страницы слияния (https://yourDomain.atlassian.net/wiki/), а также имя пользователя и пароль в глобальной конфигурации, он продолжает повторять неверный пароль и имя пользователя, пока не достигнуто максимальное время попыток. Я не смог войти после этого, если не свяжусь с пользователем-администратором, которого я не знаю.
Я решил эту проблему, используя вместо этого Confluence REST API.
См. Пример REST API следующим образом: [ссылка]https://developer.atlassian.com/cloud/confluence/rest-api-examples/
Установите глобальные учетные данные: ваше имя пользователя и пароль в качестве учетных данных типа имени пользователя и пароля, а идентификатор страницы - в качестве секретных текстовых учетных данных. Мой конвейер обновления страницы Confluence:
pipeline {
agent any
environment {
CONFLUENCE_PAGE_CREDS = credentials('confluence-creds')
PAGE_ID = credentials('confluence-page-id')
}
stages {
stage('Update Confluence Page') {
steps {
sh '''
#!/bin/bash
curl -u ${CONFLUENCE_PAGE_CREDS} 'https://YOURDOMAIN.atlassian.net/wiki/rest/api/content/'${PAGE_ID}'?expand=version' | python -mjson.tool > version.txt
PAGE_VERSION=$(grep -Po '(?<="number": )[0-9]+' version.txt)
rm version.txt
PAGE_VERSION=$((PAGE_VERSION+1))
curl -u ${CONFLUENCE_PAGE_CREDS} 'https://YOURDOMAIN.atlassian.net/wiki/rest/api/content/'${PAGE_ID}'?expand=body.storage' | python -mjson.tool > body.txt
more body.txt
PAGE_BODY="$(grep -Po '(?<="value": ")[^"]+' body.txt)"
rm body.txt
TEXT='<p>The content to append</p>'
TEXT=$PAGE_BODY$TEXT
echo '{"id":"'${PAGE_ID}'","type":"page","title":"NEW PAGE","space":{"key":"TR"},"body":{"storage":{"value":"'$TEXT'","representation":"storage"}},"version":{"number":'$PAGE_VERSION'}}' > update.json
curl -u ${CONFLUENCE_PAGE_CREDS} -X PUT -H 'Content-Type: application/json' -d '@update.json' https://YOURDOMAIN.atlassian.net/wiki/rest/api/content/${PAGE_ID} | python -mjson.tool
rm update.json
'''
}
}
}
}
Чтобы создать страницу Confluence:
pipeline {
agent any
environment {
CONFLUENCE_PAGE_CREDS = credentials('confluence-creds')
PAGE_ID = credentials('confluence-page-id')
}
stages {
stage('Update Confluence Page') {
steps {
sh '''
#!/bin/bash
TEXT='<p>New page</p>'
echo '{"type":"page","title":"New page","ancestors":[{"id":"'${PAGE_ID}'"}],"space":{"key":"TR"},"body":{"storage":{"value":"'$TEXT'","representation":"storage"}}}' > update.json
curl -u ${CONFLUENCE_PAGE_CREDS} -X POST -H 'Content-Type: application/json' -d '@update.json' https://YOURDOMAIN.atlassian.net/wiki/rest/api/content/ | python -mjson.tool
rm update.json
'''
}
}
}
}