【问题标题】:How to get GitHub secrets of host repository as input in github action?如何获取主机存储库的 GitHub 机密作为 github 操作的输入?
【发布时间】:2021-08-12 16:24:53
【问题描述】:

我们有一个名为 recent-activity 的存储库,它托管一个 GitHub 操作,可供所有 GitHub 用户使用。我们想要添加一个 URL,当操作(由任何用户)运行时,我们可以在该 URL 上发送 http 请求。但是,我们不想公开该 URL。

有什么办法可以做到吗?

【问题讨论】:

    标签: node.js github workflow github-actions github-secret


    【解决方案1】:

    您可以通过指定名称直接将存储库中的机密包含到工作流中。假设您有一个名为 URL 的秘密,那么您可以像这样简单地使用它:

    env:
         URL: ${{ secrets.URL }}
    

    现在您的 URL 已获取,您可以在其他命令中使用它,例如 $URL

    【讨论】:

    • 但是,我们不希望用户修改它。
    • 你这是什么意思?用户如何修改它?
    • 用户可以通过放置自己的环境变量来修改它吗?
    • 我发布的 sn-p 应该放在你的 GitHub 操作 yml 文件中。抱歉,我不确定您所说的用户可以修改它是什么意思。
    • 我尝试了你的建议。 Error: Readme-Workflows/recent-activity/github-secret/action.yml (Line: 20, Col: 9): Unrecognized named-value: 'secrets'. Located at position 1 within expression: secrets.TEST_SECRET。这是我在另一个 repo 上运行工作流时遇到的错误
    【解决方案2】:

    您可以在官方文档中找到有关Github Secrets 的所有信息

    请注意,存储库用户无权访问密钥,因为您需要 admin 权限才能编辑密钥值。此外,秘密不会显示在操作工作流执行中(它们将在日志中替换为 ***)。

    每个人都将在工作流程中以相同的方式使用此秘密变量,而无法访问其值。

    演示

    【讨论】:

    • 这是用户使用工作流的过程,而我是工作流的开发者。当他们使用我的工作流程时,我不想与任何人共享 URL。所以用户不必添加任何秘密。每当任何用户使用工作流时,我都希望将请求发送到相同的 URL。但 URL 必须对所有人保密。我已更新我的问题以使其更清楚。
    • 这正是秘密工作的方式。添加密码的不是用户,会(作为 repo 管理员)。然后,每个人都将在工作流中以相同的方式使用这个秘密变量,而无法访问它的值。
    • 我在这个 repo 中添加了秘密:github.com/Readme-Workflows/recent-activity。我在这里使用该工作流程:github.com/abhijoshi2k/abhijoshi2k/blob/master/.github/…。但我无法获得变量。 TEST_SECRET 是秘密变量。
    • Readme-Workflows/recent-activity@github-actions 似乎不是一个可用的操作(因此您使用的语法可能不起作用)。您是否尝试仅在特定步骤上使用,就像我在 Run command with Secret 步骤的帖子示例中给出的那样? (例如,如果您尝试打印机密,工作流将返回 ***,如果未设置机密,则应返回错误)。
    • 它是@github-secrets,它是该仓库的一个分支。当我在 github.com/abhijoshi2k/abhijoshi2k 添加秘密时,我得到了 *** 输出。但是,我想在github.com/Readme-Workflows/recent-activity 中添加秘密,并在abhijoshi2k repo 运行工作流时使其可访问。
    猜你喜欢
    • 2023-02-24
    • 2021-10-03
    • 2017-09-01
    • 2021-07-13
    • 2020-10-10
    • 2014-08-21
    • 2021-02-26
    • 1970-01-01
    • 2020-12-13
    相关资源
    最近更新 更多