как построить правило, основанное на переменной dotenv, которая была определена ранее в том же конвейере

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