首页 > 解决方案 > Gitlab-CI:为 Linux 和 Windows 设置环境变量

问题描述

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

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

我如何设置我的环境而不需要config.toml在每个跑步者上设置不同的环境?(当涉及到修改时,这在 Linux 上似乎也有$PATH问题,但这是另一个问题。)

标签: bashcmdcontinuous-integrationgitlab-cigitlab-ci-runner

解决方案


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

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

前半部分将在 Linux 上正确执行,但在 Windows 上会抛出错误。该语法对两个 shell 都是通用的,并且只有在前一个语句失败时||才会执行后续语句。所以后半部分只会在 Windows 上执行,因为只会失败(当然前提是语法在 Linux 端是正确的)。exportcmd

一个完整的.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

推荐阅读