在我的公司中,我正在运行一个管道作为代码项目,我的Jenkinsfile从外壳脚本中获取动态IP,并将其注入PrivateIP环境变量中。下一步将调用一个自定义的(内部开发的)插件,该插件接受一个“服务器”参数作为IP,尽管据称无法正确解析它,但会导致错误输出指示无法解析的主机。
我已经在插件步骤上方回显了PrivateIP变量,它肯定会输出正确的值。
如果给定IP硬值,则插件可以工作,但给定动态值,则插件将失败。诸如dir
之类的内置程序不会出现类似的问题。我没有办法让插件开发人员报告此问题,也没有得到我的问题的任何答复。这是自定义插件的典型特征吗?我在plugin developer docs中看到了一些文档,这些文档建议在管道插件中仅考虑初始环境阶段,否则需要@StepContextParameter
才能获得上下文环境。
stage('Provision') {
environment {
PrivateIP = """${sh(
returnStdout: true,
script: '${WORKSPACE}/cicd/parse-ip.sh'
)}"""
}
steps {
echo "Calling Playbook. PrivateIP: ${PrivateIP}"
customPluginName env: 'AWS',
os: 'Linux',
parameter: '',
password: '',
playbook: 'provision.yaml',
servers: PrivateIP,
gitBranch: '{my branch}',
gitUrl: '{URL}',
username: '{custom user}'
}
}
我希望变量得到尊重,并成功执行Ansible Playbook。
错误
>>>致命:[ansible_ssh_user = {自定义用户}]:无法访问! => {“更改”:false,“ msg”:“无法通过ssh连接到主机:ssh:无法解析主机名 ansible_ssh_user = {自定义用户} :名称或服务未知\ r \ n“,” unreachable“:true}
如果这实际上是自定义插件的默认行为(不一定是错误),那么好的解决方法是什么?