Ich verwende diese Option in meinen Freestyle-Jobs, aber jetzt geht mein Team dazu über, ein Standardformat zu erstellen, also muss ich alle meine Freestyle-Jobs im Pipeline-Skript schreiben und ich google viel, aber ich habe nicht verstanden, wie ich diese Option in das schreiben könnte Pipeline-Skript.
Lösung des Problems
Sie können Remote-Jenkins-Jobs mit triggerRemoteJob
einem Pipelineschritt auslösen.
Dokumentation: https://jenkins.io/doc/pipeline/steps/Parameterized-Remote-Trigger/
Und hier ist ein kurzes Beispiel, das veranschaulicht, wie dieser Schritt mit der Authentifizierung verwendet wird. Ich habe Jenkins User Token zur Authentifizierung verwendet - das Token und der Benutzername wurden in den Jenkins-Anmeldeinformationen mit der ID xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
(verschleierte ID ofc) gespeichert. Der Remote-Job im folgenden Beispiel wird mit einem einzigen Parameter foo
== ausgelöst qwe123
und ist so konfiguriert, dass er wartet, bis der Remote-Job abgeschlossen ist, und wenn er fehlschlägt, schlägt auch der Job fehl, der den Remote-Job ausgelöst hat.
pipeline {
agent any
stages {
stage("Execute remote job") {
steps {
script {
def jobUrl = "https://remote-jenkins-host/job/remote-job-to-trigger/"
withCredentials([[$class: 'UsernamePasswordMultiBinding', credentialsId: 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx', usernameVariable: 'USERNAME', passwordVariable: 'TOKEN']]) {
def handle = triggerRemoteJob job: jobUrl,
blockBuildUntilComplete: true,
shouldNotFailBuild: true,
parameters: "foo=qwe123",
auth: TokenAuth(apiToken: env.TOKEN, userName: env.USERNAME)
echo "Remote tests status: ${handle.buildStatus.toString()}"
}
}
}
}
}
}
Ich hoffe es hilft.
Keine Kommentare:
Kommentar veröffentlichen