2

我正在使用以下命令触发作业:

curl http://username:usertoken@localhost:8080/job/Test/build?token=test123&cause=This+was+started+by+testuser

作业成功触发,但未显示原因消息。

4

2 回答 2

1

这里的问题不是 jenkins,而是 shell 解释命令的方式。由于 url 没有被引用,因此当 shell&在 url 中看到 时,它会将其解释为在后台执行前面所述命令的指令,并将其之后的所有内容解释为单独的命令。由于将变量设置为cause=This+was+started+by+testuser是一个有效的 shell 命令,因此会发生这种情况并且没有进一步的输出,但会显示新变量。causeThis+was+started+by+testuserenv

为避免这种情况,您可以引用提供给 curl 的 url:

curl 'http://username:usertoken@localhost:8080/job/Test/build?token=test123&cause=This+was+started+by+testuser'

或者更好的是,使用参数来卷曲:

curl http://localhost:8080/job/Test/build --user username:usertoken --data token=test123 --data cause='This was started by testuser'
于 2018-07-18T20:48:17.823 回答
1

首先,看起来您正在使用 GET 触发构建(因为它是不将任何方法传递给 curl 时的默认选项)。对于这些类型的请求,通常首选使用 POST。我会这样做:

curl -X POST --user "<USER>:<USER_TOKEN>" http://localhost:8080/job/<JOB_NAME>/build?token=mytoken&This+was+started+by+testuser

现在我怀疑“原因”参数被忽略了,因为您没有在构建配置中设置“远程触发构建(例如,从脚本)”选项。

请参阅此示例,其中我将其设置为“mytoken”

于 2017-01-29T20:51:02.683 回答