我遵循了将Travis用于deploy to AWS CodeDeploy的指南。在这些文档中,他们指向.travis.yml
example,其中包含以下代码:
deploy:
- provider: s3
access_key_id: AKIAJ4XZHIMNKP3WGGHQ
secret_access_key: &1
secure: <key>
local_dir: dpl_cd_upload
skip_cleanup: true
on: &2
repo: travis-ci/cat-party
bucket: catparty-codedeploy
- provider: codedeploy
access_key_id: AKIAJ4XZHIMNKP3WGGHQ
secret_access_key: *1
bucket: catparty-codedeploy
key: latest.zip
bundle_type: zip
application: CatPartyDemoApplication
deployment_group: ProductionDemoFleet
on: *2
我已经完成了这项工作并了解了流程(首先将zip文件上传到S3,然后将该文件部署到CodeDeploy)。我挣扎的是语法:具体是on: &2
部分中的s3
行和on: *2
部分中的codedeploy
部分。这些线路在做什么?
我问,因为我想修改此配置以部署到不同的CodeDeploy组,具体取决于提交是否具有给定标记,例如:
on:
tags: true
all_branches: true
condition: "$TRAVIS_TAG =~ ^release.*$"
...但是因为我不清楚on: *2
正在做什么(并且无法在文档中找到它),所以我不确定如何继续。有什么提示吗?
答案 0 :(得分:4)
这些符号及其带来的功能是YAML本身的一部分。支持它们以减少YAMl文件中的重复工作。
例如,以&
为前缀的此部分将后续结构存储为名称为2
的引用。因此2
现在引用了repo: travis-ci/cat-party
。
on: &2
repo: travis-ci/cat-party
引用名称也可以是一个字母数字字符集,以使事物更具表现力。
另一方面,然后使用*
来解析您想要重用它的引用。
因此,在以下部分中,YAML解析器会将*2
解析为先前存储的结构:repo: travis-ci/cat-party
:
on: *2
此功能可以节省您的重复,这在.travis.yml
文件的多个方面都很方便。