2017-09-29 18 views
0

CI/CDを使用してビルド、テスト、デプロイメントを自動化しようとしています。私は私のgitリモートリポジトリを照会するために設計されたpythonスクリプトを持っています、セマンティックバージョン管理形式(x.x.x)で最新のタグを選択し、変更の種類に応じてインクリメントします。pythonスクリプトから環境変数を設定する

自分の環境変数(GIT_NEW_VERSION)を自分のMakefile内で使用できるようにしたいのですが、生成されたバイナリにはバージョンが用意されています。この問題は、pythonスクリプトが親プロセス変数へのアクセス権を持たないサブプロセスで実行されるという問題があります。だから私は、現在のプロセスと、Pythonスクリプトを呼び出したプロセスではなく作成されたプロセスの変数だけを変更することができます。

Pythonスクリプトからmakeを呼び出すことはできますが、エラー管理やCIツールでのログ記録には適していません。

+0

'os.putenv(VARNAME、値)' – kaza

+0

提案のためだけに現在のプロセス変数を変更し、そのおかげで@bulbus。親プロセス変数ではありません。 一度Python環境を終了すると、変数は私が望むように設定されなくなります。 – jb1681

+0

[こちら](https://stackoverflow.com/questions/488366/how-do-i-make-environment-variable-changes-stick-in-python)を参照してください。 – kaza

答えて

0

バッシュ:Pythonで同様

LD_LIBRARY_PATH=my_path 
sqsub -np $1 /path/to/executable 

import os 
import subprocess 
import sys 

os.environ['LD_LIBRARY_PATH'] = "my_path" # visible in this process + all children 
subprocess.check_call(['sqsub', '-np', sys.argv[1], '/path/to/executable'], 
         env=dict(os.environ, SQSUB_VAR="visible in this subprocess")) 
+0

上記のとおり、私は親現在のプロセスや子供よりむしろ。私はまた、この回答を投稿する前に他の場所で見てきました。 – jb1681

関連する問題