So lösen Sie einen Jenkins-Job per Curl-Befehl aus der Ferne aus

So lösen Sie einen Jenkins-Job per Curl-Befehl aus der Ferne aus

Ich habe versucht, einen Jenkins-Job (keinen parametrisierten Job) über den Curl-Befehl mithilfe der folgenden Methoden auszuführen (auszulösen), aber es werden diese Ergebnisse angezeigt. Meine Jenkins-Version ist Jenkins 2.73.3

curl -X POST -u jenkins_user_name:jenkins_user_passwd http://jenkins_server/job/job_name/build

Aber es heißt Verboten 403 Bildbeschreibung hier eingeben

Daher habe ich ein Authentifizierungstoken für den Job erstellt Bildbeschreibung hier eingeben

curl -X POST http://jenkins_server/job/job_name/build?token=wefiytgwiefiweihfqweiodf

Es wird auch der gleiche Fehler angezeigt. Es heißt Verboten 403

Danach habe ich ein API-Token für den Jenkins-Benutzer erstellt und es versucht. Bildbeschreibung hier eingeben

curl -X POST -u auto:testingdae6dc22a73048e6d596e7b0 http://jenkins_server/job/job_name/build?token=wefiytgwiefiweihfqweiodf

Aber es ist auch das gleiche, es heißt Verboten 403

Eigentlich bin ich dieser Antwort auch gefolgt.https://www.nczonline.net/blog/2015/10/triggering-jenkins-builds-by-url/ das hat bei mir auch nicht funktioniert.

jedes Mal ist es 403 Forbidden. Ich glaube, ich konnte den Jenkins-Benutzer nicht richtig authentifizieren.

Antwort1

habe die Antwort gefunden. Tatsächlich sind diese Schritte richtig. Ich möchte die richtigen Schritte erwähnen.

Erstellen Sie einen Benutzer in Jenkins. Sie können dieses Benutzerkennwort oder API-Token verwenden, um einen Jenkins-Job auszulösen. Aber das Erstellen eines API-Tokens für diesen Benutzer ist viel besser. Aber beide Möglichkeiten funktionieren einwandfrei.

Aber Sie müssen ein Authentifizierungstoken für Jenkins Job erstellen

Bildbeschreibung hier eingeben

Passwort verwenden

curl -I -u auto:<userpasswd> http://<jenkins_server>/job/test/build?token=wefiytgwiefiweihfqweiodf

Verwenden eines API-Tokens

Erstellen Sie ein API-Token für diesen Jenkins-Benutzer Bildbeschreibung hier eingeben

curl -I -u auto:<user_api_token> http://<jenkins_Server>/job/test/build?token=wefiytgwiefiweihfqweiodf

Dies sind die Ergebnisse unter VerwendungJenkins-BenutzerkennwortUndJenkins-Benutzer-API-Token.

Bildbeschreibung hier eingeben

Eigentlich können Sie diese Anfrage auch ohne „-I“ senden.

curl -u auto:<jenkins_user_token> http://<jenkins_server>/job/test/build?token=wefiytgwiefiweihfqweiodf

curl -u auto:<jenkins_user_password> http://<jenkins_server>/job/test/build?token=wefiytgwiefiweihfqweiodf

Antwort2

Schneller Vorlauf bis 2023

Sie müssen 2 Token übergeben, um Ihren Job remote von einem Skript/Bash aus auszuführen.
Sie benötigen:

  1. apiToken zur Authentifizierung Ihrer Identität. Dieser Wert wird aus JENKINS_URL/me/configure erstellt. Überprüfen Sie auchHierzur Dokumentation
  2. Ein weiteres Job-Authentifizierungstoken, das Sie erstellen, wenn Sie „Builds remote auslösen“ aktivieren.

Unten sehen Sie ein Beispiel für die Auftragsausführung mit zwei Parametern, die Sie je nach Bedarf anpassen können.

PARAM1_VALUE=<param1_value>
PARAM2_VALUE=<param2_vale>
USERNAME=dummy_user_name
JENKINS_URL="http://10.xxx.x.xxx:8080"
JOB_TOKEN="<value>" # you create this token when you enable Job>Configure>Build Triggers>Trigger builds remotely
LOGIN_API_TOKEN="<value>" #get this value from JENKINS_URL/me/configure 

curl -L --user $USERNAME:$LOGIN_API_TOKEN "$JENKINS_URL/job/JobName/buildWithParameters?token=$JOB_TOKEN&param1_name=$PARAM1_VALUE&param2_name=$PARAM2_VALUE"

Antwort3

So konfigurieren Sie diese Berechtigungen:

  • KlickenManage Jenkins
  • KlickenConfigure Global Security
  • EntfernenPrevent Cross Site Request Forgery exploits
  • Klickensave

verwandte Informationen