为了设置可由 python 应用程序通过
os.environ
GitHub 工作流程中的 ubuntu 最新 GitHub 运行程序使用的操作系统级环境变量,必须更改以下哪些特定语法?
使用案例:
用例是my-app-that-consumes-os-level-environ-variables.py
在 ubuntu-latest GitHub runner 中运行的一个名为 running 的 python 3.10 应用程序需要使用MY_VAR_ONE
python 对象的值os.environ
。
问题:
问题是,每当下面的工作流程尝试写入/etc/environment
、 或/etc/bashrc
或 时,我们都会收到权限被拒绝的错误/etc/profile
。
我们尝试过的事情:
我们尝试设置 GitHub 工作流环境变量,但 GitHub 环境变量不会传播到 Python 的os.environ
.我们通过打印os.environ
Python 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
。