Travis CI:如何仅为部署脚本设置环境变量?

Jar*_*jdr 8 travis-ci

在我的.travis.yml配置中,我想根据触发构建的分支设置不同阶段(开发/生产)的部署。我正在使用 shell 脚本进行部署,即script提供程序。

问题:我需要为不同的阶段(主要是 AWS 密钥)传递不同的环境变量。并且这些变量在版本控制中存储时需要加密。所以,我想做这样的事情:

deploy:
  - provider: script
    script: ./deploy.sh development
    env:
      -secure: <encrypted AWS_* variables for dev>
    on:
      branch: master
  - provider: script
    script: ./deploy.sh production
    env:
      -secure: <encrypted AWS_* variables for prod>
    on:
      branch: release
Run Code Online (Sandbox Code Playgroud)

但是,该env密钥只能在全局范围内使用。是否有可能以某种方式只为特定脚本指定环境而不是其他任何东西?

小智 0

您可以简单地在脚本标记中包含 env,例如,如此处所述

包含加密环境时发生的所有变化是,您不是将环境设置为公共,而是通过travis encrypt MY_SECRET_ENV=super_secret --add(参考)或在 travis 环境中(例如通过接口)将它们加密添加到版本控制中。在你的情况下也许:

deploy:
  - provider: script
    script: env SUPER_SECRET_AWS_VARS=<encrypted AWS_* variables for dev> ./deploy.sh development
    on:
      branch: master
  - provider: script
    script: env SUPER_SECRET_AWS_VARS=<encrypted AWS_* variables for prod> ./deploy.sh production
    on:
      branch: release
Run Code Online (Sandbox Code Playgroud)