web-dev-qa-db-fra.com

Rendre la variable visible à travers les étapes des pipelines Bitbucket?

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?

12
pixel

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
8
Jack Klimov

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:

9
Mr-IDE