如何远程触发Jenkins构建并传递参数

时间:2013-12-03 19:22:26

标签: jenkins continuous-integration continuous-deployment continuous-delivery

我使用以下方法远程调用Jenkins作业:

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

此处调用Test-Jenkins作业,DOIT是我使用过的安全令牌。

现在我需要将一些参数传递给此作业的build.xml文件,即Test-Jenkins

我还没有弄清楚如何传递变量。

8 个答案:

答案 0 :(得分:58)

请参阅Jenkins文档: Parameterized Build

以下是您感兴趣的专栏:

http://server/job/myjob/buildWithParameters?token=TOKEN&PARAMETER=Value

答案 1 :(得分:48)

要使用自己的/自定义参数触发构建,请调用以下URL(使用POST或GET):

http://JENKINS_SERVER_ADDRESS/job/YOUR_JOB_NAME/buildWithParameters?myparam=myparam_value

然后在Jenkins工作配置中,勾选名为“This build is parameterized”的复选框,点击“Add Parameter”按钮,然后选择“String Parameter”下拉值。

现在定义你的参数 - 例如:

Enter image description here

现在,您可以在作业/构建管道中使用您的参数,例如:

Enter image description here

答案 2 :(得分:2)

要传递/使用变量,首先在Jenkins的configure部分创建参数。您使用的参数可以是text,String,file等类型。

创建它们之后,在您想要的字段中使用变量引用。

例如:我为Email-subjectEmail-recipentList配置/创建了两个变量,我在EMail-ext插件中使用了它们的引用(附带的屏幕截图)。

Enter image description here

答案 3 :(得分:1)

要添加这个问题,我发现您不必使用/buildWithParameters端点。

在我的场景中,我有一个脚本,该脚本在部署后触发Jenkins运行测试。其中一些测试需要有关部署的额外信息才能正常工作。

如果我尝试在不需要参数的作业上使用/buildWithParameters,则该作业将无法运行。我不想进入并编辑每个作业以要求伪造的参数只是为了使作业运行。

相反,我发现您可以传递这样的参数:

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

使用此json=...时,无论何时进行调用,它都会将值为myParam的参数TEST传递给作业。但是,即使不希望参数myParam,Jenkins作业仍将运行。

唯一无法解决的情况是,如果作业具有未在json中传递的参数。即使作业为参数设置了默认值,也将无法运行该作业。在这种情况下,调用/build时会遇到以下错误消息/堆栈跟踪:

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

我知道这个答案已经晚了几年,但是我希望这对其他人可能是有用的信息!

注意:我正在使用Jenkins v2.163

答案 4 :(得分:0)

您可以简单地使用jenkinsfile进行尝试。使用以下管道脚本创建Jenkins作业。

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}"
            }
        }

    }
}

手动构建作业以对其进行配置,并按如下所示向Jenkins作业创建一个HTTP POST请求。

格式为 http://server/job/myjob/buildWithParameters?PARAMETER=Value

curl http://admin:test123@localhost:30637/job/apd-test/buildWithParameters?userFlag=false --request POST

答案 5 :(得分:0)

您可以使用以下查询远程触发Jenkins构建并传递参数。

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

JENKINS_URL(可以是)= https://<your domain name or server address>

TOKE_NAME可以使用“配置”标签创建

答案 6 :(得分:0)

当我们必须向jenkins job发送多个触发器参数时,以下命令有效。

curl -X POST -i -u "auto_user":"xxxauthentication_tokenxxx" "JENKINS_URL/view/tests/job/helloworld/buildWithParameters?param1=162&param2=store"

答案 7 :(得分:0)

curl -H "Jenkins-Crumb: <your_crumb_data>" -u "<username>:<password>" "http://<your_jenkins_url>?buildWithParameters?token=<your_remote_api_name>?<parameterA>=<val_parameter_A>&<parameterB>=<val_parameterB>"

您可以根据需要更改以下参数:

<your_crumb_data>
<username>
<password>
<your_jenkins_url>
<your_remote_api_name>
<parameterA>
<parameterB>
<val_parameter_A>
<val_parameter_B>

注意:放置双引号可能很关键。请注意。