개발주기가 여러 동시 릴리스 분기를 유지합니다.빌드 전 병합 Jenkins git plugin 옵션이 트리거되지 않음
가능한 한 주기적으로 릴리스 분기에서 병합 충돌을 표시 할 수있는 확실한 방법을 원합니다.
젠킨스의 빌드 작업에서 릴리스 *를 빌드 할 분기로 지정하고 빌드 시작 전에 마스터에 "빌드 전 병합"옵션을 지정합니다.
여기 내 플러그인은 각 릴리스 분기의 빌드를 시작하기 전에 모두 개의 분기를 마스터로 찾습니다.
이것을 테스트하기 위해 더미 repo를 설정했습니다. repo에는 하나의 텍스트 파일이 있습니다. 3 가지가 있습니다
내가 의도적으로 병합 충돌을 만들 release1 및 release2의 파일에 같은 줄을 업데이트 (마스터에서 촬영) release2 (마스터에서 촬영)
마스터 (주) release1은 나는 존재를 확인했다.
이제 작업을 빌드 할 때 젠킨스가 릴리스 1과 릴리스 2를 마스터에 병합하여 병합 충돌이 발생하여 실패 할 것으로 예상합니다. 이는 우리가 원하는 것입니다.
그러나 Jenkins는 "빌드 전 병합"옵션이 설정되어 있음에도 불구하고이를 시도하지 않는 것처럼 보입니다.
Fetching upstream changes from [email protected]:xxxxxxx/test_repo.git
> git --version # timeout=10
> git fetch --tags --progress [email protected]:xxxxxxx/test_repo.git
+refs/heads/*:refs/remotes/origin/*
Seen branch in repository origin/master
Seen branch in repository origin/release1
Seen branch in repository origin/release2
Seen 3 remote branches
Checking out Revision 5b75c954f334a2fc6c683cd7304d4d84826f02cd
(origin/release2, origin/master)
> git config core.sparsecheckout # timeout=10
> git checkout -f 5b75c954f334a2fc6c683cd7304d4d84826f02cd
> git rev-list 5b75c954f334a2fc6c683cd7304d4d84826f02cd # timeout=10
> git rev-list 5b75c954f334a2fc6c683cd7304d4d84826f02cd # timeout=10
Set build name.
New build name is '#8 '
[build-sharknado-app] $ /bin/sh -xe /tmp/hudson1678313403112351764.sh
+ cat file.txt
x=7
작업이 성공하고 병합 충돌이 표시되지 않습니다.
왜 여러 릴리스의 마스터에 대한 분기가 일어나지 않습니까?
'git checkout -f 5b75c954f334a2fc6c683cd7304d4d84826f02cd' 특정 커밋이 체크 아웃되어 분리 된 HEAD 상태에 있습니다. 'master/master'는 '5b75c954f334a2fc6c683cd7304d4d84826f02cd'를 가리 키지 만'master '분기는 체크 아웃되지 않으므로 로컬에 존재하지 않습니다. 이것이 원인 일 수 있습니다. – ElpieKay
그게 문제인 것처럼 보이지만 커밋이 체크 아웃되는 이유를 모르겠습니다. "Branches to Build"옵션으로 "origin/release *"를 지정하고 있으며 이러한 분기가 존재합니다. 그러나 릴리스 2만이 빌드의 일부로 마스터에 병합됩니다. –