os.environ
GitHub 워크플로의 Ubuntu 최신 GitHub 실행기를 통해 Python 애플리케이션에서 사용할 수 있는 운영 체제 수준 환경 변수를 설정하려면 다음 특정 구문 중 무엇을 변경해야 합니까?
사용 사례:
사용 사례는 python 객체의 값을 my-app-that-consumes-os-level-environ-variables.py
사용해야 하는 ubuntu-latest GitHub 러너에서 running running이라는 이름의 Python 3.10 애플리케이션 입니다 .MY_VAR_ONE
os.environ
질문:
문제는 아래 워크플로에서 /etc/environment
, 또는 /etc/bashrc
또는 쓰기를 시도할 때마다 권한 거부 오류가 발생한다는 것입니다 /etc/profile
.
우리가 시도한 것:
GitHub Workflow 환경 변수 설정을 시도했지만 GitHub 환경 변수가 Python 에 전파되지 않습니다 . Python 3.10 애플리케이션의 내용을 os.environ
인쇄하여 os.environ
테스트했지만 os.environ
.
또한 다음 명령은 애플리케이션이 실행되는 export MY_VAR_ONE=/path/to/some.yaml
동안 유지되는 영구 운영 체제 수준 환경 변수를 만드는 데 실패합니다.my-app-that-consumes-os-level-environ-variables.py
GitHub 워크플로:
다음은 영구 환경 변수를 설정한 다음 트리거해야 하는 ubuntu-latest 시작 스크립트를 포함하는 GitHub 워크플로입니다 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