如何在Google Workflow YAML文件中设置变量默认值?
Google Workflows 设置未传入变量的默认值
你遇到的报错是YAML语法解析导致的:?在YAML中是映射键的特殊标记,直接写三元表达式会被解析成嵌套映射结构,从而触发“Nested mappings are not allowed in compact mappings”错误。以下是两种可行的实现方式:
方式一:提前在初始化步骤处理变量
在init步骤的assign中先判断变量是否存在,不存在则赋值默认值,后续步骤直接引用处理后的变量,避免YAML解析冲突:
main: params: [ input ] steps: - init: assign: - project_id: ${project_id} - some_var_value: ${input.get('some_variable', 'fallback')} - someJob: call: call_to_the_api args: name: ${someJob} location: ${someRegion} body: overrides: containerOverrides: env: - name: some_variable value: $${some_var_value}
方式二:直接在值中使用字典get方法
利用Google Workflows中input作为字典对象的特性,直接调用get方法,第二个参数即为默认值,写法更简洁:
main: params: [ input ] steps: - init: assign: - project_id: ${project_id} - someJob: call: call_to_the_api args: name: ${someJob} location: ${someRegion} body: overrides: containerOverrides: env: - name: some_variable value: $${input.get('some_variable', 'fallback')}
补充:使用if-else条件表达式
如果更倾向于用条件判断而非get方法,也可以在assign步骤中写if-else语法:
- some_var_value: ${input.some_variable if 'some_variable' in input else 'fallback'}
注意必须放在assign步骤中,不能直接写在value字段里,否则仍会触发YAML解析错误。
内容的提问来源于stack exchange,提问作者Alex Abades Grimes
相关产品推荐
相关产品推荐

