GitLab CI / CD限制或更好的解决方案?

时间:2017-12-12 13:56:17

标签: gitlab gitlab-ci

这个问题更具信息性:我有一个项目通过Django,Gunicorn,Supervisor,PostgreSQL数据库,Redis缓存,nginx进行存储以及其他一些项目。

问题是,可以使用CI / CD运行此工具,但可以在容器外部(Docker,e.t.c)运行。就像Gitlab在生产分支(受保护)上获得推送/合并请求一样,更新代码并且如果未启动此工具,则启动它们。已经启动的工具可以获得检查配置的命令,像Django这样的工具有热点重新加载,不需要通过终止进程来重新启动。

喜欢,有没有办法做到这一点?可能是使用shell脚本或其他东西来复制代码? Gitlab和项目在同一台机器上运行(目前手动,站点位于site_url.com,gitlab位于git.site_url.com)。

因为在标准方式容器中只能运行测试,而我会以任何自动方式查看更新代码。

或者我应该使用其他工具,那么不可能自动完成这个过程吗?

如果您知道任何指南,请将其链接。

注意:使用Gitlab是因为有几个人为代码做出了贡献。

1 个答案:

答案 0 :(得分:1)

您可以使用目标计算机上安装的executor type 'Shell'的Gitlab Runner来完成所有操作。

或者你可以使用'SSH' executor,你可以在另一台机器上安装跑步者并连接到你的目标机器。

在您的工作中,您可以使用命令,就好像您在SSH中进入目标计算机一样:

variables:
  GIT_STRATEGY: none

stages:
  - update-code
  - restart-services

update-code:
  stage: update-code
  script: 
    - cd /mydir
    - git pull

reload-nginx:
  stage: restart-services
  script: 
    - service nginx reload

restart-redis
  stage: restart-services
  script:
    - service redis restart

This section对于要选择的执行者有一些指示。您希望自动执行手动任务,因此我的建议是使用SSH或Shell,如果您想要一个干净且可重现的测试环境,请使用Docker或Kubernetes执行程序。

使用variables: GIT_STRATEGY: none可确保您的跑步者不会首先克隆您的回购以运行测试等(这是正常' CI设置中的默认行为)。