2017-04-07 118 views
1

我遵循使用Travis的指南到deploy to AWS CodeDeploy。在这些文档它们指向包含以下代码.travis.yml exampleTravis CI部署脚本中的符号* 1或&2是什么意思?

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)。我正在努力的是语法:特别是s3部分中的on: &2行以及codedeploy部分中的on: *2部分。这些线是干什么的?

我问,因为我想修改该配置部署到不同的CodeDeploy组取决于是否提交有一个给定的标签,如:

on: 
    tags: true 
    all_branches: true 
    condition: "$TRAVIS_TAG =~ ^release.*$" 

...但因为我不清楚是什么on: *2正在做(并且无法在文档中找到它),我不确定如何继续。有小费吗?

回答

2

这些符号和它们带来的功能是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文件的几个方面可以得心应手。

+0

啊当然 - 现在看起来很明显。谢谢! –