需要有关gitLab-runner的建议以进行连续部署

时间:2019-03-13 14:25:05

标签: gitlab gitlab-ci-runner

我一直在研究使用gitLabrunner将代码提交到staging和master分支时自动将我的代码推送到staging和prod环境,但是我对如何使用gitlabRunner实现这一点感到困惑。 / p>

这是我的情况:

  • 项目:Drupal网站。 Gitlab用于存储除 设置和站点/默认/文件文件夹(其中所有图像和 用户上传的文档已存储。)

  • Gitlab CE和gitLab-runner安装在本地,它们具有访问权限 到我的产品服务器,但没有其他方法。

  • 由于我们是一个非常小的网络团队,因此我不打算使用 目前是自动测试,测试是手动的。我计划实施 将来有时间的时候。

  • 这是我们已经准备好的工作流程:在功能分支中开发 本地>测试功能>合并功能到暂存分支>部署 登台服务器上的登台分支>测试>合并到主服务器>部署到 生产服务器

这是我的主要问题:

  1. 我在gitlabRunner上看到的所有示例都在使用docker executor。由于我没有运行自动化测试,因此我真的需要让跑步者运行一个容器然后部署到产品中吗?我当时以为使用Shell或ssh executer最有可能解决问题,但我找不到这种情况的具体示例。

  2. 正确的方法是什么:让gitlab-runner使用“推送部署”,在这里我将statgng和prod环境设置为远程存储库,并执行git push到这些存储库,或者运行程序执行rsync命令同步文件?

  3. 一旦部署了代码,如果我的站点结构或配置需要更新,是否应该使用git钩子执行后脚本(如编译sass文件)并运行sql脚本来更新数据库?还是应该由跑步者使用ssh执行这些操作?

可以帮助我更好地理解所有机制的其他问题:

  1. 在推送或使用rsync进行部署之前,运行程序是在本地获取gitLab存储库还是将文件字符串从gitLab复制到目标环境?

  2. DevOps工作流程的CI部分是否主要将docker executor用于运行自动化测试?再次,跑步者是否将运行docker容器,从该容器中的gitlab中提取文件,然后从该容器内将文件部署到目标环境?

  3. 在两种情况下,当将代码推送到目标环境时,我如何确保文件具有正确的所有者/组/权限,尤其是如果此操作是在没有用户和组与我在暂存和生产中所拥有的用户和组相同?

对不起,很长的帖子,我们将不胜感激!

1 个答案:

答案 0 :(得分:0)

只需回答您的问题:

1- Docker executor是最佳实践,从理论上讲,您可以在构建之间保持环境的清洁,并且不需要从主机上安装和删除文件。实际上,gitlab维护容器以缩短构建时间。我更喜欢使用docker,您可以打包所有依赖项以在其上构建。

4- GitLab在运行程序上本地获取存储库,您可以在构建日志控制台上查看更多详细信息。

5-是的。我没有得到部署的意思。 gitlab运行程序将使用在本地文件夹中获取的代码启动一个容器。仅当您添加Shell命令来执行此任务时,才会进行部署。

6-我想它保留了权限,但是最好在构建执行时检查它,并在目标服务器上检查权限是否正确。

我不了解您的部署过程。您是否传输文件以执行? 我建议将其打包在docker映像上并运行它。然后,您将在分期和生产上拥有相同的环境。