Travis CI部署脚本中的* 1或&2符号是什么意思?

Mat*_*ews 4 travis-ci

我正在遵循使用Travis 部署到AWS CodeDeploy的指南。在这些文档中,他们指向了一个包含以下代码的.travis.yml示例

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
Run Code Online (Sandbox Code Playgroud)

我已经完成了这项工作并了解了流程(首先将zip文件上传到S3,然后将文件部署到CodeDeploy)。我苦苦挣扎的是语法:特别是on: &2s3节中的行,以及on: *2codedeploy节中的部分。这些行在做什么?

我问是因为我想修改此配置,以根据提交是否具有给定标签来将其部署到其他CodeDeploy组,例如:

on:
  tags: true
  all_branches: true
  condition: "$TRAVIS_TAG =~ ^release.*$"
Run Code Online (Sandbox Code Playgroud)

...但是由于我不清楚on: *2执行的操作(并且无法在文档中找到),因此我不确定该如何进行。有小费吗?

roi*_*age 8

这些符号及其带来的功能是YAML本身的一部分。支持它们以减少YAM1文件中的重复工作。

例如,此部分以&stores为前缀,将后续结构存储为name的引用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文件的多个方面都很方便。