要在 GitHub Actions 中运行 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 }}
然而,输出如下,
environ({
'TEST_ENV': 'hello world',
'TEST_SECRET':'',
...})
由于 GitHub's redaction,它似乎不起作用。
根据@raspiduino 的回答,我对导入 env vars 的两个选项进行了更多探索。
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
不能传递。
答案 0 :(得分:1)
GitHub Actions 中包含三种类型的机密。
要访问环境机密,您必须在您的工作中referencing an environment。 (感谢@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 }}
答案 1 :(得分:0)