【问题标题】:Do I need to pass each secret to my GitHub Actions workflow file?我是否需要将每个秘密传递到我的 GitHub Actions 工作流文件?
【发布时间】:2023-01-11 08:42:23
【问题描述】:

我有很多秘密,存储在我的 repo 的 Settings/Secrets/Action 中。

我的应用程序使用了各种秘密,但命令中没有使用它们。

name: BuildCheck

on:
  push:
  pull_request:
    branches: [main]

  # Allows you to run this workflow manually from the Actions tab
  workflow_dispatch:

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - uses: actions/setup-node@v3
        with:
          node-version: 14
      - run: npm ci
      - run: npm run build

我是否需要在上面的配置文件中添加 env 顶级映射下的所有变量,以便操作使用它们?

这似乎打破了我使用 Doppler 管理机密的自动化流程。

有没有办法在不明确指定的情况下注入所有秘密? (我确实看过文档,但没有找到这是否可能)

来自 Vercel,这样做感觉有点退步。

【问题讨论】:

    标签: github-actions


    【解决方案1】:

    这里有一点要拆包。

    我需要添加所有变量吗?

    简短的回答:是的。

    然而,值得考虑的是,秘密通常仅以密钥或使用许可证或凭据访问应用程序的形式配置系统之间的连接。

    在机密中添加其他配置选项并不常见。

    在工作流文件中的env: 顶级地图下?

    我不鼓励将秘密放在顶级环境中。

    原因是 env 将暴露给所有后续工作。如果有人添加了不受此信息信任的工作(比如外部操作),它可能会成为一个问题。

    那么什么是好的做法呢?

    首先:从秘密中拆分配置:

    • 为配置选项使用配置文件。
    • 将秘密用于秘密密钥或其他凭据。

    其次:首先使用安全性。

    • 仅使用所需信息配置每个工作流程步骤
    • 将秘密变量显式传递给操作参数

    最后:将配置存储在尽可能靠近应用程序的位置,可以选择多个 - 每个用于不同的环境。

    与 Vercel 的比较

    Vercel 完全抽象了工作流程,因此只能做非常具体的事情。每个系统的性质都不同,并为您提供不同程度的灵活性。

    【讨论】:

    • 优秀的答案。我非常感谢详细的解释。
    【解决方案2】:

    首先:从秘密中拆分配置:

    • 为配置选项使用配置文件。
    • 将秘密用于秘密密钥或其他凭据。

    现在有另一种选择:

    GitHub Actions – Support for configuration variables in workflows(2023 年 1 月)

    今天,我们在 GitHub Actions 中添加了对配置变量的支持

    以前,您需要将此配置数据存储为加密的秘密,以便在工作流中重用值。
    虽然非常安全,但这种方法不允许轻松存储和检索非敏感配置数据,例如编译器标志、用户名、服务器名称等。

    配置变量允许您将非敏感数据存储为纯文本变量,这些变量可以在您的存储库或组织中的工作流程中重复使用。

    您可以根据需要在组织、存储库或环境级别定义变量。

    可以使用新的 vars context 在整个工作流中访问配置变量。

    以下示例显示了如何在工作流中使用配置变量。

    jobs:
      display-variables:
        runs-on: ${{ vars.RUNNER }}
        steps:
        - name: Use variables
          run: |
            echo "Repository variable : ${{ vars.REPOSITORY_VAR }}"
            echo "Organization variable : ${{ vars.ORGANIZATION_VAR }}"
    

    注意:变量功能处于公开测试阶段

    Learn more about configuration variables

    【讨论】:

      猜你喜欢
      • 2023-01-16
      • 1970-01-01
      • 2021-07-10
      • 2019-11-28
      • 2021-06-10
      • 1970-01-01
      • 1970-01-01
      • 2022-01-11
      • 2021-02-12
      相关资源
      最近更新 更多