This example shows us how to trigger jenkins job/build via curl command in terminal. Step by step we will be building curl command below in order to trigger jenkins jobs from command line.



The name of my job is Football. I would also suggest you to create a dedicated jenkins user and password rather than using admin:admin as I'll use in this example. My jenkins GUI URL is as I am on vagrant.

Create job

  1. Login to jenkins in address.

  2. Create a "Free Style" project named as "Football".

  3. Open it's configuration.

  4. Go to "Build Triggers" section.

  5. Tick "Trigger builds remotely (e.g., from scripts)" option just to take a note of the text written in there and untick it again. Text reads 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. Save and exit.

Get API user and token

  1. Login to jenkins in address.

  2. Click your username (mine is admin) on right hand side of the page.

  3. Select "Configure" option which will take you to page.

  4. In "API Token" section click "Show API token" button.

  5. Note "User ID" and "API Token" to use in your curl command later on. e.g. admin:85703fb68927f04968630e192e4927cb

Obtain crumb

For more information, visit Remote access API page.

$ wget -q --auth-no-challenge --user admin --password admin --output-document - ',":",//crumb)'

This will give you something like Jenkins-Crumb:44e7033af70da95a47403c3bed5c10f8. Without crumb information, running curl command will result in example errors such as HTTP/1.1 403 Forbidden or Error 403 No valid crumb was included in the request.


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

Note: You can remove -I flag if you don't want output.