Jenkins使用参数和身份验证构建,但没有参数值

时间:2015-09-16 04:05:51

标签: jenkins parameters jenkins-plugins

我尝试了多种方法来自动传递URL和身份验证以及参数(来自带参数插件的构建),以通过wget命令启动作业远程:

/usr/bin/wget --auth-no-challenge --http-user=<http-user> --http-password=<password like> http://<IP>:8080/job/<jobName>/buildWithParameters?token=<tokeName>&<param1>=<text1>

非参数化版本运行顺畅,没有任何问题,但是作业无法使用必要的<param1>

在使用pararmeters作业的构建中设置默认值,可以顺利运行作业,但无法通过脚本远程运行。

这是一个消毒的输出:

Started by remote host x.x.x.x
[EnvInject] - Loading node environment variables.
[EnvInject] - Preparing an environment for the build.
[EnvInject] - Keeping Jenkins system variables.
[EnvInject] - Keeping Jenkins build variables.
[EnvInject] - [ERROR] - The given properties file path '/var/lib/jenkins/<paramsFolder>/.properties' doesn't exist.
[EnvInject] - [ERROR] - Missing file path was resolved from pattern '/var/lib/jenkins/<paramsFolder>/${NAMESTR}.properties' .
ERROR: SEVERE ERROR occurs
org.jenkinsci.lib.envinject.EnvInjectException: java.io.IOException: The given properties file path '/var/lib/jenkins/<paramsFolder>/.properties' doesn't exist.

在作业配置中,NAMESTR定义为字符串参数。当给定适当的默认值时,作业按预期运行。如果作业中没有默认值,则无法通过作业的wget命令获得参数值,如上面的输出所示。

我必须具有身份验证,命令行意味着将参数提供给作业。我无法与Jenkins用户界面交互以手动运行命令。

有什么想法?有解决方法吗?

3 个答案:

答案 0 :(得分:1)

尝试使用cURL,它就像梦一样对我有用。

curl -X POST http://localhost:8080/job/test_job/buildWithParameters?RandomUser=Tom --user admin:admin

答案 1 :(得分:0)

使用Http request plugin

选择 Http请求表单添加构建步骤

将您的网址粘贴到网址字段

Http模式

中选择 POST 方法

如果您想添加身份验证,请将身份验证详细信息更新到Jenkins 配置全局设置

答案 2 :(得分:0)

我发现wget选项--postt数据适用于BuildWithParameters插件。

/usr/bin/wget --auth-no-challenge --http-user=<http-user> --http-password=<password like> --post-data 'param1=text1' http://<IP>:8080/job/<job name>/buildWithParameters?token=<tokenName>