【问题标题】:How does one send .env files to a git submodule during pm2 deployment?在 pm2 部署期间如何将 .env 文件发送到 git 子模块?
【发布时间】:2020-07-19 06:33:03
【问题描述】:

TLDR:如何在pm2 部署过程中将.env 文件发送到子模块,同时避免来自gitfatal: destination path '/home/projects/client' already exists and is not an empty directory 错误消息?

我正在运行一个自动部署脚本,它使用 pm2 将一些 .env 文件从我的本地机器克隆到我的生产机器中。

以下脚本执行以下操作:

  1. .env 文件从我的本地计算机克隆到我的服务器和客户端的主机中

  2. 使用pm2部署项目

  3. 应该更新子模块***

  4. 为我的服务器安装依赖项并构建服务器

  5. 为我的前端(create-react-app)安装依赖项并构建前端

  6. 运行项目

    deploy: {
       production: {
         user: "harrison",
         host: hosts,
         key: "~/.ssh/id_rsa",
         ref: "origin/master",
         repo: process.env.GIT_REPO,
         path: process.env.PROJECT_PATH,
         "pre-deploy-local": `./deployEnvs.sh ${process.env.PROJECT_PATH} ${hostsBashArgs} && \
          ./deployClientEnvs.sh ${process.env.PROJECT_PATH} ${hostsBashArgs}`,
         "post-deploy": `source ~/.zshrc && \
          git submodule update --init --recursive && \
          yarn install --ignore-engines && \
          yarn prod:build && \
          cd client && \
          yarn install --ignore-engines && \
          yarn build && \
          cd ../ && \
          yarn prod:serve`,
       },
    

*** 我遇到的问题与下载子模块的脚本部分有关(其他一切正常)。 脚本告诉我客户端文件夹不为空(这是因为我需要在构建应用程序之前将.env 文件发送到客户端文件夹。

在更新子模块之后,我是否可以以某种方式将.env 文件发送到客户端文件夹?如何将 .env 文件从本地机器发送到子模块并避免“此目录不为空”消息?

为清楚起见,这是我的文件夹结构:

【问题讨论】:

    标签: node.js git deployment git-submodules pm2


    【解决方案1】:

    将这些 env 文件复制到远程服务器上的另一个目录中,然后让 post-deploy 操作在正确的时间获取它们(在子模块初始化之后)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-08-02
      • 2015-05-28
      • 1970-01-01
      • 2019-04-25
      • 1970-01-01
      • 1970-01-01
      • 2017-10-05
      • 2010-09-15
      相关资源
      最近更新 更多