2016-07-24 350 views
1

我使用Gitlab runner,并且适用于单个服务器。该gitlab-ci.yml很简单:GitlabCi部署在多台服务器上

stages: 
    - test 
    - deploy 

test: 
    stage: test 
    image: php 
    tags: 
     - docker 
    script: 
     - echo "Run tests..." 
deploy: 
    stage: deploy 
    tags: 
     - shell 
    script: 
     - sh deploy.sh 

正如我所说的,这是好的单个服务器,但到另一台服务器上部署相同的应用程序?我尝试使用相同的gitlab-runner配置(同conf.toml),但它只是随机更新其中一个。

是否有某种方式gitlab Ci被超过1个亚军触发并根据gitlab-ci.yml部署它们?

回答

1

是的,有,刚刚成立的同台两份工作:

stages: 
    - deploy 

deploy:one: 
    stage: deploy 
    script: 
    - echo "Hello CI one" 

deploy:two: 
    stage: deploy 
    script: 
    - echo "Hello CI two" 

如果有必要,你可以使用你的跑步tags来选择使用哪一个。

1

你可以注册几个衙役(例如标记serverA的serverB上)从不同的服务器和拥有多个部署作业,他们每个人用不同的热流道进行。这是因为您可以在作业中设置多个标签,并且只有具有所有标签的亚军将被使用。

stages: 
    - test 
    - deploy 

test: 
    stage: test 
    image: php 
    tags: 
     - docker 
    script: 
     - echo "Run tests..." 

deployA: 
    stage: deploy 
    tags: 
     - shell 
     - serverA 
    script: 
     - sh deploy.sh 

deployB: 
    stage: deploy 
    tags: 
     - shell 
     - serverB 
    script: 
     - sh deploy.sh 

但是,考虑到其中一个部署作业失败的情况 - 这最终会导致您在服务器上有两个不同版本的代码。根据您的情况,这可能会或可能不会成为问题。

+0

是的,这也可能是一个问题,如果你使用自动缩放,你不知道你有多少服务器和他们的信息 –

+1

如果这是一个问题,那么你应该避免这一点。只有一个部署工作,并使用一个将部署到多个服务器的工具。 – tmt