问题摘要:
详细信息:
我有一个可选的管道参数APK_URL。如果已设置,那么我想将其用作舞台的envVar APK_URL。如果未设置,那么我希望它使用通过触发器参数使用管道表达式创建的url。我尝试了以下方法:
{
...
"parameterConfig": [
{
"description": "The url or url-key for apk to deploy to device",
"label": "APK_URL",
"name": "APK_URL",
"required": false
}
],
"stages": [
{
...
"containers": [
{
"args": [],
"command": [
"./scripts/entrypoint-deploy.sh"
],
"envVars": [
{
"name": "APK_URL",
"value": "(${parameters[\"APK_URL\"]} != null) ? ${parameters[\"APK_URL\"]} : https://my.com/application/${trigger['buildInfo']['scm']['branch']/${trigger['buildInfo']['artifacts'][0]['displayPath']}"
}
],
...
}
]
...
}
当我使用指定的APK_URL参数手动运行管道(无触发器)时,会出现错误:
Failed to evaluate [value] EL1007E: Property or field 'branch' cannot be found on null
即使APK_URL不为null,看来Java三元运算符正在评估由触发参数生成的url。
有人可以告诉我如何将阶段参数设置为管道参数以进行手动执行,以及如何将阶段参数设置为管道表达式以进行触发执行。 TIA。
答案 0 :(得分:0)
实际上,Spinnaker并不直接提供此类功能。
但是您可以通过几种不同的方式来做到这一点:
并在那里实现您需要的任何逻辑。
另一种选择是添加几个条件阶段,这些阶段将根据您的输入而跳过。