簡體   English   中英

如何從 Github 工作流訪問環境機密?

[英]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.

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