GitLab CI/CD (EDIT : v10.2.2)를 사용하고 있습니다.GitLab CI/CD 빌드/파이프 라인은 두 번이 아니라 한 번만 실행됩니다.
내 프로젝트에 2 가지를 가지고 : devel
및 testing
모두 보호됩니다.
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의 작동 방식에 대해 놓친 것 같지만 내 연구에도 불구하고 무엇을 알아낼 수 없습니다.
도움이 될 것입니다. 고맙습니다.
MR에서 gitlab-ci 파일을 변경하지 않았습니까? 가장 좋은 방법은 'only'키워드와 같이 파이프 라인에 대한 정의를 하나 만들고 분기를 기준으로 차별화하는 것입니다. 더 나아가서 MR을 가지고 일한다면 'testing'파이프 라인이 두 번 트리거 될 것입니다.MR이 생성 될 때 한 번, 실제로 코드를 병합 할 때 두 번째입니다. – secustor