Jenkins가 지정된 태그를 작성하는 데 문제가 있습니다. 태그는 매개 변수화 된 빌드의 일부이지만 해당 태그를 빌드하기 위해 이것을 git 플러그인에 전달하는 방법을 모릅니다. 이것은 내 하루 중 3 시간이 걸렸고 스택 오버플로에서 마스터에게 패배를 인정했습니다.
Jenkins가 지정된 태그를 작성하는 데 문제가 있습니다. 태그는 매개 변수화 된 빌드의 일부이지만 해당 태그를 빌드하기 위해 이것을 git 플러그인에 전달하는 방법을 모릅니다. 이것은 내 하루 중 3 시간이 걸렸고 스택 오버플로에서 마스터에게 패배를 인정했습니다.
답변:
"빌드 할 분기"매개 변수를 사용하여이를 수행 할 수있었습니다.
Branch Specifier (blank for default): tags/[tag-name]
[태그 이름]을 태그 이름으로 바꿉니다.
HEAD
. git 플러그인의 논리는 내 저장소에서 항상 동일하지 않으므로 새 빌드가 항상 트리거 되는이 두 개정판을 비교하는 것 같습니다 .
Jenkins CI v.1.555, Git Client 플러그인 v.1.6.4 및 Git 플러그인 2.0.4를 사용하여 이러한 답변 중 어느 것도 나에게 충분하지 않았습니다.
특정 고정 (즉, 매개 변수화되지 않은) 태그 하나에 대해 하나의 Git 저장소를 구축하는 작업을 원했습니다. 나는 Thilo가 인용 한 "build a Git tag"블로그 게시물 과 함께 다양한 답변의 솔루션을 조합해야 했습니다 .
git push --tags
+refs/tags/*:refs/remotes/origin/tags/*
*/tags/<TAG_TO_BUILD>
( <TAG_TO_BUILD>
실제 태그 이름으로 대체 )를 입력합니다.나를 위해 Refspec을 추가하는 것이 중요하다는 것이 밝혀졌습니다. 비워두면 git 저장소가 기본적으로 모든 원격 정보를 가져 오는 것처럼 보였지만 그럼에도 불구하고 Git 플러그인은 내 태그를 완전히 찾지 못했습니다. Refspec 필드에서 "get the remote tags"를 명시 적으로 지정한 경우에만 Git 플러그인이 내 태그를 식별하고 빌드 할 수있었습니다.
업데이트 2014년 5월 7일는 : 불행하게도,이 솔루션은 젠킨스 CI (v.1.555)와 라 à 힘내 저장소 푸시 알림 메커니즘에 대한 바람직하지 않은 부작용으로 오는가 젠킨스에 은닉은 webhook 언제 : 어떤 저장소에 지점이 업데이트됩니다 푸시에서 태그 빌드 작업도 다시 실행됩니다. 이로 인해 동일한 태그 작업을 반복해서 불필요한 재 구축이 많이 발생합니다. "작업 영역을 사용하여 강제 폴링"옵션을 사용하거나 사용하지 않고 작업을 구성하려고 시도했지만 아무 효과가없는 것 같습니다. Jenkins가 태그 작업에 불필요한 빌드를 만드는 것을 방지 할 수있는 유일한 방법은 Refspec 필드를 지우는 것입니다 (즉, +refs/tags/*:refs/remotes/origin/tags/*
).
누구든지 더 우아한 해결책을 찾으면 업데이트 로이 답변을 편집하십시오. 예를 들어, refspec +refs/tags/<TAG TO BUILD>:refs/remotes/origin/tags/<TAG TO BUILD>
이 별표 가 아닌 특수한 경우라면 이런 일이 발생하지 않을 것이라고 생각 합니다. 그러나 지금은이 솔루션이 효과가 있으며 작업이 성공한 후 추가 Refspec을 제거하기 만하면됩니다.
+refs/heads/*:refs/remotes/origin/*
이제 +refs/heads/*:refs/remotes/origin/* +refs/tags/*:refs/remotes/origin/tags/*
. (저는 refspecs로 많이 작업하지 않았기 때문에이 필드가 공백으로 구분된다는 것을 배우기 위해 약간의 실험이 필요했습니다.)
Jenkins에게 Ref 이름으로 빌드하라고 말할 수 없습니까? 그렇다면 그것은
refs/tags/tag-name
Jenkins와 Hudson에 대해 내가 보는 모든 질문에서 TeamCity로 전환하는 것이 좋습니다. TeamCity가 작동하도록 구성 파일을 편집 할 필요가 없습니다.
git push --tags
Jenkins 파이프 라인을 사용 중이고 특정 태그 (예 : TAG
빌드 의 매개 변수) 를 체크 아웃하려는 경우 수행 할 수있는 작업은 다음과 같습니다.
stage('Checkout') {
steps {
checkout scm: [$class: 'GitSCM', userRemoteConfigs: [[url: 'YOUR_GIT_REPO_URL.git', credentialsId: 'YOUR_GIT_CREDENTIALS_ID' ]], branches: [[name: 'refs/tags/${TAG}']]], poll: false
}
}
최신 Jenkins (1.639 이상)에서는 다음을 수행 할 수 있습니다.
1.0.1
필드를 빌드 할 분기에 태그 버전 (예 :)을 지정했습니다 .
나는 이와 같은 일을했고 그것은 작동했습니다.
Source Code Management
Git
Repositories
Advance
Name: ref
Refspec : +refs/tags/*:refs/remotes/origin/tags/*
Branches to build
Branch Specifier (blank for 'any') : v0.9.5.2
Jenkins 로그는 태그에서 소스를 가져오고 있음을 확인했습니다.
버전 확인 0b4d6e810546663e931cccb45640583b596c24b9
(v0.9.5.2)
refspec
고급 버튼을 클릭하여 추가하는 것이 트릭이었습니다.
Advanced-> Refspec 필드를 refs/tags/[your tag name]
. 이것은 Refspec에 대한 다양한 다른 제안보다 간단 해 보이지만 저에게는 잘 작동했습니다.
업데이트 23 / 7 / 2014- 실제로 추가 테스트 후 예상대로 작동하지 않는 것으로 나타났습니다. HEAD 버전이 아직 체크 아웃중인 것 같습니다. 수락 된 답변으로이 작업을 취소하십시오. 이 스레드 (3 월 30 일) 에서 gotgenes 의 게시물을 따라 작업 솔루션을 얻었 습니다 . 내 작업이 SCM 폴링이 아닌 업스트림 작업에서 트리거되기 때문에 빌드의 불필요한 트리거링 게시물에서 언급 된 문제는 저에게 문제가되지 않았습니다.
업데이트 APR-2018- 이것은 한 사람에게 작동하며 Jenkins 문서에 동의한다는 의견에 유의하십시오.
refs/tags/<tagname>
Jenkins 문서에서 사용하는 것이 사용되어야 한다고 말하고 있으며 저에게 잘 작동 한다는 점에 주목하고 싶었 습니다. 아마도 플러그인 4 월 2018대로,이 ... 원래 게시물의 시점에서 버그가 있었지만 이다 정답.
refs/tags
접두사를 생략하고 <tagname>
. YMMV,하지만 ... 내 목적에 맞게 잘 작동합니다.
이 블로그 게시물에 자세히 설명 된 대로 Refspec 및 분기 지정자를 설정하여 Jenkins가 태그를 작성하도록 할 수있었습니다. .
또한 Refspec에서 참조 할 수 있도록 리포지토리 이름 (제 경우에는 "원본"으로)을 설정해야했습니다 (그렇지 않으면 임의로 생성 된 이름을 사용하게됩니다).
결국 내가 한 일은 :
jenkins-target
를 만들었고 젠킨스가jenkins-target
jenkins-target
브랜치 에서 태그를 생성하기 만하면됩니다.이것이 모든 사람에게 효과가 있을지 확신 할 수 없습니다. 제 프로젝트는 아주 작았고 태그와 물건이 너무 많지는 않았지만 쉽게 할 수 있습니다. refspecs와 매개 변수 및 물건을 엉망으로 만들 필요가 없습니다 :-)
Jenkins에서 "Build with parameters"옵션을 사용하는 답변을 보지 못했기 때문에 여기에 2 센트를 추가합니다.
여기에서는 starwars_api 프로젝트에 Jenkins CI 브라우저 콘솔을 사용하고 있으며 refs / tags / tag-name 값으로 "Build with parameters"를 사용하여 직접 빌드 할 수있었습니다.