我想执行一个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进程之外。我该怎么解决这个问题?
3条答案
按热度按时间iszxjhcz1#
不能直接设置环境变量。相反,您需要将环境变量写入一个文件,其名称可以通过
$GITHUB_ENV
获取。在一个简单的工作流步骤中,您可以将其追加到文件中,如下所示(来自文档):
在Python中,你可以这样做:
给定这个python脚本,你可以像下面这样设置和使用你的新环境变量:
sf6xfgos2#
我问我如何设置两个或多个环境变量。你必须用换行符分隔这些变量。下面是一个例子:
slmsl1lt3#
另一种可能更直接的方法是在Python代码中打印一个值,并在bash级别上“捕获”它,之后可以将其追加到
GITHUB_OUTPUT
变量-