Je suis en train de configurer les générations de pipeline Jenkins et je commence à utiliser les mêmes méthodes pour plusieurs tâches. Il est donc temps de mettre ces méthodes communes dans une bibliothèque partagée. La première fonction que j'ai créée est de mettre à jour GitHub avec le résultat de certains tests unitaires. J'ai un problème où je peux exécuter cette fonction à partir de la ligne de commande, mais quand il s'agit de l'utiliser dans Jenkins, ne semble pas marché et je ne peux pas obtenir une sortie de débogage dans la console JenkinsImpossible d'exécuter la fonction de bibliothèque Shared Groovy
Ceci est la structure des répertoires de ma bibliothèque partagée
my-project
src
vars
- getCommitId.groovy
- gitUpdateStatus.groovy
la première fonction getCommitId
fonctionne très bien
#!/usr/bin/env groovy
def call() {
commit_id = sh script: 'git rev-parse HEAD', returnStdout: true
commit_id = commit_id.replaceAll("\\s","") // Remove Whitespace
return commit_id
}
Cela renvoie la valeur correcte
Ceci est gitUpdateStatus
#!/usr/bin/env groovy
@Grab(group='org.codehaus.groovy.modules.http-builder', module='http-builder', version='0.7')
import static groovyx.net.http.ContentType.JSON
import static groovyx.net.http.Method.POST
import groovyx.net.http.HTTPBuilder
String targetUrl = 'https://api.github.com/repos/myRepo/'
def http = new HTTPBuilder(targetUrl)
http.request(POST) {
uri.path = "repo/statuses/12345678"
requestContentType = JSON
body = [state: 'success', description: 'Jenkins Unit Tests', target_url: 'http://test.co.uk', context: 'unit tests']
headers.'Authorization' = "token myOauthTokenHere"
headers.'User-Agent' = 'Jenkins Status Update'
headers.Accept = 'application/json'
response.success = { resp, json ->
println "GitHub updated successfully! ${resp.status}"
}
response.failure = { resp, json ->
println "GitHub update Failure! ${resp.status} " + json.message
}
}
je peux courir cette fin via la ligne de commande, mais je ne vois aucun résultat lorsqu'il est exécuté comme un jenkins construire
Mon Jenkinsfile
@Library('echo-jenkins-shared')_
node {
GIT_COMMIT_ID = getGitCommitId()
echo "GIT COMMIT ID: ${GIT_COMMIT_ID}"
gitUpdateStatus(GIT_COMMIT_ID)
}
Est-ce que quelqu'un a des idées pour lesquelles cela ne fonctionnerait pas ou cela pourrait-il être converti juste pour utiliser des méthodes natives Groovy? tous les pointeurs appréciés
Merci
Merci pour l'information, je peux confirmer que mon code ne fait perfo Les appels HTTP rm, ce qui est un début je suppose, GET demandes fonctionne bien, juste le POST j'ai des problèmes avec une minute – Richlewis