什么是最好的 gitlab-ci.yml CI/CD 实践和跑步者配置?
What are the best gitlab-ci.yml CI/CD practices and runners configs?
这有点理论化,但我会尽可能多地解释我的设置:
- 1 个服务器(实例),带有自托管的 gitlab
- 1 个用于开发的服务器(实例)
- 1 个用于生产的服务器(实例)
假设在我的 gitlab 中我有一个 ReactJs 项目并且我配置了我的 gitlab-ci.yml
如下:
job deploy_dev
推送到 dev
分支后,更新将使用 rsync
复制到 /var/www/html/${CI_PROJECT_NAME}
(作为部署到开发服务器)
接收作业的运行器 deploy_dev
是安装在我部署到的同一 dev
服务器上的共享运行器,它接收带有标签 reactjs
问题是:
如果我想部署到生产环境,我应该遵循什么最佳实践?
我设法提出了几个我想到的选项,但我不知道哪个是最佳做法(如果有的话)。这是我想出的:
修改 gitlab-ci.yml
添加作业 deploy_prod
具有相同的标签 reactjs
但脚本应该 rsync
与生产服务器的 /var/www/html/${CI_PROJECT_NAME}
使用 SSH?
在生产服务器上设置另一个运行器,让它接收带有标签 reactjs-prod
的作业,并修改 gitlab-ci.yml
使 deploy_prod
带有标签 reactjs-prod
?
除了上述2种,你还有更好的方法吗?
最后一题(相关):
安装我的跑步者的最佳地点在哪里?我正在做的事情(让我的跑步者在我的 dev
服务器上)真的可以吗?
如果您能向我解释(您会选择的)最佳方式,并说明利弊,我将不胜感激。
最佳做法是将 CI/CD 基础架构与托管应用的基础架构分开。
这样做是为了尽量减少可能导致您的应用程序或 运行 用户出现问题的变量数量。
当您在托管应用程序的同一台计算机上有一个 运行ner 时,请考虑以下情况:(即使 运行ner 和应用程序是 运行在单独的 Docker 容器中。底层机器仍然是单点故障。)
运行ner 执行CPU/RAM繁重的工作,占用了机器上的大部分资源。您的应用程序开始遇到性能问题。
Gitlab 运行ner 崩溃并使主机处于无法运行的状态。 (docker 恐慌或其他)。
您的正式版应用停止运行。
您的应用程序使主机停止运行(不管怎样。它可能会发生),您的 CI/CD 停止工作并且您无法将修复程序部署到生产中。
考虑拥有一台单独的 运行ner 机器(或机器。Gitlab 运行ner 可以水平扩展),用于 运行 你的部署作业到开发和生产服务器.
这有点理论化,但我会尽可能多地解释我的设置:
- 1 个服务器(实例),带有自托管的 gitlab
- 1 个用于开发的服务器(实例)
- 1 个用于生产的服务器(实例)
假设在我的 gitlab 中我有一个 ReactJs 项目并且我配置了我的 gitlab-ci.yml
如下:
job
deploy_dev
推送到dev
分支后,更新将使用rsync
复制到/var/www/html/${CI_PROJECT_NAME}
(作为部署到开发服务器)接收作业的运行器
deploy_dev
是安装在我部署到的同一dev
服务器上的共享运行器,它接收带有标签reactjs
问题是: 如果我想部署到生产环境,我应该遵循什么最佳实践?
我设法提出了几个我想到的选项,但我不知道哪个是最佳做法(如果有的话)。这是我想出的:
修改
gitlab-ci.yml
添加作业deploy_prod
具有相同的标签reactjs
但脚本应该rsync
与生产服务器的/var/www/html/${CI_PROJECT_NAME}
使用 SSH?在生产服务器上设置另一个运行器,让它接收带有标签
reactjs-prod
的作业,并修改gitlab-ci.yml
使deploy_prod
带有标签reactjs-prod
?除了上述2种,你还有更好的方法吗?
最后一题(相关):
安装我的跑步者的最佳地点在哪里?我正在做的事情(让我的跑步者在我的 dev
服务器上)真的可以吗?
如果您能向我解释(您会选择的)最佳方式,并说明利弊,我将不胜感激。
最佳做法是将 CI/CD 基础架构与托管应用的基础架构分开。 这样做是为了尽量减少可能导致您的应用程序或 运行 用户出现问题的变量数量。
当您在托管应用程序的同一台计算机上有一个 运行ner 时,请考虑以下情况:(即使 运行ner 和应用程序是 运行在单独的 Docker 容器中。底层机器仍然是单点故障。)
运行ner 执行CPU/RAM繁重的工作,占用了机器上的大部分资源。您的应用程序开始遇到性能问题。
Gitlab 运行ner 崩溃并使主机处于无法运行的状态。 (docker 恐慌或其他)。 您的正式版应用停止运行。
您的应用程序使主机停止运行(不管怎样。它可能会发生),您的 CI/CD 停止工作并且您无法将修复程序部署到生产中。
考虑拥有一台单独的 运行ner 机器(或机器。Gitlab 运行ner 可以水平扩展),用于 运行 你的部署作业到开发和生产服务器.