我将Github Actions工作流用于Node和PHP项目的CI / CD流程。
在工作流程中,我将存储库克隆到Github Actions运行程序虚拟机中。然后,为了在工作流中运行测试,我必须在克隆的存储库中拥有.env
文件。
问题是我的.env
文件不是存储库的一部分(这是无所不在的做法)。
要解决该问题,请使用我认为的解决方法:设置MY_PROJECT_ENV
Github Action sercret变量,在其中手动放置.env
文件的内容,然后动态创建.env
Linux控制台echo "${{ secrets.MY_PROJECT_ENV}}" > .env
在我的工作流程中添加文件。这行得通。
但是我想知道还有其他方法可以为Github Actions工作流提供.env
文件吗?
答案 0 :(得分:2)
您知道.env
并不意味着要推送到远程存储库。
您需要以某种方式将环境变量添加到运行程序的计算机中。
根据您的情况,可以使用以下.yaml
文件添加环境变量
steps:
- name: Hello Program
run: Hello $FIRST_NAME $LAST_NAME!
env:
FIRST_NAME: Akhil
LAST_NAME: Pentamsetti
有关更多信息,请访问github official doc有关使用环境变量的信息。
答案 1 :(得分:0)
我知道有 3 种方法可以做到这一点。一年后,我在另一个问题中将 answer 放在我自己的问题中。看那里。
为了 SO 规则和可查找性,我在这里做了一个总结。
您将 .env
文件保存在存储库中。使用 dotenv actions 将您的文件读入工作流程。
您将文件保留在存储库之外。那么您有两种获取 .env
变量的方法:
2.1.正如我在上面的问题中所写,手动将文件内容复制到 GitHub 操作秘密变量,然后在您的工作流程中从该变量创建 .env
文件。
2.2.使用 GitHub Actions API to create/update the secrets:在您的机器上编写 NodeJS 脚本(您可能会使用 Webpack、Gulp 或类似 Node 的东西,以便安装 Node)。
脚本应读取本地 .env
文件并将其内容写入 GH 机密。当然,您可以使用您在项目中使用的任何语言编写控制台命令来执行此操作。
就这么简单:)