2つのステップで変数を共有したいと思います。
私はそれを次のように定義します:
- export MY_VAR="FOO-$BITBUCKET_BUILD_NUMBER"
しかし、他のステップでそれを印刷しようとすると:
- echo $MY_VAR
空っぽです。
そのような変数をどのように共有できますか?
申し訳ありませんが、ステップ間で環境変数を共有することは不可能のようですが、pipelines
カテゴリの下のプロジェクトの設定で、すべてのステップのグローバル環境変数を定義できます。
Settings -> Pipelines -> Repository Variables
すべての環境変数をファイルにコピーしてから、それらを読み込むことができます。
- 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
注:スペースまたは改行文字が含まれる文字列(キーまたは値用)の使用は避けてください。 export
コマンドはそれらを読み取ることができず、エラーをスローする可能性があります。 1つの可能な回避策は スペースを含む行を自動的に削除するにはsed
を使用 です。
# 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
より詳しい情報: