40 lines
1.5 KiB
Groovy
40 lines
1.5 KiB
Groovy
def commentPullRequest(String repo, String issueId, String comment, Integer commentIndex = 0) {
|
|
comment = comment.replaceAll('"', '\\"')
|
|
withCredentials([
|
|
string(credentialsId: 'GITEA_JENKINS_PERSONAL_TOKEN', variable: 'GITEA_TOKEN'),
|
|
]) {
|
|
writeFile(file: ".prComment", text: comment)
|
|
sh """#!/bin/bash
|
|
set -xeo pipefail
|
|
|
|
# Récupération si il existe du commentaire existant
|
|
previous_comment_id=\$(curl -v --fail \
|
|
-H "Authorization: token ${GITEA_TOKEN}" \
|
|
-H "Content-Type: application/json" \
|
|
https://forge.cadoles.com/api/v1/repos/${repo}/issues/${issueId}/comments \
|
|
| jq -c '[ .[] | select(.user.login=="jenkins") ] | .[${commentIndex}] | .id' \
|
|
)
|
|
|
|
# Génération du payload pour l'API Gitea
|
|
echo '{}' | jq -c --rawfile body .prComment '.body = \$body' > payload.json
|
|
|
|
if [[ "\$previous_comment_id" == "null" ]]; then
|
|
# Création du commentaire via l'API Gitea
|
|
curl -v --fail \
|
|
-XPOST \
|
|
-H "Authorization: token ${GITEA_TOKEN}" \
|
|
-H "Content-Type: application/json" \
|
|
-d @payload.json \
|
|
https://forge.cadoles.com/api/v1/repos/${repo}/issues/${issueId}/comments
|
|
else
|
|
# Modification du commentaire existant
|
|
curl -v --fail \
|
|
-XPATCH \
|
|
-H "Authorization: token ${GITEA_TOKEN}" \
|
|
-H "Content-Type: application/json" \
|
|
-d @payload.json \
|
|
https://forge.cadoles.com/api/v1/repos/${repo}/issues/comments/\$previous_comment_id
|
|
fi
|
|
"""
|
|
}
|
|
} |