Gitlab-Runner 部署到多台服务器

Mic*_*ben 2 gitlab-ci gitlab-ci-runner

我得到了以下环境和设置:

  • 3 个负载平衡的生产服务器和
  • 一台开发服务器
  • 到我的开发服务器的工作自动部署
    • 一个 gitlab-runner 通过 ssh 连接到我的开发服务器并拉出开发分支
    • gitlab-ci.yml 仅限于我的开发分支

我怎样才能实现:

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

这个问题是基于我当前的设置,出现了以下问题

  • 我可以让 gitlab-runner 仅在本地运行(也不能在 docker 容器中运行,因为我还没有安装),这样它就可以由 gitlab-ci.yml 在分支上有所不同并部署到特定服务器或
  • 我可以安装多个仅在特定分支上执行操作的 gitlab-runner 吗?

或者有其他解决方案可以让我实现我的计划吗?

Ste*_*tel 6

“我可以让 gitlab-runner 仅在本地运行(也不能在 docker 容器中运行,因为我还没有安装),这样它就可以由 gitlab-ci.yml 在分支上有所不同并部署到特定服务器”

是的,将本地运行程序注册为您要部署到的计算机上的Shell 执行程序的特定运行程序,以便它们可以运行本地命令,就像您现在使用 SSH 一样,并且只有您的特定项目可以使用它们。然后看看关于标签的下一个子答案。

“我可以安装多个仅在特定分支上执行操作的 gitlab-runner 吗?”

使用标签将某些作业固定到运行程序(例如您的部署作业),或者使用onlyexcept将作业固定到分支或标签。(例如您的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
Run Code Online (Sandbox Code Playgroud)