Как установить переменную Env в Circle CI - PullRequest
0 голосов
/ 02 февраля 2019

Я запускаю работу с БД с использованием плагина Maven liquibase на круге ci.Мне нужно прочитать параметры, такие как имя пользователя, пароль, dburl и т. Д. Из хранилища параметров AWS. Но когда я пытаюсь установить значение, возвращаемое aws cli, в пользовательскую переменную, она всегда пуста / пуста.Я знаю, что это значение существует, потому что эта же команда на терминале Mac возвращает значение.

Я использую скрипт Bash для установки CLI AWS с заданием круга ci. Когда я повторяю пароль в файле .sh, который я вижузначение, но когда я отражаю его в моем config.yml, я вижу пустое пустое значение.Я также пытаюсь получить значение, используя aws ssm с файлом config.yml, но даже там значение пусто.

My Config.yml

version: 2

references:
defaults: &defaults
working_directory: ~/tmp

environment:
  PROJECT_NAME: DB Job

build-filters: &filters 
filters:
  tags:
    only: /^v[0-9]{1,2}.[0-9]{1,2}.[0-9]{1,2}-(dev)/
  branches:
    ignore: /.*/
jobs:
checkout-code:
<<: *defaults

docker:
  - image: circleci/openjdk:8-jdk-node

steps: 
  - attach_workspace:
       at: ~/tmp

  - checkout

  - restore_cache:
      key: cache-{{ checksum "pom.xml" }}

  - save_cache:
      paths:
        - ~/.m2
      key: cache-{{ checksum "pom.xml" }}

  - persist_to_workspace:
      root: ~/tmp
      paths: ./

build-app:
<<: *defaults

docker:
  - image: circleci/openjdk:8-jdk-node


steps:
  - attach_workspace:
       at: ~/tmp

  - restore_cache:
      key: cache-{{ checksum "pom.xml" }}

  - run: chmod 700 resources/circleci/*.sh   
  - run: 
      name: Getting DB password
      command: resources/circleci/env-setup.sh

  - run: echo 'export ENV="$(echo $CIRCLE_TAG | cut -d '-' -f 2)"' >> $BASH_ENV
  - run: echo $ENV
  - run: echo $dbPasswordDev
  - run: export PASS=$(aws ssm get-parameters --names "/enterprise/org/dev/spring.datasource.password" --with-decryption --query "Parameters[0].Value" | tr -d '"') >> $BASH_ENV
  - run: echo $PASS
  - run: mvn resources:resources liquibase:update -P$ENV,pre-release


workflows:
version: 2
build-deploy:
jobs:
  - checkout-code:
      <<: *filters



  - build-app:
      requires:
        - checkout-code

      <<: *filters

env-setup.sh

sudo apt-get update
sudo apt-get install -y python-pip python-dev
sudo pip install awscli


aws configure set aws_access_key_id $AWS_ACCESS_KEY_ID
aws configure set aws_secret_access_key $AWS_SECRET_ACCESS_KEY
aws configure set aws_region $AWS_DEFAULT_REGION


dbPassword=`aws ssm get-parameters --names "/enterprise/org/dev/spring.datasource.password" --with-decryption --query "Parameters[0].Value" | tr -d '"' `
echo "dbPassword = ${dbPassword}"

export dbPasswordDev=$dbPassword >> $BASH_ENV
echo $"Custom = $dbPasswordDev"

Когда я отображаю $ dbPasswordDev в env-set.sh, я вижу значение, однако в config.yml я не вижу значения и вижу пустую / пустую строку.Также, когда я пытаюсь отобразить $ PASS в config.yml, я ожидаю увидеть значение, но вижу пустую пустую строку

1 Ответ

0 голосов
/ 03 февраля 2019

Согласно их официальной документации , вам нужно echo"export foo = bar" в $ BASH_ENV (это просто файл, который запускается при запуске сеанса bash):

поэтому в вашем файле env-setup.sh:

echo "export dbPasswordDev=$dbPassword" >> $BASH_ENV
...