2017-05-22 6 views
1

は、私はそうのようなパイプラインのセットアップとアプリがあります。この複数の手動、並列ジョブを設定するにはどうすればよいですか?

stages: 
    - test 
    - deploy 

test: 
    script: 
    - bash run_tests.sh 

deploy_staging: 
    stage: deploy 
    script: 
    - rsync -rltvz --delete -e ssh --exclude=.git* public/ [email protected]_node:/path/to/directory 
    environment: 
    name: staging 
    url: https://staging.app.example.com 
    only: 
    - master 

deploy_production: 
    stage: deploy 
    script: 
    - rsync -rltvz --delete -e ssh --exclude=.git* public/ [email protected]_node1:/path/to/directory 
    - rsync -rltvz --delete -e ssh --exclude=.git* public/ [email protected]_node2:/path/to/directory 
    environment: 
    name: production 
    url: https://app.example.com 
    when: manual 
    only: 
    - master 

よう.gitlab-ci.ymlファイルで

Figure A - 2 stage pipeline

を私がしたい別のアプリを持っています同様に展開するには、次のように並列ジョブを使用したい:

0123図A、 deploy_production

図B

Figure B - 3 stage pipeline

手動工程(例えば、ありますディレクトリを複数のサーバーノードにrsyncします)。図Bのdeploy_node1deploy_node2に展開すると、Gitlab UIを使用して手動でトリガされる単一のステップ(例:rsyncよりもはるかに時間がかかります)になります。

.gitlab-ci.ymlを構成して、手動で1回クリックするだけで、展開ジョブを並列に実行するにはどうすればよいですか。

更新(ヤクブカニアの答えへの応答):

はあなたが考えていたもののこの種、ヤクブますか?

トリガーを使用しようとするが、この.gitlab-ci.ymlに向けて私をリード:

stages: 
    - test 
    - stage 
    - deploy 

test: 
    script: 
    - bash run_tests.sh 

staging: 
    stage: stage 
    script: 
    - rsync -rltvz --delete -e ssh --exclude=.git* public/ [email protected]_node:/path/to/directory 
    environment: 
    name: staging 
    url: https://staging.app.example.com 
    only: 
    - master 
    except: 
    - triggers 

deploy_trigger: 
    stage: deploy 
    script: 
    - "curl -X POST -F token=TOKEN -F ref=master https://gitlab.example.com/api/v4/projects/1234/trigger/pipeline" 
    environment: 
    name: production 
    url: https://app.example.com 
    only: 
    - master 
    except: 
    - triggers 
    when: manual 

deploy_node1: 
    stage: deploy 
    script: 
    - rsync -rltvz --delete -e ssh --exclude=.git* public/ [email protected]_node1:/path/to/directory 
    environment: 
    name: production 
    url: https://app.example.com 
    only: 
    - master 
    - triggers 

deploy_node2: 
    stage: deploy 
    script: 
    - rsync -rltvz --delete -e ssh --exclude=.git* public/ [email protected]_node2:/path/to/directory 
    environment: 
    name: production 
    url: https://app.example.com 
    only: 
    - master 
    - triggers 

答えて

1

triggerを使用してください。実行タスクonlyを起動するように設定し、cURLを使用してトリガーを呼び出す手動のアクションにします。

+0

提案された新しい設定ファイルを使用して私の質問を更新しました。あなたが考えていた行に沿ったものですか? –

関連する問題