带有 Github Actions 的 env 文件

Posted

技术标签:

【中文标题】带有 Github Actions 的 env 文件【英文标题】:env file with Github Actions 【发布时间】:2021-05-20 02:49:12 【问题描述】:

我正在使用 React 和 firebase。我有一个 .env 文件,其中我的秘密存储在项目的根目录中。

如何访问 GitHub 工作流 yml 文件中的.env 文件。

作为最佳实践,我应该如何进行?

【问题讨论】:

【参考方案1】:

不要这样做

将其签入您的 GitHub 项目是一个非常糟糕的主意。在那里增加了重点,因为一旦密钥在您的 git 存储库中,您基本上就会遇到巨大的麻烦,并且撤消是一个巨大的麻烦。您永远不会,永远想要将密钥提交到您的存储库。只是不要。1

相反,您需要做的是在您的组织/个人级别使用 GitHub Secrets,它们可以默认应用于您的项目,或者每个项目。这些可以在 GitHub 操作中使用,例如:

$ secrets.SECRET_NAME 

这些将根据秘密值被替换。

GitHub Secrets 就像您的.env 文件变量的安全2 版本。


1 您可能认为拥有一个私有存储库可以保护您,但事实并非如此。其他团队成员可能会下载此文件并无意中将其推送到其他地方。你可能会在不知不觉中开源它。错误的发生是因为您假设您永远不会公开这些密钥。

2 当然,这些仅与 GitHub 一样安全,并且即使 GitHub 很难随便看到它们,也可能被具有足够高访问权限的人暴露。

【讨论】:

感谢您的回答。我将我的 .env file 机密添加到 GitHub 机密中,并将其命名为 REACT_APP_API_KEY。这是我的.yml 文件.yml。但我遇到了我在之前问过auth/invalid-api-key 的问题中描述的相同问题 你应该将各个环境变量拆分为不同的秘密,但我想你也可以把整个东西都塞进去。【参考方案2】:

您永远不应该使用密钥提交 .env 文件。

为此,您可以使用GitHub encrypted secrets。

【讨论】:

感谢您的回复。但我遇到了与here 描述的相同问题。如果需要,您可以找到我的.yml。 另外,我没有将我的 .env 文件提交到 Github。实际上,当检测到更改时,我正在使用 Github 操作自动构建并部署到 firebase。但似乎 Github 操作没有提供我的秘密,这就是为什么当我访问托管 URL 时它给我一个错误说 Your API key is invalid, please check you have copied it correctly.

以上是关于带有 Github Actions 的 env 文件的主要内容,如果未能解决你的问题,请参考以下文章

Github Actions - 如何使我的 env 变量(存储在 .env 文件中)在我的工作流程中可用

如何在 GitHub Actions 中使用 bash 表达式设置 env var?

在 Github Actions 中注入 .env.local 文件或自定义环境变量集到 yarn build

如何使用带有语义发布 Github 插件的 Github Actions 发布整个目录?

带有 ESP-IDF 编译的 GitHub Actions

github actions firebase 没有项目活动,但项目别名可用