【问题标题】:How to set environment variables in GitHub actions using python如何使用 python 在 GitHub 操作中设置环境变量
【发布时间】:2022-01-04 10:49:41
【问题描述】:

我想执行一个 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 进程之外。我该如何解决这个问题?

【问题讨论】:

    标签: python continuous-integration environment-variables github-actions


    【解决方案1】:

    您不能直接设置环境变量。相反,您需要将环境变量写入一个文件,您可以通过$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 }}
    

    【讨论】:

      猜你喜欢
      • 2021-01-07
      • 2020-09-03
      • 1970-01-01
      • 2021-06-18
      • 2022-01-19
      • 2022-11-10
      • 2021-03-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多