Je voudrais partager une variable en deux étapes.
Je le définis comme:
- export MY_VAR="FOO-$BITBUCKET_BUILD_NUMBER"
mais quand j'essaie de l'imprimer à une autre étape:
- echo $MY_VAR
c'est vide.
Comment puis-je partager une telle variable?
J'ai peur, mais il semble impossible de partager une variable d'environnement d'une étape à l'autre, MAIS vous pouvez définir des variables d'environnement globales pour toutes les étapes dans les paramètres du projet sous la catégorie pipelines
.
Settings -> Pipelines -> Repository Variables
Vous pouvez copier toutes les variables d'environnement dans un fichier, puis les relire dans:
- step1:
# Export some variables
- export MY_VAR1="FOO1-$BITBUCKET_BUILD_NUMBER"
- export MY_VAR2="FOO2-$BITBUCKET_BUILD_NUMBER"
- echo $MY_VAR1
- echo $MY_VAR2
# Copy all the environment variables to a file, as KEY=VALUE, to share to other steps
- printenv > ENVIRONMENT_VARIABLES.txt
- step2:
# Read all the previous environment variables from the file, and export them again
- export $(cat ENVIRONMENT_VARIABLES.txt | xargs)
- echo $MY_VAR1
- echo $MY_VAR2
Remarque: Essayez d'éviter d'utiliser des chaînes contenant des espaces ou de nouveaux caractères de ligne (pour les clés ou les valeurs). La commande export
aura du mal à les lire et peut générer des erreurs. Une solution de contournement possible consiste à tilisez sed
pour supprimer automatiquement toute ligne qui contient un caractère espace:
# Copy all the environment variables to a file, as KEY=VALUE, to share to other steps
- printenv > ENVIRONMENT_VARIABLES.txt
# Remove lines that contain spaces, to avoid errors on re-import (then delete the temporary file)
- sed -i -e '/ /d' ENVIRONMENT_VARIABLES.txt ; find . -name "ENVIRONMENT_VARIABLES.txt-e" -type f -print0 | xargs -0 rm -f
Plus d'informations: