Wie man Jenkins Job per Curl-Befehl aus der Ferne auslöst

9

Ich habe versucht, Jenkins Job (kein parametrisierter Job) über den Befehl curl mit den folgenden Methoden auszuführen (auszulösen), aber diese Ergebnisse werden 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 Geben Sie hier die Bildbeschreibung ein

Daher habe ich ein Authentifizierungstoken für den Job erstellt Geben Sie hier die Bildbeschreibung ein

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

Es gibt auch den gleichen Fehler. es heißt Verboten 403

Danach habe ich ein API-Token für Jenkins Benutzer erstellt und versucht. Geben Sie hier die Bildbeschreibung ein

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

Aber es ist auch dasselbe, heißt es Verboten 403

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

Jedes Mal ist es verboten. Ich glaube, ich konnte Jenkins Benutzer nicht richtig authentifizieren.

Prabath Dolawatta
quelle

Antworten:

9

fand die Antwort. Eigentlich sind diese Schritte richtig. Ich möchte die richtigen Schritte erwähnen.

Wenn Sie einen Benutzer in Jenkins erstellen, können Sie dieses Benutzerkennwort oder API-Token zum Auslösen des Jenkins-Jobs verwenden. Das Erstellen eines API-Tokens für diesen Benutzer ist jedoch viel besser. Aber beide Wege funktionieren gut.

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

Geben Sie hier die Bildbeschreibung ein

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 Geben Sie hier die Bildbeschreibung ein

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

Dies sind die Ergebnisse unter Verwendung des Jenkins-Benutzerkennworts und des Jenkins-Benutzer-API-Tokens .

Geben Sie hier die Bildbeschreibung ein

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
Prabath Dolawatta
quelle
1
Ich habe es gerade versucht ... Ich habe ein Auth-Token hinzugefügt und es mit verwendet curl -u auto:<jenkins_user_token> http://<jenkins_server>/job/test/build?token=wefiytgwiefiweihfqweiodfund<html> <head> <meta http-equiv="Content-Type" content="text/html;charset=utf-8"/> <title>Error 403 No valid crumb was included in the request</title> </head> <body><h2>HTTP ERROR 403</h2> <p>Problem accessing /job/hailo_ci_pull_request/build. Reason: <pre> No valid crumb was included in the request</pre></p><hr><a href="http://eclipse.org/jetty">Powered by Jetty:// 9.4.z-SNAPSHOT</a><hr/> </body> </html>
CIsForCookies
Anscheinend haben Sie das falsche Authentifizierungstoken eingegeben. Bitte überprüfen Sie diesen Teil "token = wefiytgwiefiweihfqweiodf" mit Ihrem Authentifizierungstoken.
Prabath Dolawatta
Ich habe mein Authentifizierungstoken verwendet, das ich aus dem API-Token auf meiner Benutzerregisterkarte generiert habe - http: // <IP> / user / <mein_name> / configure
CIsForCookies
2

So konfigurieren Sie diese Berechtigungen:

  • Klicken Manage Jenkins
  • Klicken Configure Global Security
  • Entfernen Prevent Cross Site Request Forgery exploits
  • Klicken save
Vincent Wu
quelle
1
Klingt so, als würde dies die Sicherheit Ihres Systems untergraben. Möchten Sie wirklich, dass jede Website, die Sie besuchen, Jobs auf Ihrer Jenkins-Installation ausführen kann?
Kasperd