2017-12-11 37 views
0

GitLab CI/CD (EDIT : v10.2.2)를 사용하고 있습니다.GitLab CI/CD 빌드/파이프 라인은 두 번이 아니라 한 번만 실행됩니다.

내 프로젝트에 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 분기를 사용하여 발생합니다. 여기 testing의 파이프 라인 (testing에만 해당하므로 한 번만)도 devel을 누른 다음 testing에 병합합니다. 이는입니다. 앞의 두 버전의 연결보다는 다른 아무것도 없다

이제 .gitlab-ci.yml V3 :

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에서 병합 요청을 수락 testing이면 devel 파이프 라인은 내 푸시 바로 실행해야하며 testing 파이프 라인은 내 병합 요청 승인 후에 바로 실행해야합니다.

대신 여기이 발생합니다. 푸시 후 devel 파이프 라인 만 트리거됩니다. 병합 요청 후 testing 파이프 라인이 실행되지 않습니다.

내가 GitLab의 작동 방식에 대해 놓친 것 같지만 내 연구에도 불구하고 무엇을 알아낼 수 없습니다.

도움이 될 것입니다. 고맙습니다.

+1

MR에서 gitlab-ci 파일을 변경하지 않았습니까? 가장 좋은 방법은 'only'키워드와 같이 파이프 라인에 대한 정의를 하나 만들고 분기를 기준으로 차별화하는 것입니다. 더 나아가서 MR을 가지고 일한다면 'testing'파이프 라인이 두 번 트리거 될 것입니다.MR이 생성 될 때 한 번, 실제로 코드를 병합 할 때 두 번째입니다. – secustor

답변

1

https://docs.gitlab.com/ee/ci/yaml/#jobs 상태 :

Each job must have a unique name, ... 

동일한 이름 docker_build 두 개의 작업을해야합니다. 그냥 다른 이름을 지정하십시오.

+0

그 것이 었습니다, 정말로 고마워요! 나는이 페이지를 여러 번 읽었다. 가끔씩 모든 세부 사항을 기억하기 위해 _ 많은 문서를 읽었을 것 같습니다. – cluxter