如何使用 python 在 GitHub 操作中设置环境变量
How to set environment variables in GitHub actions using python
我想执行 python 脚本以在 GitHub 操作中设置一些环境变量。我想稍后在我的 GitHub 操作步骤中使用这些环境变量。我的 python 脚本如下所示:
new_ver = get_version_from_commit(commit_msg)
if new_ver:
if new_ver == "false":
os.environ["SHOULD_PUSH"] = "0"
print("Not pushing the image to k8s")
exit(0)
else:
new_tag = app_name + ":" + str(new_ver)
os.environ["DOCKER_IMAGE_TAG"] = new_tag
os.environ["SHOULD_PUSH"] = "1"
print("New tag: " + new_tag)
exit(0)
我的 GitHub 动作文件的一部分,在执行上面的 python 脚本后看起来像:
- name: Print env var
run: echo ${{ env.DOCKER_IMAGE_TAG }}
- name: Build and push
id: docker_build
uses: docker/build-push-action@v2
with:
push: true
tags: ${{ secrets.DOCKER_REGISTRY }}/${{ env.DOCKER_IMAGE_TAG }}
但是使用 os.environ 不会在 python 进程之外公开环境变量。我该如何解决这个问题?
不能直接设置环境变量。相反,您需要将环境变量写入一个文件,您可以通过 $GITHUB_ENV
.
获取其名称
在一个简单的工作流程步骤中,您可以像这样将其附加到文件中(来自 docs):
echo "{name}={value}" >> $GITHUB_ENV
在python中,你可以这样做:
import os
env_file = os.getenv('GITHUB_ENV')
with open(env_file, "a") as myfile:
myfile.write("MY_VAR=MY_VALUE")
鉴于此 python 脚本,您可以设置和使用新的环境变量,如下所示:
- run: python write-env.py
- run: echo ${{ env.MY_VAR }}
问我如何设置两个或多个环境变量。您必须用换行符分隔这些变量。这是一个例子:
import os
env_file = os.getenv('GITHUB_ENV')
with open(env_file, "a") as myfile:
myfile.write("MY_VAR1=MY_VALUE1\n")
myfile.write("MY_VAR2=MY_VALUE2")
我想执行 python 脚本以在 GitHub 操作中设置一些环境变量。我想稍后在我的 GitHub 操作步骤中使用这些环境变量。我的 python 脚本如下所示:
new_ver = get_version_from_commit(commit_msg)
if new_ver:
if new_ver == "false":
os.environ["SHOULD_PUSH"] = "0"
print("Not pushing the image to k8s")
exit(0)
else:
new_tag = app_name + ":" + str(new_ver)
os.environ["DOCKER_IMAGE_TAG"] = new_tag
os.environ["SHOULD_PUSH"] = "1"
print("New tag: " + new_tag)
exit(0)
我的 GitHub 动作文件的一部分,在执行上面的 python 脚本后看起来像:
- name: Print env var
run: echo ${{ env.DOCKER_IMAGE_TAG }}
- name: Build and push
id: docker_build
uses: docker/build-push-action@v2
with:
push: true
tags: ${{ secrets.DOCKER_REGISTRY }}/${{ env.DOCKER_IMAGE_TAG }}
但是使用 os.environ 不会在 python 进程之外公开环境变量。我该如何解决这个问题?
不能直接设置环境变量。相反,您需要将环境变量写入一个文件,您可以通过 $GITHUB_ENV
.
在一个简单的工作流程步骤中,您可以像这样将其附加到文件中(来自 docs):
echo "{name}={value}" >> $GITHUB_ENV
在python中,你可以这样做:
import os
env_file = os.getenv('GITHUB_ENV')
with open(env_file, "a") as myfile:
myfile.write("MY_VAR=MY_VALUE")
鉴于此 python 脚本,您可以设置和使用新的环境变量,如下所示:
- run: python write-env.py
- run: echo ${{ env.MY_VAR }}
问我如何设置两个或多个环境变量。您必须用换行符分隔这些变量。这是一个例子:
import os
env_file = os.getenv('GITHUB_ENV')
with open(env_file, "a") as myfile:
myfile.write("MY_VAR1=MY_VALUE1\n")
myfile.write("MY_VAR2=MY_VALUE2")