Travis-ci:.travis.yml中每个分支的环境变量

时间:2019-10-09 09:10:42

标签: git github continuous-integration travis-ci

我能够使用travis-ci settings为分支创建特定的变量。 是否可以通过.travis.yml实现相同的行为?

先前的答案为否(see the answer)。但是看起来如今它已经过时了。

2 个答案:

答案 0 :(得分:0)

阅读documentation on environment variables时,答案似乎是stlil no。

他们说:

  • 如果其中不包含敏感信息,并且应该可用于派生–将其添加到您的.travis.yml
  • 如果确实包含敏感信息,并且所有分支机构都相同,请对其进行加密,然后将其添加到您的.travis.yml
  • 如果确实包含敏感信息,并且对于不同的分支机构可能有所不同,请将其添加到“存储库设置”中

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


似乎您至少有两个选择可以玩:

  1. 如果您正在谈论的这些分支是长期运行的分支,则它们可以具有不同的.travis.yml文件。
  2. 如果您希望这些分支总是可合并的(因此,包含每个其他分支的定义),则可能需要自己照顾这些环境变量。有多种方法可以做到这一点。可以将其作为测试代码初始化程序的一部分(使用任何使用的语言),或者作为可以在sourcebefore_script进行修饰的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

答案 1 :(得分:0)

DannyB is saying确实有意义,您应该熟悉它。但是,在我的设置中,我目前正以这种方式使用[.travis.yml]文件中的env部分:

{
  "data": {
    "repository": {
      "hasIssuesEnabled": true,
      "issues": {
        "nodes": []
      }
    }
  }
}

当前{em> 在my repo的dev / nightly版本中看到的

尽管希望这篇文章从死里逃生,但我希望这会有所帮助。