#unit-testing #jenkins #bitbucket #webhooks
Вопрос:
Можно ли использовать Bitbucket webhooks с Дженкинсом и показывать результаты сборки на Bitbucket?
Кто — нибудь достиг этой комбинации? При использовании webhooks на Bitbucket, как вы показываете результаты сборки от Дженкинса?
Комментарии:
1. вы пробовали, что есть у Дженкинса в их документации ?
2. @balexandre показывает ли этот плагин результаты сборки на bitbucket?
Ответ №1:
В конце концов, я использовал REST API Bitbucket, чтобы показать статус сборки на Дженкинсе, это был самый простой и гибкий способ:
https://developer.atlassian.com/server/bitbucket/how-tos/updating-build-status-for-commits/
Я использовал универсальный триггер веб-крючка Дженкинса, чтобы получить полезную нагрузку от открытого PR, такого как commitId: https://plugins.jenkins.io/generic-webhook-trigger/
def notifyBitBucket(commitId, state) {
withCredentials([string(credentialsId: ‘[your-bitbucket-user-token], variable: 'TOKEN')]) {
try {
sh """
curl --location --request POST “[your-bitbucket-repo]/rest/build-status/1.0/commits/${commitId}"
--header "Content-Type: application/json"
--header "Authorization: Bearer ${TOKEN}"
--data-raw '{
"state": "${state}",
"key": "pipeline-webhook",
"name": "pipeline-webhook",
"url": "${BUILD_URL}/console#footer",
"description": “[something describing your build]”
}'
"""
} catch(e) {
echo 'Notify failed, trying again... error: ' ex.toString()
notifyBitBucket(commitId, state)
}
}
}
node {
try {
stage('Build') {
notifyBitBucket(commitId, "INPROGRESS");
... your logic
notifyBitBucket(commitId, "SUCCESSFUL");
} catch(ex) {
echo 'Build failed with error: ' ex.toString()
notifyBitBucket(commitId, "FAILED");
currentBuild.result = 'FAILED'
}
}
Я добавил try catch, потому что иногда API выходил из строя.