nor*_*ree 6 python environment-variables github-actions github-secret
要pytest
在 GitHub Actions 中运行,我必须传递一些secrets
Python 运行环境。例如,
- name: Test env vars for python
run: python -c 'import os;print(os.environ)'
env:
TEST_ENV: 'hello world'
TEST_SECRET: ${{ secrets.MY_TOKEN }}
Run Code Online (Sandbox Code Playgroud)
但是,输出如下:
environ({
'TEST_ENV': 'hello world',
'TEST_SECRET':'',
...})
Run Code Online (Sandbox Code Playgroud)
由于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)'
Run Code Online (Sandbox Code Playgroud)
基本上,这两个步骤的输出相同。可以REPO_SECRET
通过,但不能通过ENV_SECRET
。
GitHub Actions 中存在三种类型的机密。
要访问环境机密,您必须在工作中引用环境。(感谢@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 }}
Run Code Online (Sandbox Code Playgroud)