簡體   English   中英

如何將 GitHub 操作中的機密傳遞給 python 環境變量?

[英]How to pass secrets from GitHub Actions to python environ variables?

要在 GitHub 操作中運行pytest ,我必須為運行環境的 Python 傳遞一些secrets 例如,

  - name: Test env vars for python
    run: python -c 'import os;print(os.environ)'
    env:
      TEST_ENV: 'hello world'
      TEST_SECRET: ${{ secrets.MY_TOKEN }}

但是,output如下,

environ({
'TEST_ENV': 'hello world',
'TEST_SECRET':'',
...})

由於GitHub 的修訂,它似乎不起作用。

根據@raspiduino 的回答,我對導入環境變量的兩個選項進行了更多探索。

name: python

on: push

jobs:
  test_env:
    runs-on: ubuntu-latest
    steps:
    - name: Set up Python
      uses: actions/setup-python@v2
      with:
        python-version: 3.8
        
    - name: Test env vars for python
      run: python -c 'import os;print(os.environ)'
      env:
        ENV_SECRET: ${{ secrets.ENV_SECRET }} 
        REPO_SECRET: ${{ secrets.REPO_SECRET }} 
    
    - name: Test inline env vars for python
      run: ENV_SECRET=${{ secrets.ENV_SECRET }} REPO_SECRET=${{ secrets.REPO_SECRET }} python -c 'import os;print(os.environ)'

基本上,這兩個步驟都在相同的輸出中。 REPO_SECRET可以通過,但不能通過ENV_SECRET

在此處輸入圖像描述

輸出在此處輸入圖像描述

GitHub Actions 中有三種類型的機密。

  1. 組織機密
  2. 存儲庫機密
  3. 環境秘密

要訪問環境機密,您必須在工作中引用環境 (感謝@riQQ)

行動秘密

name: python

on: push

jobs:
  test_env:
    environment: TEST_SECRET
    runs-on: ubuntu-latest
    steps:
    - name: Set up Python
      uses: actions/setup-python@v2
      with:
        python-version: 3.8
        
    - name: Test env vars for python
      run: python -c 'import os;print(os.environ)'
      env:
        ENV_SECRET: ${{ secrets.ENV_SECRET }} 
        REPO_SECRET: ${{ secrets.REPO_SECRET }} 

您嘗試以下操作:

  - name: Test env vars for python
    run: TEST_SECRET=${{ secrets.MY_TOKEN }} python -c 'import os;print(os.environ['TEST_SECRET'])

這會將${{ secrets.MY_TOKEN }}作為環境變量直接傳遞給 python 進程,而不與其他進程共享。 然后你可以使用os.environ['TEST_SECRET']來獲取它。

在這里這里做了這個

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM