ubuntu-latest GitHub 运行程序中的持久操作系统级环境变量

ubuntu-latest GitHub 运行程序中的持久操作系统级环境变量

为了设置可由 python 应用程序通过os.environGitHub 工作流程中的 ubuntu 最新 GitHub 运行程序使用的操作系统级环境变量,必须更改以下哪些特定语法?

使用案例:

用例是my-app-that-consumes-os-level-environ-variables.py在 ubuntu-latest GitHub runner 中运行的一个名为 running 的 python 3.10 应用程序需要使用MY_VAR_ONEpython 对象的值os.environ

问题:

问题是,每当下面的工作流程尝试写入/etc/environment、 或/etc/bashrc或 时,我们都会收到权限被拒绝的错误/etc/profile

我们尝试过的事情:

我们尝试设置 GitHub 工作流环境变量,但 GitHub 环境变量不会传播到 Python 的os.environ.我们通过打印os.environPython 3.10 应用程序中的内容来对此进行测试,但os.environ.

此外,以下命令无法创建应用程序运行export MY_VAR_ONE=/path/to/some.yaml时保留的持久操作系统级环境变量。my-app-that-consumes-os-level-environ-variables.py

GitHub 工作流程:

这是 GitHub 工作流程,其中包括 ubuntu-latest 启动脚本,该脚本必须设置持久环境变量然后触发my-app-that-consumes-os-level-environ-variables.py

name: set-os-environ-var
on:
  push:
    branches:
      - dev
jobs:
  set-os-environ-var:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - shell: bash
        name: Configure agent
        run: |
          export MY_VAR_ONE=/path/to/some.yaml
          sudo echo "export MY_VAR_ONE=/path/to/some.yaml" >> /etc/environment
          sudo echo "export MY_VAR_ONE=/path/to/some.yaml" >> /etc/bashrc
          sudo echo "export MY_VAR_ONE=/path/to/some.yaml" >> /etc/profile
          python my-app-that-consumes-os-level-environ-variables.py

使用环境变量的应用程序:

这是一个精简的示例my-app-that-consumes-os-level-environ-variables.py

import os
#The output from this next line must include MY_VAR_ONE , but does not currently.  
print("os.environ contains: ", str(os.environ))

答案1

在您的工作流程中使用env关键字正是正确的答案。如果我们写:

name: set-os-environ-var
on:
  push:
    branches:
      - dev

jobs:
  set-os-environ-var:
    runs-on: ubuntu-latest
    env:
      MY_VAR_ONE: /path/to/some.yaml
    steps:
      - uses: actions/checkout@v3
      - shell: bash
        name: Configure agent
        run: |
          python my-app-that-consumes-os-level-environ-variables.py

然后MY_VAR_ONE环境变量将可用于set-os-environ-var作业中的所有步骤,并将my-app-that-consumes-os-level-environ-variables.py在 中看到该值os.environ

相关内容