【问题标题】:.env files in Github Actions CI/CD workflows: how to provide these into the workflowGithub Actions CI/CD 工作流程中的 .env 文件:如何将这些文件提供到工作流程中
【发布时间】:2020-10-08 09:18:28
【问题描述】:

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

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

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

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

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

【问题讨论】:

    标签: php node.js continuous-integration environment-variables github-actions


    【解决方案1】:

    目前我知道有 3 种方法可以做到这一点。一年后,我在另一个问题中将answer 放在我自己的问题上。看那里。

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

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

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

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

      2.2。使用 GitHub Actions API to create/update the secrets:在你的机器上编写 NodeJS 脚本(你可能还是使用 Webpack、Gulp 或类似的 Node 东西,所以你已经安装了 Node)。

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

    就这么简单:)

    【讨论】:

      【解决方案2】:

      如您所知,.env 并不意味着推送到远程存储库。

      您需要以某种方式将环境变量添加到您正在运行程序的机器上。

      在您的情况下,您可以使用.yaml 文件添加环境变量,如下所示

      steps:
        - name: Hello Program
          run: Hello $FIRST_NAME $LAST_NAME!
          env:
            FIRST_NAME: Akhil
            LAST_NAME: Pentamsetti
      

      有关使用环境变量的更多信息,请访问github official doc

      【讨论】:

      • 是的,我知道我可以通过工作流配置 YAML 文件使用单独的环境变量。但我的代码确实需要.env 文件,而不是单独的环境变量。
      • 首先,你为什么要依赖.env文件?
      • 我相信一些googling 会很好回答。 As well "在与代码分开的环境中存储配置是基于The Twelve-Factor App methodology."。但一般是因为我有几十个环境变量。
      • 你误会了。我的意思是为什么你在部署中依赖.env。因为这仅用于开发目的。很抱歉。
      • 好吧.env 根本不只是为了开发。它适用于所有环境,并且特定于每个环境。任何部署都取决于构建或测试阶段,而这又取决于.env 的存在。所以.env 文件是任何应用程序的核心,至少对于 Node 或 PHP 而言。
      猜你喜欢
      • 2021-10-30
      • 2021-11-14
      • 2021-05-20
      • 2021-07-10
      • 2021-12-10
      • 1970-01-01
      • 2022-01-10
      • 1970-01-01
      • 2022-08-13
      相关资源
      最近更新 更多