我是否需要将每个秘密传递到我的 GitHub Actions 工作流程文件?

Do I need to pass each secret to my GitHub Actions workflow file?

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

我的应用程序使用了各种机密,但命令中使用了其中 none 个。

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,感觉有点退步。

这里有一点需要解包。

我需要添加所有变量吗?

简短的回答:是的。

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

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

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

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

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

那么什么是好的做法?

首先:从secret中拆分配置:

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

其次:安全第一。

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

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

与 Vercel 的比较

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