Gitlab-CI:为Linux和Windows设置环境变量

时间:2018-08-09 12:38:46

标签: bash cmd continuous-integration gitlab-ci gitlab-ci-runner

我有一个项目,需要能够使用Git存储库中的相同.gitlab-ci.yml文件通过Linux Windows上的Gitlab-Runner构建。这是一个简单的构建,我只想使用shell执行程序。

问题在于,在 bash (Linux)中设置环境变量的语法与 cmd (Windows)不同。一个使用export,另一个使用set

如何在不为每个跑步者设置不同的config.toml的情况下设置我的环境? (在Linux上修改$PATH时似乎也有问题,但这是另一个问题。)

1 个答案:

答案 0 :(得分:0)

您可以在两个shell中使用通用的||语法进行条件执行,以编写将在一个OS上通过但不在另一个OS上通过的命令。在设置环境变量的情况下,可以利用export中不存在cmd的事实来创建脏污的OS检查:

export PATH="$MYPATH/:$PATH" || set "PATH=%MYPATH%\;%PATH%"

上半部分将在Linux上正确执行,但在Windows上将引发错误。 ||语法在两个Shell中都是通用的,并且在前一个失败时将仅执行后继语句 。因此后半部分将仅在Windows上执行,因为export仅在cmd中失败(当然,前提是语法在Linux端是正确的)。

完整的.gitlab-ci.yml可能看起来像这样:

stages:
  - release

before_script:
  # set environment for both Linux (first half) and Windows (second half)
  - export PATH="$MYPATH/:$PATH" || set "PATH=%MYPATH%\;%PATH%"

my-app:
  stage: release
  script:
    - ./gradlew build