# #gitlab #gitlab-ci
Вопрос:
Я устанавливаю переменную в задании в конвейере и использую ее в артефактах / dotenv. Похоже, что использование переменной в качестве условия в правилах не работает. Как я могу установить переменную env и использовать ее в правиле другого задания?
Большое спасибо за ваши мысли!
include:
- local: '/gitlab/cicd/.gitlab-ci_test.yml'
stages:
- build
- test
build_rule:
stage: build
rules:
- if: $CI_PIPELINE_SOURCE == "push" amp;amp; $CI_COMMIT_MESSAGE =~ /R::/m
script:
- echo "Hello World"
- |
echo "RUNTESTS=1" > gitlabcicd.env
artifacts:
reports:
dotenv: gitlabcicd.env
test_always:
stage: test
script:
- echo "TestEnv" $RUNTESTS
# prints TestEnv 1
test_sometimes:
stage: test
rules:
- if: $RUNTESTS
# $RUNTESTS == "1" doesnt work either
script:
- echo "Runs only if variable was set"
# doesnt run, even if it prints above
Ответ №1:
Требуется для загрузки файла .env на каждое задание
"Set variables":
stage: preparation
script:
- echo version=1.1 > varfile
- echo foo=bar >> varfile
artifacts:
paths:
- varfile
Dothings:
stage: run
script:
- load varfile
- echo ${foo}
Комментарии:
1. Я хочу запускать
Dothings
только в том случае, если переменная установлена. Таким образом, у меня есть правило в задании, которое должно проверять переменную еще до того, как я перейду к сценарию.