Jenkins Git 플러그인 : 특정 태그를 빌드하는 방법? 빌드의 일부이지만

Jenkins가 지정된 태그를 작성하는 데 문제가 있습니다. 태그는 매개 변수화 된 빌드의 일부이지만 해당 태그를 빌드하기 위해 이것을 git 플러그인에 전달하는 방법을 모릅니다. 이것은 내 하루 중 3 시간이 걸렸고 스택 오버플로에서 마스터에게 패배를 인정했습니다.



답변

“빌드 할 분기”매개 변수를 사용하여이를 수행 할 수있었습니다.

Branch Specifier (blank for default): tags/[tag-name]

[태그 이름]을 태그 이름으로 바꿉니다.


답변

Jenkins CI v.1.555, Git Client 플러그인 v.1.6.4 및 Git 플러그인 2.0.4를 사용하여 이러한 답변 중 어느 것도 나에게 충분하지 않았습니다.

특정 고정 (즉, 매개 변수화되지 않은) 태그 하나에 대해 하나의 Git 저장소를 구축하는 작업을 원했습니다. 나는 Thilo가 인용 한 “build a Git tag”블로그 게시물 과 함께 다양한 답변의 솔루션을 조합해야 했습니다 .

  1. 다음을 사용하여 태그를 원격 저장소로 푸시하십시오. git push --tags
  2. 작업의 “Git 저장소”섹션에있는 “소스 코드 관리”제목 아래에서 “고급”을 클릭하십시오.
  3. Refspec 필드에 다음 텍스트를 추가합니다. +refs/tags/*:refs/remotes/origin/tags/*
  4. “Branches to build”, “Branch specifier”아래에 */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을 제거하기 만하면됩니다.


답변

Jenkins에게 Ref 이름으로 빌드하라고 말할 수 없습니까? 그렇다면 그것은

refs/tags/tag-name

Jenkins와 Hudson에 대해 내가 보는 모든 질문에서 TeamCity로 전환하는 것이 좋습니다. TeamCity가 작동하도록 구성 파일을 편집 할 필요가 없습니다.


답변

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. ‘Branches to build’필드에 태그 이름을 지정하기 만하면됩니다.
  2. 매개 변수화 된 빌드에서 매개 변수를 동일한 필드 ‘빌드 할 분기’즉 $ {Branch_to_build}에서 변수로 사용할 수 있습니다.
  3. 사용 가능한 모든 브랜치 및 태그를 나열하여 기능을 제공하는 Git 매개 변수 플러그인 을 설치할 수 있습니다 .

답변

나는 이와 같은 일을했고 그것은 작동했습니다.

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)


답변

Advanced-> Refspec 필드를 refs/tags/[your tag name]. 이것은 Refspec에 대한 다양한 다른 제안보다 간단 해 보이지만 저에게는 잘 작동했습니다.

업데이트 23 / 7 / 2014- 실제로 추가 테스트 후 예상대로 작동하지 않는 것으로 나타났습니다. HEAD 버전이 아직 체크 아웃중인 것 같습니다. 수락 된 답변으로이 작업을 취소하십시오. 이 스레드 (3 월 30 일) 에서 gotgenes 의 게시물을 따라 작업 솔루션을 얻었 습니다 . 내 작업이 SCM 폴링이 아닌 업스트림 작업에서 트리거되기 때문에 빌드의 불필요한 트리거링 게시물에서 언급 된 문제는 저에게 문제가되지 않았습니다.

업데이트 APR-2018- 이것은 한 사람에게 작동하며 Jenkins 문서에 동의한다는 의견에 유의하십시오.