首页 > 解决方案 > Github Actions CI/CD 工作流程中的 .env 文件:如何将这些文件提供到工作流程中

问题描述

我将 Github Actions 工作流用于 Node 和 PHP 项目的 CI/CD 流程。

在一个工作流程中,我将我的存储库克隆到 Github Actions runner 虚拟机中。然后,为了在工作流中运行测试,我必须.env在克隆的存储库中拥有该文件。

问题是我的.env文件不是存储库的一部分(这是普遍的做法)。

为了解决这个问题,我使用了我认为的解决方法:设置MY_PROJECT_ENVGithub Action sercret 变量,手动将我的文件内容放在那里.env,然后.env使用 Linux console 在我的工作流程中动态创建文件echo "${{ secrets.MY_PROJECT_ENV}}" > .env。这行得通。

但我想知道还有其他方法可以.env向 Github Actions 工作流程提供文件吗?

标签: phpnode.jscontinuous-integrationenvironment-variablesgithub-actions

解决方案


我现在知道有 3 种方法可以做到这一点。一年后,我在另一个问题中回答了我自己的问题。看那边。

为了 SO 规则和可查找性,我在这里做了一个总结。

  1. 您将.env文件保存在存储库中。使用dotenv 操作将文件读入工作流程。

  2. 您将文件保留在存储库之外。那么你有两种获取.env变量的方法:

    2.1。正如我在上面的问题中所写,手动将文件内容复制到 GitHub 操作秘密变量,然后在您的工作流程中.env从该变量创建文件。

    2.2. 使用 GitHub Actions API创建/更新秘密:在你的机器上编写 NodeJS 脚本(你可能还是使用 Webpack、Gulp 或类似的 Node 东西,所以你已经安装了 Node)。

    该脚本应读取本地.env文件并将其内容写入 GH 机密。当然,您可以使用您在项目中使用的任何语言编写自定义控制台实用程序来执行此操作。

就这么简单:)


推荐阅读