0

pytest在 GitHub Actions 中运行,我必须通过一些secretsPython 运行环境。例如,

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

但是,输出如下,

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

在此处输入图像描述

输出 在此处输入图像描述

4

2 回答 2

1

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 }} 
于 2021-03-19T12:30:06.310 回答
0

您尝试以下操作:

  - 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']它来获取它。

我在这里这里做了这个

于 2021-03-12T02:44:33.823 回答