jenkins - 为什么将动态变量作为代码插件注入自定义管道时无法正确解析?
问题描述
在我的公司,我正在运行一个管道即代码项目,其中我的 Jenkinsfile 从 shell 脚本获取动态 IP,并将其注入到 PrivateIP 环境变量中。下一步调用一个自定义(内部开发)插件,该插件接受一个“服务器”参数作为 IP,虽然据说没有正确解析它,但导致错误输出表明主机无法解析。
我在插件步骤的正上方回显了 PrivateIP 变量,它肯定会输出正确的值。
如果给定 IP 的硬值,则该插件可以工作,但如果给定任何动态值,则该插件会失败。诸如此类的内置插件dir
不会产生类似的问题。我没能联系到插件开发者来报告这个问题,我也没有得到任何关于我的问题的回复。这对于自定义插件来说是典型的吗?我在插件开发人员文档中看到了一些文档,这些文档表明在管道插件中只尊重初始环境阶段,否则@StepContextParameter
需要 a 来获得上下文环境。
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={custom user}]:无法访问!=> {"changed": false, "msg": "无法通过 ssh 连接到主机:ssh: 无法解析主机名ansible_ssh_user={custom user} : Name or service not known\r\n", "unreachable" : 真的}
如果这实际上是自定义插件的默认行为(不一定是错误),那么有什么好的解决方法?
解决方案
推荐阅读
- javascript - 创建时间戳数组删除开始和结束期间之间的小时数
- python - 如何顺序链接 ML 模型/管道模型?
- javascript - 返回数组中最大数的函数
- excel - 列出没有宏或 Excel 4 函数的工作表名称
- angular - flatMap GET 和 PUT 请求不返回结果
- jenkins-pipeline - 使用 readFile 从文件中读取数据并将其转换为 groovy 中的列表的最佳方法是什么?
- node.js - Koa.js:只有第一个中间件执行,其他所有失败
- firefox - firefox 以编程方式更改阻止弹出窗口设置
- r - 如何将每小时太阳辐射值转换为每天计算的 0 到 1 之间的每小时值
- jquery - 如何阻止 Application Insights 记录在 jquery 中生成的已处理异常?