2017-12-11 13 views
0

私はGitLab CI/CD(EDIT:v10.2.2)を使用しています。GitLab CI/CDビルド/パイプラインは2回ではなく1回だけ起動されました

私は自分のプロジェクトに2つの支店を持っている:develtesting

の両方が保護されています。

develがデフォルトブランチです。

ワークフローは:develを押してから、develをマージリクエストによってtestingにマージします。

はここにある私の.gitlab-ci.yml V1:私はdevelに修正を押すと

docker_build:                                                      
     stage: build                                                     
     only:                                                       
      - devel                                                    
     script:                                                      
      - docker build -t gitlab.mydomain.com:4567/myproject/app:debug1 .                                       
      - docker login -u="$DOCKER_LOGIN" -p="$DOCKER_PWD" gitlab.mydomain.com:4567                                    
      - docker push gitlab.mydomain.com:4567/myproject/app:debug1 

、スクリプトが実行されると、ビルドが行われます。完璧。ブランチtesting

今、同じことは、ここにある私の.gitlab-ci.yml V2:

docker_build:                                                      
     stage: build                                                     
     only:                                                       
      - testing                                                    
     script:                                                      
      - docker build -t gitlab.mydomain.com:4567/myproject/app:debug2 .                                       
      - docker login -u="$DOCKER_LOGIN" -p="$DOCKER_PWD" gitlab.mydomain.com:4567                                    
      - docker push gitlab.mydomain.com:4567/myproject/app:debug2 

私はtesting上で直接変更をプッシュ

、同じことが testingブランチを使用して行われます。 ただし、develを押してからtestingのパイプライン(testingのみ)がトリガーされてから、にマージすると、になります。

docker_build:                                                      
     stage: build                                                     
     only:                                                       
      - devel                                                    
     script:                                                      
      - docker build -t gitlab.mydomain.com:4567/myproject/app:debug1 .                                       
      - docker login -u="$DOCKER_LOGIN" -p="$DOCKER_PWD" gitlab.mydomain.com:4567                                    
      - docker push gitlab.mydomain.com:4567/myproject/app:debug1 


docker_build:                                                      
     stage: build                                                     
     only:                                                       
      - testing                                                    
     script:                                                      
      - docker build -t gitlab.mydomain.com:4567/myproject/app:debug2 .                                       
      - docker login -u="$DOCKER_LOGIN" -p="$DOCKER_PWD" gitlab.mydomain.com:4567                                    
      - docker push gitlab.mydomain.com:4567/myproject/app:debug2 

私の期待がだった:私はdevelに押すと、[作成/ develからのマージ要求を受け入れる前の2つのバージョンの連結よりも何もありません今

.gitlab-ci.yml V3、 testingの場合は、develパイプラインをプッシュした直後に実行する必要があります。testingパイプラインは、マージ要求の受け入れ直後に実行する必要があります。

代わりにが発生します。プッシュ後にdevelパイプラインのみがトリガされます。 testingパイプラインは、マージ要求後には実行されません。

GitLabの仕組みが分からないと思っていますが、私の研究にもかかわらず何が分かりません。

ご協力いただきますようお願い申し上げます。どうもありがとうございました。

+1

gitlab-ciファイルがMRによって変更されていないことを確認しましたか?ベストプラクティスは、パイプラインの定義を1つしか持たず、ブランチに基づいて区別することです。さらに、MRで作業する場合、「テスト」パイプラインが2回トリガされます。一度MRが作成されると、コードを実際にマージする2回目です。 – secustor

答えて

1

https://docs.gitlab.com/ee/ci/yaml/#jobs状態:

Each job must have a unique name, ... 

あなたが同じ名前docker_buildを持つ2つのジョブを持っています。ちょうど彼らに別の名前をつけてください。

+0

それは、大変ありがとうございました!私はこのページを何度か読んだ。時には細部を覚えておくために、私はたくさんのドキュメントを読んでいると思います。 – cluxter

関連する問題