将客户端IP信息传递给Jenkins Job

时间:2015-03-19 08:43:42

标签: jenkins jenkins-plugins

在Jenkins中,我想将启动构建的客户端的ip传递给Jenkins作业,这样我就可以在扩展“Builder”或作为环境变量的类或任何有效的东西中访问该信息。

例如,在每个构建的控制台日志中,我可以打印如下内容:“user1从ip:10.101.101.1开始的作业”

我知道我可以使用Jenkins的“审核试用”插件进行审核试用,但是我想将这些信息打印到构建控制台,这样它会更直接。

提前致谢。

编辑:我想要启动作业/构建的用户/客户端的ip,这不一定是作业正在运行的jenkins slave的ip。

2 个答案:

答案 0 :(得分:1)

您可以使用EnvInject plugin并使用“为运行准备环境”选项。

在“评估的Groovy脚本”部分中,复制此代码:

return [IP_ADDRESS: InetAddress.localHost.canonicalHostName]

然后,在构建步骤部分中使用$ IP_ADDRESS。

echo $IP_ADDRESS

构建日志:

[EnvInject] - Loading node environment variables.
[EnvInject] - Preparing an environment for the build.
[EnvInject] - Keeping Jenkins system variables.
[EnvInject] - Keeping Jenkins build variables.
[EnvInject] - Evaluation the following Groovy script content: 
return [IP_ADDRESS: InetAddress.localHost.canonicalHostName]

[EnvInject] - Injecting contributions.
Building on master in workspace /var/lib/jenkins/jobs/Test Groovy IP address/workspace
[workspace] $ /bin/sh -xe /tmp/hudson6447343457570437614.sh
+ echo 172.16.203.72
172.16.203.72
Notifying upstream projects of job completion
Finished: SUCCESS

答案 1 :(得分:1)

Jenkins目前无法将客户端IP传递给变量,您在输出日志中看到的客户端IP是远程原因消息。

我想说在作业中获取远程IP以启用某些回调函数确实很有用。或者,您可以在进行远程调用时将IP作为参数传递

  1. 在jenkins job的shell脚本中回显$ ipaddr

  2. 在jenkins作业中启用字符串参数 https://wiki.jenkins-ci.org/display/JENKINS/Parameterized+Build

  3. 拨打电话

      

    curl -k -u user:apitoken -X POST   https://jenkins.local/job/yourjob/build \ --data token = jobtoken \
      --data-urlencode json ='{“parameter”:[{“name”:“ipaddr”,“value”:“x.x.x.x”}]}'