我正在使用以下命令触发作业:
curl http://username:usertoken@localhost:8080/job/Test/build?token=test123&cause=This+was+started+by+testuser
作业成功触发,但未显示原因消息。
我正在使用以下命令触发作业:
curl http://username:usertoken@localhost:8080/job/Test/build?token=test123&cause=This+was+started+by+testuser
作业成功触发,但未显示原因消息。
这里的问题不是 jenkins,而是 shell 解释命令的方式。由于 url 没有被引用,因此当 shell&
在 url 中看到 时,它会将其解释为在后台执行前面所述命令的指令,并将其之后的所有内容解释为单独的命令。由于将变量设置为cause=This+was+started+by+testuser
是一个有效的 shell 命令,因此会发生这种情况并且没有进一步的输出,但会显示新变量。cause
This+was+started+by+testuser
env
为避免这种情况,您可以引用提供给 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'
首先,看起来您正在使用 GET 触发构建(因为它是不将任何方法传递给 curl 时的默认选项)。对于这些类型的请求,通常首选使用 POST。我会这样做:
curl -X POST --user "<USER>:<USER_TOKEN>" http://localhost:8080/job/<JOB_NAME>/build?token=mytoken&This+was+started+by+testuser
现在我怀疑“原因”参数被忽略了,因为您没有在构建配置中设置“远程触发构建(例如,从脚本)”选项。