[英]How to access environment secrets from a Github workflow?
我正在嘗試從 Github 工作流程將Python package發布到 PyPI,但“測試 PyPI”的身份驗證失敗。 我從命令行成功發布到 Test PyPI,所以我的 API 令牌必須是正確的。 我還檢查了秘密值中的前導和尾隨空格(即在 GitHub 上)。
正如最后一次提交所顯示的那樣,我嘗試了一些沒有成功的事情。
我首先嘗試將簡單的 bash 命令內聯到工作流中,如下所示,但我無法將我的秘密放入環境變量中。 當我打印這些變量時,日志中沒有任何顯示。
- name: Publish on Test PyPI
env:
TWINE_USERNAME: __token__
TWINE_PASSWORD: ${{ secrets.PYPI_TEST_TOKEN }}
TWINE_REPOSITORY_URL: "https://test.pypi.org/legacy/"
run: |
echo "$TWINE_PASSWORD"
pip install twine
twine check dist/*
twine upload dist/*
我還嘗試使用如下專用的 GitHub Action,但它也不起作用。 我想問題出在我的工作流程中不可用的秘密。 令我困惑的是, 我的工作流程使用另一個令牌/秘密就好了,不過,如果我把它放在環境變量中。 什么都沒有打印出來。 我還以不同的名稱(PYPI_TEST_TOKEN 和 TEST_PYPI_API_TOKEN)重新創建了我的秘密,但無濟於事。
- name: Publish to Test PyPI
uses: pypa/gh-action-pypi-publish@release/v1
with:
user: __token__
password: ${{ secrets.TEST_PYPI_API_TOKEN }}
repository_url: https://test.pypi.org/legacy/
我想我錯過了一些明顯的東西(像往常一樣)。 非常感謝任何幫助。
我最終想通了。 我的錯誤是我在一個環境中定義了我的秘密,並且默認情況下,工作流不在任何特定環境中運行。 為此,我必須在職位描述中明確命名環境,如下所示:
jobs:
publish:
environment: CI # <--- /!\ Here is the link to the environment
needs: build
runs-on: ubuntu-latest
if: startsWith(github.ref, 'refs/tags/v')
steps:
- uses: actions/checkout@v2
# Some more steps here ...
- name: Publish to Test PyPI
env:
TWINE_USERNAME: "__token__"
TWINE_PASSWORD: ${{ secrets.TEST_PYPI_API_TOKEN }}
TWINE_REPOSITORY_URL: "https://test.pypi.org/legacy/"
run: |
echo KEY: '${TWINE_PASSWORD}'
twine check dist/*
twine upload --verbose --skip-existing dist/*
文檔實際上提到了它。
感謝那些評論指出我正確方向的人。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.