2016-07-24 34 views
1

Ich benutze Gitlab Runner und funktioniert gut für einen einzigen Server. Der Gitlab-ci.yml ist einfach:GitlabCi Bereitstellung auf mehreren Servern

stages: 
    - test 
    - deploy 

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

Wie ich sagte, dies für einen einzelnen Server in Ordnung ist, aber gleiche Anwendung auf einem anderen Server zu implementieren? Ich habe versucht mit der gleichen gitlab-runner config (selbe conf.toml), aber dann wurde nur eine von ihnen zufällig aktualisiert.

Gibt es irgendwie gitlab Ci, um von mehr als 1 Läufer ausgelöst zu werden und alle von ihnen entsprechend gitlab-ci.yml einzusetzen?

Antwort

1

Ja, es ist, gerade eingerichtet haben zwei Arbeitsplätze für die gleiche Stufe:

stages: 
    - deploy 

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

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

Bei Bedarf können Sie tags auf Ihrem Läufer können wählen, welche zu benutzen.

1

Sie können mehrere Läufer registrieren (z getaggt serverA und serverB) von verschiedenen Servern und mehrere Bereitstellungsaufträge, die jeweils von einem anderen Läufer durchgeführt. Dies liegt daran, dass Sie mehr als ein Tag in einem Job festlegen können und nur ein Runner mit allen Tags verwendet wird.

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 

jedoch berücksichtigen, eine Situation, wenn einer der Deployment-Jobs ausfällt - das würde am Ende in Sie auf den Servern zwei verschiedene Versionen des Codes haben. Je nach Situation kann dies ein Problem sein oder auch nicht.

+0

ja auch das könnte ein Problem sein, wenn Sie automatische Skalierung verwenden und Sie nicht wissen, wie viele Server Sie haben und ihre Informationen –

+1

Wenn es ein Problem ist, dann sollten Sie dies vermeiden. Haben Sie nur einen Bereitstellungsauftrag und verwenden Sie ein Tool, das die Bereitstellung auf mehreren Servern durchführt. – tmt