Bu örneğimizde jenkins işlerinin terminalden curl ile nasıl çalıştırılacağını göreceğiz. Bu işlemi yapabilmek için adım adım aşağıdaki komut satırını yaratacağız.


$ curl -X POST http://API_USER_ID:API_TOKEN@JENKINS_URL/job/JOB_NAME/build -H "CRUMB"

Bilgi


Benim jenkins işimin ismi Football. Her ne kadar ben admin:admin kullanıyorsam da, size sadece bu işlem için jenkins için yaratılmış kullanıcı ve şifre yaratmanızı tavsiye ederim. Ben jenkinse vagrant kullandığım için http://192.168.99.20:8080 adresinden ulaşıyorum.


İş yaratma


  1. Jenkins adresine http://192.168.99.20:8080 gidin ve login olun.

  2. "Football" isminde bir "Free Style" proje yaratın.

  3. Konfigürasyon sayfasını açın.

  4. "Build Triggers" bölümüne gidin.

  5. Sadece yazan notu almak için "Trigger builds remotely (e.g., from scripts)" seçeneğini tikleyin ve tekrar tiki kaldırın. Not şöyle birşey olacak: Use the following URL to trigger build remotely: JENKINS_URL/job/Football/build?token=TOKEN_NAME or /buildWithParameters?token=TOKEN_NAME. Optionally append &cause=Cause+Text to provide text that will be included in the recorded build cause.

  6. Kaydedip çıkın.

API user ve token


  1. Jenkins adresine http://192.168.99.20:8080 gidin ve login olun.

  2. Sayfanın sağ üst köşesindeki kullanıcı ismine (benimki admin) tıklayın.

  3. Açılan menüden "Configure" seçeneğini seçmek sizi http://192.168.99.20:8080/user/admin/configure adresine götürecek.

  4. "API Token" bölümünden "Show API token" butonuna basın.

  5. "User ID" ve "API Token" bilgilerini daha sonra kullanmak için not edin. Örneğin: admin:85703fb68927f04968630e192e4927cb

Crumb'a ulaşmak


Daha fazla bilgi için Remote access API sayfasına gidin.


$ wget -q --auth-no-challenge --user admin --password admin --output-document - 'http://192.168.99.20:8080/crumbIssuer/api/xml?xpath=concat(//crumbRequestField,":",//crumb)'

Bu komut size Jenkins-Crumb:44e7033af70da95a47403c3bed5c10f8 gibi bir sonuç verecek. Crumb bilgisi olmadan çalıştırılacak olan curl komutu HTTP/1.1 403 Forbidden veya Error 403 No valid crumb was included in the request gibi hatalar verecektir.


Test


$ curl -I -X POST http://admin:85703fb68927f04968630e192e4927cb@192.168.99.20:8080/job/Football/build -H "Jenkins-Crumb:44e7033af70da95a47403c3bed5c10f8"
HTTP/1.1 201 Created
Date: Fri, 02 Jun 2017 06:17:51 GMT
X-Content-Type-Options: nosniff
Location: http://192.168.99.20:8080/queue/item/17/
Content-Length: 0
Server: Jetty(9.2.z-SNAPSHOT)

Not: Çıktı istemiyorsanız -I ekini kaldırın.