Невозможно использовать переменную окружения в сфере Circleci - PullRequest
1 голос
/ 22 марта 2019

Я пытаюсь создать рабочий процесс Circleci, который создает и выгружает java WAR в существующие организации хранилища хранилищ артефактов S3. Сначала проект создается, и некоторая информация сохраняется в файле, а VERSION помещается в BASH_ENV:

export "VERSION=$(mvn -q -Dexec.executable=echo -Dexec.args='${project.version}' --non-recursive exec:exec)" >> $BASH_ENV
  if [ $CIRCLE_BRANCH = "master" ]; then
    ENVIRONMENT=production
  elif [ $CIRCLE_BRANCH = "develop" ]; then
     ENVIRONMENT=qa
  elif [ $CIRCLE_BRANCH = "release-1.0" ]; then
     ENVIRONMENT=staging
  else
     ENVIRONMENT=$CIRCLE_BRANCH
  fi

  echo "ENVIRONMENT=$ENVIRONMENT" >> project.info
  if [ -z "$ENVIRONMENT" ]; then
    echo No environment is set
  exit 1
    fi

Затем я пытаюсь загрузить артефакт, используя официальный шар S3:

    steps:
      - attach_workspace:
          at: .
      - run: source project.info
      - run: export "VERSION=$VERSION" >> $BASH_ENV
      - aws-s3/copy:
          from: target/project-${VERSION}.war
          to: 's3://artifact.bucket/project/project-${VERSION}.war'
          arguments: '--dryrun'

Эта задача загрузки завершается с ошибкой The user-provided path target/project-.war does not exist., поскольку вместо ожидаемой версии интерполируется пустая строка.

Документация Circleci гласит:

На каждом шаге CircleCI использует bash для получения BASH_ENV. Это означает, что BASH_ENV автоматически загружается и запускается, что позволяет использовать интерполяцию и совместно использовать переменные среды на всех этапах выполнения.

Однако, похоже, что это не так. Как заставить задачи загрузки S3 использовать переменные среды, которые я устанавливаю?

...