我正在建立一个使用Pogo的自动部署系统。它在yaml文件中存储加密包的密码短语。但是我遇到了一个问题,尽管包名称在yaml文件中并且包含正确的密码短语,但是由于包名附加了版本号,所以它没有被提取。
例如,yaml文件将如下所示:
somesoftwarepackage: apassphrase
在自动部署期间,正在安装的实际软件包名称将类似于:
somesoftwarepackage-1.0.23
然后部署冻结,等待密码短语。
是否可以在yaml中使用通配符,以便我可以放置通用包名但不必指定(然后不断更新)特定版本?
答案 0 :(得分:4)
我认为答案是否定的,YAML不能进行字符串连接,或任何其他生成或操纵数据。
与变量或通配符最接近的是锚点,它更像是先前指定数据的别名。我想你可以这样做:
pkg_name: &name my_pkg
pkg_version: &version 1.0.23
pkg_fullname: [ *name, '-', *version ]
这样您至少记录了包名称格式(${name}-${version}
),并将pkg_fullname
操作为单个字符串(例如,Python中的''.join(pkg_fullname)
)。但是用原始数据进行这些操作可能同样容易。