我需要通过向pipelines.branches.develop步骤集添加任务定义来更新bitbucket pipeline yaml文件(将其添加为第一步,同时保留任何现有步骤),如果开发分支管道不存在,则使用指定的任务定义作为步骤创建它。
使用添加到开发管道的yq命令如下:
yq '.pipelines.branches.develop = [{"step":"*My-Step"}] + .pipelines.branches.develop' bitbucket-pipelines.yml
这是有效的,但它包含引号'*My-Step',我不知道如何在不导致命令失败的情况下删除它们。
我在定义步骤中添加的'&'字符也有同样的问题。
谁能提供一些指导,或文档。
*
和&
字符实际上不是字段名的一部分-它们是yaml中用作别名和锚的特殊字符(基本上用于重用文件中的内容块)。
您需要使用特殊表达式将它们与字符串值分开更新:https://mikefarah.gitbook.io/yq/operators/anchor-and-alias-operators.
这是你可能需要的:
yq '.pipelines.branches.develop = [( {"step":null} | .step alias="My-Step")] + .pipelines.branches.develop '
重要的一点是这里看起来很尴尬的表达式:
( {"step":null} | .step alias="My-Step")
这是创建一个新的映射与step
键,然后单独设置别名为'My-Step'。
免责声明:我写的是yq