Trigger parameterized build with curl and crumb

前端 未结 7 842

I\'ve seen similar posts to this on SO, but not quite exactly what I am trying to do (or at least no full examples of a command to run).

I am trying to remotely trig

相关标签:
7条回答
  • 2020-12-03 01:34

    This Worked

    crumb=$(curl -u "user:pass" -s 'http://jenkins_URL/crumbIssuer/api/xml?xpath=concat(//crumbRequestField,":",//crumb)')
    
    curl -u "user:pass" -H "$crumb" -X POST **http://jenkins_URL/job/ENV/build?delay=0sec**
    

    Note: Get this POST URL by right click and copy the build now link.

    0 讨论(0)
  • 2020-12-03 01:36

    What worked for me:

    SERVER=http://localhost:8080
    CRUMB=$(curl --user $USER:$APITOKEN \
        $SERVER/crumbIssuer/api/xml?xpath=concat\(//crumbRequestField,%22:%22,//crumb\))
    
    curl --user $USER:$APITOKEN -H "$CRUMB" -d "script=$GROOVYSCRIPT" $SERVER/script
    
    0 讨论(0)
  • 2020-12-03 01:36

    None of the previous answers worked for me, but mixing some flags i got it working:

    JKSERVER="http://localhost:8080"
    JKUSER="jenkins_user"
    JKPASSWORD="jenkins_password"
    JKCRUMB=`wget -q --auth-no-challenge --user $JKUSER --password $JKPASSWORD --output-    document - '$JKSERVER/crumbIssuer/api/xml?xpath=concat(//crumbRequestField,":",//crumb)'`
    
    curl --user $JKUSER:$JKPASSWORD -I -X POST "$JKSERVER/job/master/build" -H "$JKcrumb"
    
    0 讨论(0)
  • 2020-12-03 01:52

    This is emphasis on @seeker 's answer.

    Pay extra attention to getting the crumb step

    As the other answers mentioned, the crumb you get may differ depending on the browser you use to browse to Jenkins, be it Chrome, Curl or WGet.

    But, and this is an important but, the crumb that I used for the CURL command is the one I got from the WGET command. It isn't the crumb I got from the CURL -X GET command.

    I am not clear on why this is the case, but like in @Seeker 's answer, this worked for me.

    I got different crumbs when

    1. Browsing to http://qajenkins:8080/crumbIssuer/api/xml

    2. Browsing to http://10.143.18.43:8080/crumbIssuer/api/xml (qajenkins = 10.143.18.43)

    3. Running

      curl -X WGET http://10.143.18.43:8080/crumbIssuer/api/xml

    4. Or running

      wget -q --auth-no-challenge --user raamee --password 12345678 --output-document - 'http://10.143.18.43:8080/crumbIssuer/api/xml?xpath=concat(//crumbRequestField,":",//crumb)';echo

    In order to get the curl command

    curl -X POST -H "Jenkins-Crumb:2e03fc96f387abggga6581fe5883a14a" http://10.143.18.43:8080/view/Raamee_phase_2/job/test_remote_api_triggerring/buildWithParameters?token=MY_TOKEN --user "raamee:12345678"
    

    I used the crumb I got from the wget command, the 4th command.

    0 讨论(0)
  • 2020-12-03 01:55

    This worked for me, I tried to used solutions already mentioned in this page but they had to be adapted a bit due to (a) referer and (b) cookie. Jenkins version 2.204

    sh script:"""
    
    COOKIE_PATH=/tmp/cookie_jenkins_crumb.txt
    
    CRUMB=\$(curl -s -c \$COOKIE_PATH -H '${jenkins_referer}' 'https://useridhere:${jenkins_live_token}@jenkins.example.com/crumbIssuer/api/xml?xpath=concat(//crumbRequestField,\":\",//crumb)' )
    # https://support.cloudbees.com/hc/en-us/articles/219257077-CSRF-Protection-Explained
    # https://wiki.jenkins.io/display/JENKINS/Remote+access+API#RemoteaccessAPI-CSRFProtection
    # but a bit adjusted as it is not exactly usable as it is in the documentation page.
    # We discovered that the CRUMB should be identical because it
    # is paired with a cookie. Thus save the cookie, it is important.
    
    sed -i 's/ORGANIZATION/${PROJECT_NAME}/g' ${jenkins_credentials_json_template_file_path} 
    # a json file with labels for quick replacements.
    
    # cat ${jenkins_credentials_json_template_file_path}
    
    # https://support.cloudbees.com/hc/en-us/articles/360030526992-How-to-manage-Credentials-via-the-REST-API
    curl -s -b \$COOKIE_PATH -u useridhere:${jenkins_live_token} -H '${jenkins_referer}' -H \"\${CRUMB}\" -X POST --data-urlencode json@${jenkins_credentials_json_template_file_path} 'https://jenkins.example.com/credentials/store/system/domain/_/createCredentials'
    """
    
    0 讨论(0)
  • 2020-12-03 01:56

    This worked for me:

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

    Now Run Jenkins Job $ curl -I -X POST http://yourUserName:yourPassword@myJenkins:8080/job/JOBName/build -H "Jenkins-Crumb:44e7038af70da95a47403c3bed5q10f8"

    HTTP/1.1 201 Created Date: Fri, 28 July 2017 09:15:45 GMT X-Content-Type-Options: nosniff Location: http://myJenkins:8080/queue/item/17/ Content-Length: 0

    0 讨论(0)
提交回复
热议问题