How to trigger Jenkins builds remotely and to pass parameters

前端 未结 7 1485
傲寒
傲寒 2020-11-27 03:05

I am invoking a Jenkins job remotely using:

wget http://:8080/job/Test-Jenkins/build?token=DOIT

Here Test-Jenkins

相关标签:
7条回答
  • 2020-11-27 03:16

    See Jenkins documentation: Parameterized Build

    Below is the line you are interested in:

    http://server/job/myjob/buildWithParameters?token=TOKEN&PARAMETER=Value
    
    0 讨论(0)
  • 2020-11-27 03:16

    In your Jenkins job configuration, tick the box named "This build is parameterized", click the "Add Parameter" button and select the "String Parameter" drop down value.

    Now define your parameter - example:

    Now you can use your parameter in your job / build pipeline, example:

    Next to trigger the build with own/custom parameter, invoke the following URL (using either POST or GET):

    http://JENKINS_SERVER_ADDRESS/job/YOUR_JOB_NAME/buildWithParameters?myparam=myparam_value
    
    0 讨论(0)
  • 2020-11-27 03:19

    You can simply try it with a jenkinsfile. Create a Jenkins job with following pipeline script.

    pipeline {
        agent any
    
        parameters {
            booleanParam(defaultValue: true, description: '', name: 'userFlag')
        }
    
        stages {
            stage('Trigger') {
                steps {
                    script {
                        println("triggering the pipeline from a rest call...")
                    }
                }
            }
            stage("foo") {
                steps {
                    echo "flag: ${params.userFlag}"
                }
            }
    
        }
    }
    

    Build the job once manually to get it configured & just create a http POST request to the Jenkins job as follows.

    The format is http://server/job/myjob/buildWithParameters?PARAMETER=Value

    curl http://admin:test123@localhost:30637/job/apd-test/buildWithParameters?userFlag=false --request POST
    
    0 讨论(0)
  • 2020-11-27 03:23

    To add to this question, I found out that you don't have to use the /buildWithParameters endpoint.

    In my scenario, I have a script that triggers Jenkins to run tests after a deployment. Some of these tests require extra info about the deployment to work correctly.

    If I tried to use /buildWithParameters on a job that does not expect parameters, the job would not run. I don't want to go in and edit every job to require fake parameters just to get the jobs to run.

    Instead, I found you can pass parameters like this:

    curl -X POST --data-urlencode "token=${TOKEN}" --data-urlencode json='{"parameter": [{"name": "myParam", "value": "TEST"}]}' https://jenkins.corp/job/$JENKINS_JOB/build
    

    With this json=... it will pass the param myParam with value TEST to the job whenever the call is made. However, the Jenkins job will still run even if it is not expecting the parameter myParam.

    The only scenario this does not cover is if the job has a parameter that is NOT passed in the json. Even if the job has a default value set for the parameter, it will fail to run the job. In this scenario you will run into the following error message / stack trace when you call /build:

    java.lang.IllegalArgumentException: No such parameter definition: myParam

    I realize that this answer is several years late, but I hope this may be useful info for someone else!

    Note: I am using Jenkins v2.163

    0 讨论(0)
  • 2020-11-27 03:23

    When we have to send multiple trigger parameters to jenkins job, the following commands works.

    curl -X POST -i -u "auto_user":"xxxauthentication_tokenxxx" "JENKINS_URL/view/tests/job/helloworld/buildWithParameters?param1=162&param2=store"
    
    0 讨论(0)
  • 2020-11-27 03:26

    You can trigger Jenkins builds remotely and to pass parameters by using the following query.

    JENKINS_URL/job/job-name/buildWithParameters?token=TOKEN_NAME&param_name1=value&param_name1=value
    

    JENKINS_URL (can be) = https://<your domain name or server address>

    TOKE_NAME can be created using configure tab

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