使用 repo 机密在 gh 操作中创建 .env 文件

Posted

技术标签:

【中文标题】使用 repo 机密在 gh 操作中创建 .env 文件【英文标题】:Create .env file in gh action using repo secrets 【发布时间】:2021-09-08 03:22:49 【问题描述】:

所以我在 github 存储库机密中有一个变量 prod_env_file,我将整个 .env 键和值存储到其中。我正在尝试在 gh 操作中生成一个 .env 以引入 prod_env_file。这是一个示例 .yml 代码:

env:
  PROD_ENV_FILE: $ secrets.PROD_ENV_FILE 
steps:
  - name: Configure Env
    run: |
      touch .env
      echo $PROD_ENV_FILE >> .env

但是,我的整个 prod_env_file 只是作为一个衬垫进入。访问 process.env.FIRST_ENV_VARIABLE 最终会包含 prod_env_file 的整个其余部分。有没有办法来解决这个问题?谢谢!

【问题讨论】:

你的意思是整个字符串都删除了换行符并连接到 .env 中?还是说只有PROD_ENV_FILE secret 的第一行被写入.env? 【参考方案1】:

您需要确定环境变量的拆分方式。

如果它们被空格分开,像这样:

SECRET1=1 SECRET2=2 SECRET3=3

您可以使用tr 命令简单地将空格替换为新行:

echo "SECRET1=1 SECRET2=2 SECRET3=3" | tr " " "\n" >> .env

在您的 Github Actions 工作流程中:

echo $PROD_ENV_FILE | tr " " "\n" >> .env

这会将.env 文件保存为:

SECRET1=1
SECRET2=2
SECRET3=3

【讨论】:

以上是关于使用 repo 机密在 gh 操作中创建 .env 文件的主要内容,如果未能解决你的问题,请参考以下文章

使用 Github 操作将 .env 机密添加到在 Firebase 托管上部署的 Nuxt 应用程序

如何使用python代码在存储库中创建发布

初试GH-OST(转)

maven-release-plugin 可以在两个远程存储库中创建标签吗?

如何在 GitHub Action 中使用 GitHub cli (gh) 向 Github 进行身份验证并创建 PR?

sh 来自env文件的Docker机密