Gitlab-CI: установить переменные среды для Linux и Windows

126
10

У меня есть проект, который должен быть построен через Gitlab-Runner в Linux или Windows, используя тот же .gitlab-ci.yml в репозитории Git. Это простая сборка, и я просто хочу использовать исполнятеля shell.

Проблема в том, что синтаксис для установки переменных среды в bash (Linux) отличается от cmd (Windows). Один использует export другого set.

Как я могу настроить свою среду, не прибегая к настройке другого config.toml для каждого бегуна? (Что также кажется ошибкой в Linux, когда дело доходит до модификации $PATH, но это еще одна проблема.)

спросил(а) 2018-08-09T15:38:00+03:00 2 года, 1 месяц назад
1
Решение
100

Вы можете использовать общий || синтаксис для условного выполнения в обеих оболочках для записи команд, которые будут проходить через одну ОС, но не на другой. В случае установки переменных среды факт, что export не существует в cmd может быть использован для создания грязной проверки ОС:

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

Первая половина будет корректно выполняться в Linux, но вывести ошибку в Windows. || синтаксис является общим для обеих оболочек и будет выполнять последующее утверждение только тогда, когда предыдущий не выполняется. Таким образом, вторая половина будет выполняться только в 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

ответил(а) 2018-08-09T15:38:00+03:00 2 года, 1 месяц назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема