ubuntu-latest GitHub 러너의 영구 OS 수준 환경 변수

ubuntu-latest GitHub 러너의 영구 OS 수준 환경 변수

os.environGitHub 워크플로의 Ubuntu 최신 GitHub 실행기를 통해 Python 애플리케이션에서 사용할 수 있는 운영 체제 수준 환경 변수를 설정하려면 다음 특정 구문 중 무엇을 변경해야 합니까?

사용 사례:

사용 사례는 python 객체의 값을 my-app-that-consumes-os-level-environ-variables.py사용해야 하는 ubuntu-latest GitHub 러너에서 running running이라는 이름의 Python 3.10 애플리케이션 입니다 .MY_VAR_ONEos.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-varmy-app-that-consumes-os-level-environ-variables.pyos.environ

관련 정보