在Jenkins中,我想将启动构建的客户端的ip传递给Jenkins作业,这样我就可以在扩展“Builder”或作为环境变量的类或任何有效的东西中访问该信息。
例如,在每个构建的控制台日志中,我可以打印如下内容:“user1从ip:10.101.101.1开始的作业”
我知道我可以使用Jenkins的“审核试用”插件进行审核试用,但是我想将这些信息打印到构建控制台,这样它会更直接。
提前致谢。
编辑:我想要启动作业/构建的用户/客户端的ip,这不一定是作业正在运行的jenkins slave的ip。
答案 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作为参数传递
在jenkins job的shell脚本中回显$ ipaddr
在jenkins作业中启用字符串参数 https://wiki.jenkins-ci.org/display/JENKINS/Parameterized+Build
拨打电话
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”}]}'