2016-07-24 223 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