J'exécute un travail de base de données en utilisant le plugin Maven liquibase sur circle ci. J'ai besoin de lire les paramètres comme le nom d'utilisateur, le mot de passe, dburl, etc. à partir du magasin de paramètres AWS. Mais lorsque j'essaie de définir la valeur renvoyée par aws cli dans une variable personnalisée, elle est toujours vide. Je sais que la valeur existe car la même commande sur le terminal Mac renvoie une valeur.
Je suis en train d'utiliser un Bash script pour installer AWS CLI avec circle ci job.Quand je fais écho du mot de passe avec dans le fichier .sh je vois la valeur mais quand je le fais écho sur mon config.yml je vois une valeur vide vide. J'ai également essayé d'obtenir la valeur en utilisant aws ssm avec le fichier config.yml mais même là, la valeur est vide.
Mon 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"
Lorsque je fais écho à $dbPasswordDev dans env-set.sh, je vois la valeur, mais dans config.yml, je ne vois pas la valeur et je vois une chaîne vide. De même, lorsque j'essaie de faire écho à $PASS dans le fichier config.yml, je m'attends à voir la valeur, mais je vois une chaîne vide.