【发布时间】:2022-08-05 10:06:04
【问题描述】:
我的源代码库托管在 GitHub 上,我想知道如何实现 CI/CD github 操作管道,以测试、构建 MERN 应用程序并将其部署到 DigitalOcean。我在根目录中有 admin_frontend、user_frontend、backend 文件夹。
如果我推送到 master 分支,我想要实现的目标是运行 CI/CD 工作流,这样:
- 构建应用程序(2 个前端的生产反应构建)
- 运行测试(我在 1 个前端应用程序中只有一些 Jest 测试用例)
- 部署到我的数字海洋水滴
我不知道如何解决这个问题,因为我的 github 存储库中不仅有 1 个前端应用程序,而且还有 2 个前端和 1 个后端应用程序。如果您有该结构的任何工作流模板,请知道如何执行此操作,我很感激。
我需要在根目录中创建一个 .github/workflows/main.yml 还是在所有应用程序中创建 3 个?
目前,我可以通过运行以下脚本将 3 个应用程序部署到我的 Digitalocean droplet:
#build admin frontend
docker build -t admin-fe ./admin_frontend_app
docker save -o ./admin-fe.tar admin-fe
#build backend and frontend
docker build -t main-be ./backend & docker build -t main-fe ./frontend
docker save -o ./main-be.tar main-be & docker save -o ./main-fe.tar main-fe
#deploy services
ssh root@IPADDRESS \"pwd && mkdir -p ~/apps/mern && cd ~/apps/mern && ls -al && echo \'im in\' && rm admin-fe.tar && rm main-be.tar && rm main-fe.tar &> /dev/null\"
#upload admin-fe.tar to VM via ssh
scp ./admin-fe.tar root@IPADDRESS:~/apps/mern/
#upload main-be.tar and main-fe.tar to VM via ssh
scp ./main-be.tar ./main-fe.tar root@IPADDRESS:~/apps/mern/
ssh root@IPADDRESS \"cd ~/apps/mern && ls -1 *.tar | xargs --no-run-if-empty -L 1 docker load -i\"
#sudo docker compose up
ssh root@IPADDRESS \"cd ~/apps/mern && sudo docker-compose up\"
标签: docker continuous-integration github-actions digital-ocean cicd