【问题标题】:github actions multiple dotenv filesgithub 操作多个 dotenv 文件
【发布时间】:2020-12-02 16:31:03
【问题描述】:

我一直在努力写这个,所以请多多包涵。我会尽量说清楚: 设置:

  • 具有 3 个分支的 Github 存储库(Master/Development/Staging)
  • 每个分支都有一个唯一的 dotenv 文件
  • Repo 有 VueJS 代码(但也可以是 laravel)

现在,使用 GitHub Actions,我们根据分支部署到不同的域。

我无法解决的是如何最好地处理不同的 dotenv 文件。在构建期间,dotenv 用于构建最终产品。理想情况下,出于显而易见的原因,我想将尽可能多的 env 文件内容保留在 GitHub Secret 中,但我不确定这是否可行。另一种选择是基于分支拥有 3 个 dotenv 文件,但这只会增加使它们保持同步的复杂性和混乱。

处理此问题的最佳方法是什么,以便每次部署都能在 dotenv 文件中获得正确的设置?

【问题讨论】:

  • 您是否考虑过按照Limits for secrets 对整个dotenv 文件进行加密并在工作流程中使用秘密对其进行解密?
  • @BenjaminW 天哪,你摇滚!!你能把它变成官方答案吗,这样我就可以投票了……这太完美了!!!
  • 这似乎是一个奇怪的场景,.env 文件通常不应该提交到存储库,它们应该存在并在每个环境中单独管理。您说过“在构建期间,dotenv 用于构建最终产品。”因此,也许您对此有一些很好的用例。请问是什么?
  • 是的,所以在 git commit 上,Github Actions 运行命令来构建应用程序/站点,并在完成后将其部署到其位置(在本例中为 S3 静态网站托管)。所以使用上面提到的系统,我可以把它排除在 repo 之外,并使用 env 文件来部署/提供代码。

标签: laravel vue.js github github-actions phpdotenv


【解决方案1】:

免责声明:我不知道 dotenv 的最佳实践。

如果您的密钥大于允许的 64 KB,您可以按照Limits for secrets 的说明进行操作,大致如下:

  • 加密你的秘密:

    gpg --symmetric --cipher-algo AES256 .env
    
  • 将密码存储为秘密,例如LARGE_SECRET_PASSPHRASE

  • 将加密文件添加到存储库,例如.env.gpg

  • 要在工作流中解密,请运行类似

    run: |
      gpg --quiet --batch --yes --decrypt \
          --passphrase=${{ secrets.LARGE_SECRET_PASSPHRASE }} \
          --output .env .env.gpg
    

【讨论】:

    猜你喜欢
    • 2021-11-19
    • 2020-05-05
    • 2020-03-10
    • 2015-04-27
    • 2021-10-24
    • 1970-01-01
    • 2014-08-31
    • 2022-10-26
    • 2021-04-09
    相关资源
    最近更新 更多