有没有办法用github操作生成env文件并将其直接传递给docker和/或elastic beanstalk?

问题描述 投票:0回答:1

我正在寻找一种创建/生成 env 文件的方法,以便 Docker Cloud Build 或 AWS Elastic Beanstalk(通过 CodePipeline)可以在生成 env 文件的 github 操作之后直接从存储库中提取它们。

我知道大多数(如果不是全部)托管服务器都有自己的管理环境变量的方式,但我试图弄清楚是否有一种方法可以在将其推送到 AWS CodePipeline 或 Docker Cloud Build 之前通过 github 操作生成它,所以更改配置时只有一个文件需要修改。

我发现出于安全目的,最好在服务器上手动设置环境变量,但我的目标主要是测试服务器和供个人使用的自托管服务器(docker),因此安全性并不当务之急;但与此同时,我正在探索通过 github 操作(或其他方式,如果有可以支持 Docker 和 AWS 的不同选项)生成它,而不是将 .env 文件直接推送到存储库。

我在 .github/workflows/generate-env.yml 下有一个 github 操作

name: generate-env

on:
  push:
    branches:
      - "test"

jobs:
  generate_env:
    runs-on: ubuntu-22.04
    steps:
      - name: Generate env file
        run: |
          touch .env
          echo "${{ vars.APP_ENV }}" >> .env
          cat .env

它正确生成并显示 .env 内容,但 Docker 和 CodePipeline 无法拉取它

期待建议

laravel docker deployment amazon-elastic-beanstalk .env
1个回答
0
投票

是的,这是可能的。上面的代码就可以了。

name: Send .env file to production sever

on:
  workflow_dispatch:

jobs:
  deploy:
    runs-on: ubuntu-latest

    steps:
      - name: Checkout repository
        uses: actions/checkout@v2

      - name: Install SSH key
        uses: webfactory/[email protected]
        with:
          ssh-private-key: ${{ secrets.PRODUCTION_PRIVATE_KEY }}

      - name: Create a .env file
        env:
          ENV_FILE: ${{ secrets.ENV_FILE }}
        run: |
          echo "$ENV_FILE" > .env

      - name: Transfer .env file to production server
        run: scp -o StrictHostKeyChecking=no .env ${{ secrets.PRODUCTION_SERVER_USERNAME }}@${{ secrets.PRODUCTION_SERVER_DOMAIN }}:/path/to/project/folder/
        env:
          SSH_PRIVATE_KEY: ${{ secrets.PRODUCTION_PRIVATE_KEY }}

步骤“创建 .env 文件”将秘密 ENV_FILE 的值分配给环境变量 ENV_FILE,然后将该值回显到 .env 文件中。

下一步使用

scp
将 .env 文件发送到远程服务器。

使用的变量具有不言自明的名称。它们必须先添加到您的 Github 存储库设置中:

settings > secrets and variables > actions
© www.soinside.com 2019 - 2024. All rights reserved.