【发布时间】:2020-07-19 06:33:03
【问题描述】:
TLDR:如何在pm2 部署过程中将.env 文件发送到子模块,同时避免来自git 的fatal: destination path '/home/projects/client' already exists and is not an empty directory 错误消息?
我正在运行一个自动部署脚本,它使用 pm2 将一些 .env 文件从我的本地机器克隆到我的生产机器中。
以下脚本执行以下操作:
-
将
.env文件从我的本地计算机克隆到我的服务器和客户端的主机中 -
使用
pm2部署项目 -
应该更新子模块***
-
为我的服务器安装依赖项并构建服务器
-
为我的前端(create-react-app)安装依赖项并构建前端
-
运行项目
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