Jenkins trigger a job from API
The solution is to generate an API token for your Jenkins user (or the Jenkins build user).
Go to the following link for your user:
http://YOUR_JENKINS_URL/user/YOUR_JENKINS_USER_ID/configure
Copy the user_id and token from this section:
And launch the following command to trigger a build:
curl -X POST http://YOUR_JENKINS_USER_ID:YOUR_API_TOKEN@YOUR_JENKINS_URL/job/YOUR_JENKINS_JOB/build
I did a quick test on my https Jenkins server.
Without the token, I got this message:
Authentication required<!--You are authenticated as: anonymousGroups that you are in:Permission you need to have (but didn't): hudson.model.Hudson.Read ... which is implied by: hudson.security.Permission.GenericRead ... which is implied by: hudson.model.Hudson.Administer-->
With the user_id/token, the build is OK with the curl command :)
If you are building with parameters then here it is:
Lets say your jenkins build accept two parameters and you want to make the api call using shell script:
You can put following command in shell script:
curl -X POST --data "package_name=ABC.tar.gz" --data "release_notes=none" --data "delay=0sec" https://USERID:TOKEN@JENKINS_URL/job/SOMETHING/SOMETHING/SOMETHING//buildWithParameters
Just use the address bar to make the link. Make sure the link ends with buildWithParameters