Php Github操作CI/CD工作流中的.env文件:如何在工作流中提供这些文件

Php Github操作CI/CD工作流中的.env文件:如何在工作流中提供这些文件,php,node.js,continuous-integration,environment-variables,github-actions,Php,Node.js,Continuous Integration,Environment Variables,Github Actions,我将Github操作工作流用于节点和PHP项目的CI/CD流程 在工作流中,我将存储库克隆到Github Actions runner虚拟机中。然后,为了在工作流中运行测试,我必须在克隆的存储库中有.env文件 问题是我的.env文件不是存储库的一部分(这是一种不公平的做法) 为了解决这个问题,我使用了我认为的一个解决方案:设置 MyOpjPurraseNave GITHUB ActhServer变量,手动放置我的 .Env>代码>文件,然后在我的工作流程中用Linux控制台回声“${{Orth

我将Github操作工作流用于节点和PHP项目的CI/CD流程

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

问题是我的
.env
文件不是存储库的一部分(这是一种不公平的做法)

为了解决这个问题,我使用了我认为的一个解决方案:设置<代码> MyOpjPurraseNave GITHUB ActhServer变量,手动放置我的<代码> .Env>代码>文件,然后在我的工作流程中用Linux控制台<代码>回声“${{Orthy.MyjPrimeStEnv}}},动态创建<代码> .Env<代码>文件。这很有效


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

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

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

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

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

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

我知道有3种方法可以做到这一点。一年后,我在另一个问题中提出了我自己的问题。你看

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

  • 您将
    .env
    文件保存在存储库中。用于将文件读入工作流

  • 您将文件保留在存储库之外。然后您有两种获取
    .env
    变量的方法:

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

    2.2。使用GitHub Actions API:在您的机器上编写NodeJS脚本(您可能会使用Webpack、Gulp或类似的节点工具,以便安装节点)

    脚本应读取本地
    .env
    文件,并将其内容写入GH机密。当然,您可以使用项目中使用的任何语言编写console命令来完成此操作


  • 很简单:)

    是的,我知道我可以通过YAML文件上的工作流配置使用单独的环境变量。但是我的代码确实需要
    .env
    文件,而不是单独的env变量。首先,你为什么依赖
    .env
    文件?我相信一些答案会很好。“在独立于代码的环境中存储配置是基于。”。但一般来说,因为我有几十个环境变量,你错了。我的意思是,为什么在部署中依赖
    .env
    。因为这只是为了发展目的。很抱歉。嗯,
    .env
    根本不仅仅用于开发。它适用于所有环境,并针对每个环境而特定。任何部署都取决于构建或测试阶段,而构建或测试阶段又取决于
    .env
    的存在。所以
    .env
    文件是任何应用程序的核心,至少对于Node或PHP是如此。