Gitlab-Runner部署到多个服务器

时间:2017-11-23 14:30:00

标签: gitlab-ci gitlab-ci-runner

我有以下环境和设置:

  • 3个负载均衡的生产服务器和
  • 一个开发服务器
  • 使用的自动部署到我的开发服务器
    • 一个gitlab-runner,它通过ssh连接到我的开发服务器并拉动开发分支和
    • gitlab-ci.yml,仅限于我的dev-branch

我如何实现:

  • 如果我进入我的开发分支
  • ,则进一步自动部署到我的开发服务器
  • 如果我进入我的主分支
  • ,则自动部署到我的3台生产服务器

问题是基于我当前的设置,其中出现以下问题

  • 我可以让gitlab-runner在本地运行(也不是在docker容器中运行,因为我已经安装了一个),所以它只需要gitlab-ci.yml在分支上有所不同并部署到特定服务器或
  • 我可以安装多个gitlab-runner,它们只针对特定的分支机构进行了解决吗?

还是有另一种解决方案让我实现我的计划吗?

1 个答案:

答案 0 :(得分:2)

  

"我可以让gitlab-runner在本地运行(也不是在docker容器中运行因为我没有安装一个)所以它只是在   gitlab-ci.yml在分支上有所不同并部署到特定的   服务器"

是的,在您要部署的计算机上将specific runnersShell executors注册为tags,这样他们就可以像现在使用SSH一样运行本地命令,只有您的特定项目可以使用它们。然后看看关于tags的下一个子答案。

  

"我可以安装多个gitlab-runner,它们只针对特定的分支机构进行了解决吗?"

使用only or except将某些作业固定到跑步者(例如您的部署作业)或使用purifycss-webpack将作业固定到分支机构或  标签。 (例如,您的deploy_prod作业仅在master分支上运行)

示例.gitlab-ci.yml文件(摘要):

deploy-dev:
  tags: 
    - dev-runner
  only: 
    - dev-branch
  script:
    - cd mydir
    - git pull

deploy-prod:
  tags: 
    - prod-runner
  only: 
    - master
  script:
    - cd mydir
    - git pull