【问题标题】:Travis-ci: enviroment variables per branch in .travis.ymlTravis-ci:.travis.yml 中每个分支的环境变量
【发布时间】:2020-02-06 14:08:20
【问题描述】:

我可以使用 travis-ci settings 为分支创建特定变量。 有没有办法使用 .travis.yml 实现相同的行为?

之前的答案是否定的 (see the answer)。但现在看来它可能已经过时了。

【问题讨论】:

    标签: git github continuous-integration travis-ci


    【解决方案1】:

    阅读documentation on environment variables,似乎答案是否定的。

    他们说:

    • 如果它不包含敏感信息并且应该可供分叉使用 - 将其添加到您的 .travis.yml
    • 如果它确实包含敏感信息,并且所有分支都相同 - 对其进行加密并将其添加到您的 .travis.yml
    • 如果它确实包含敏感信息,并且可能因不同的分支而不同 - 将其添加到您的存储库设置中

    请记住,Travis UI 中的环境变量定义(与.travis.yml 相对)旨在保护存储在源代码管理中的机密。


    您似乎至少有两个选择:

    1. 如果您所说的这些分支是长期运行的分支,它们可以有不同的.travis.yml 文件。
    2. 如果您希望这些分支始终是可合并的(因此,包含其他每个分支的定义),您可能希望自己处理这些环境变量。有多种方法可以做到这一点。它可以作为您的测试代码初始化程序的一部分(以您使用的任何语言),或作为可以在before_script 中的sourceed 的shell 脚本来完成,并让此脚本根据$TRAVIS_BRANCH 设置不同的变量环境变量(或任何其他逻辑,或任何其他travis environment variable)。

    类似的东西(未经测试,但我相信它的变体应该可以):

    # .travis.yml
    before_script: source env-vars.sh
    
    # env-vars.sh
    if [[ "$TRAVIS_BRANCH" == "master" ]]; then
      export MY_VAR=master
    else
      export MY_VAR=not-master
    fi
    

    【讨论】:

    • 我发现source 在某种运行时文件夹中运行,但这有效:before_script: source $TRAVIS_BUILD_DIR/set-ci-environment-based-on-branch.sh(因此该脚本位于 git repo 根目录,在.travis.yml 旁边)。
    【解决方案2】:

    DannyB is saying 的内容当然是有道理的,您应该熟悉它。但是,在我的设置中,我目前正在这样做,利用 .travis.yml 文件中的 env 部分:

    env:
      - PATH_TO_MY_BINARY=/tmp/bin
    

    正如目前my repo的开发/夜间版本中看到的那样

    我希望这会有所帮助,尽管这篇文章已经起死回生。

    【讨论】:

      猜你喜欢
      • 2016-02-17
      • 2016-03-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-08
      • 1970-01-01
      • 1970-01-01
      • 2013-01-07
      相关资源
      最近更新 更多