2016-07-24 8 views
1

私はGitlabランナーを使用し、単一のサーバーで正常に動作します。 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 config(同じconf.toml)を試しましたが、そのうち1つだけをランダムに更新していました。

何とかgitlab Ciが1つ以上のランナーによってトリガーされ、gitlab-ci.ymlに従ってそれらのすべてをデプロイするようになっていますか?

答えて

1

はいちょうど同じステージのための2つのジョブ設定し、そこにある:あなたが使用するかを選択するためにあなたのランナーにtagsを使用することができ、必要な場合は

stages: 
    - deploy 

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

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

を。

1

あなたは別のランナーが実行するそれらのそれぞれ、異なるサーバから複数のランナーを(例えばサーバAサーバBをタグ付け)を登録し、複数の展開ジョブを持つことができます。これは、ジョブ内に複数のタグを設定でき、すべてのタグを持つランナーのみが使用されるためです。

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 

ただし、展開ジョブの1つが失敗した場合を考慮してください。これにより、サーバー上に2つの異なるバージョンのコードが存在することになります。あなたの状況に応じて、これは問題になるかもしれません。

+0

また、これは自動スケーリングを使用している場合に問題となる可能性があります。サーバー数とその情報を把握していません –

+1

問題がある場合は、これを避ける必要があります。 1つの配備ジョブだけを持ち、配備を複数のサーバーに行うツールを使用します。 – tmt

関連する問題