젠킨스에서 빌드 번호를 재설정하는 방법은 무엇입니까?


90

Jenkins와 Gradle을 사용하여 Java 프로젝트를 빌드하고 있습니다.

프로젝트를 빌드 할 때마다 Jenkins 화면에 새 빌드 번호가 표시됩니다.

다음은 내 Jenkins 빌드 정보입니다.

Success > Console Output  #96   03-Jan-2014 15:35:08    
Success > Console Output  #95   03-Jan-2014 15:27:29     
Failed > Console Output  #94    03-Jan-2014 15:26:16     
Failed > Console Output  #93    03-Jan-2014 15:25:01     
Failed > Console Output  #92    03-Jan-2014 15:23:50     
Success > Console Output  #91   03-Jan-2014 12:42:32    
Success > Console Output  #90   03-Jan-2014 12:02:45

Jenkins 빌드 번호를 다음과 같이 재설정하고 싶습니다.

Success > Console Output  #1    03-Jan-2014 12:02:45

Jenkins에서 빌드 번호를 어떻게 재설정 할 수 있습니까?

답변:


161

그루비 스크립트 콘솔에서 더 쉽게 할 수 있습니다. 로 이동하여 HTTP : 당신의-젠킨스 서버 / 스크립트 // 스크립트 창에서 입력 :

item = Jenkins.instance.getItemByFullName("your-job-name-here")
//THIS WILL REMOVE ALL BUILD HISTORY
item.builds.each() { build ->
  build.delete()
}
item.updateNextBuildNumber(1)

6
또는 cli를 통해java -jar jenkins-cli.jar -s https://jenkins.example.com groovysh \ 'jenkins.instance.getItemByFullName("job-name").updateNextBuildNumber(1021)'
ykhrustalev

3
이것은 확실히 최고의 대답입니다. 숫자 만 설정하려는 경우 삭제 루프가 필요하지 않습니다.
Nick

어떤 이유로 이것은 최신 빌드에서만 삭제를 수행하지만 다음은 나를 위해 작동했습니다. echo "deleting all builds of ${jobName}" item = Jenkins.instance.getItemByFullName("${jobName}") for (build in item.builds){ build.delete(); } item.updateNextBuildNumber(1)
BRNTZN

멍청한 질문 .. 내가 정확한 직업 명을 어떻게 알지.
Ammar Mujeeb

@AmmarMujeeb은 Jenkins 대시 보드로 이동하면 작업 이름이 표시됩니다. 당신은 또한에 갈 수 /var/lib/jenkins/jobs/리눅스 및 디렉토리의 이름은 정확한 작업 이름이
rickrizzo

62

에서 여기

Hudson 작업의 이름이 FooBar 인 경우

  • FooBar를 FooBar-Copy로 이름 변경
  • FooBar-Copy에서 '기존 작업 복사'옵션을 사용하여 FooBar라는 새 작업을 만듭니다.
  • FooBar-Copy 삭제

35
  • 먼저 작업 공간을 정리하고 이전 빌드를 제거합니다.
    • 서버에서 작업 디렉토리로 이동하십시오. 'var / lib / jenkins / jobs / myJob'작업 공간 및 빌드 디렉토리와 폴링 파일, lastSuccessful, lastStable 파일 등을 삭제합니다. config.xml 및 lastBuildNumber 만 있어야합니다.
    • 서비스 젠킨스 중지 와 같은 것을 사용하여 젠킨스 종료
    • nextBuildNumber 라는 파일을 편집하고 현재 빌드 번호 대신 1을 삽입합니다.
    • Jenkins를 다시 시작하고 Jenkins 서비스를 시작합니다.
    • 젠킨스에 로그인하고 작업으로 이동하여 빌드를 누르십시오. 작업 # 1 구축을 시작해야합니다.

1
이것은 매우 도움이되었습니다. 감사.

23

다음 빌드 번호를 설정하려면 "NextBuildNumber"플러그인이 있습니다. 그러나 필요한 빌드 번호 인 1이 현재 빌드 번호보다 적기 때문에 귀하의 경우에는 작동하지 않습니다.

먼저 이전 빌드를 모두 삭제해야합니다. 이 간단한 스크립트를 실행하여 수행 할 수 있습니다 .-> Jenkins 관리-> 스크립트 콘솔로 이동하십시오.

// change this variable to match the name of the job whose builds you want to delete
def jobName = "Your Job Name"
def job = Jenkins.instance.getItem(jobName)
job.getBuilds().each { it.delete() }

이제 다음 빌드 번호를 1로 설정하고 빌드를 실행할 수 있습니다. 1로 시작 합니다. :) 간단합니다.

업데이트-Jenkins에는 이제 작업 기록 제거 플러그인이있어이 작업을 가장 쉽게 수행 할 수 있습니다. 자세한 내용은 페이지를 확인하세요-https: //wiki.jenkins.io/display/JENKINS/Purge+Job+History+Plugin


6

일반적으로 빌드 번호를 다음으로 재설정하려면 N( N반드시 1 일 필요는 없음) :

  • 기존의 위치를 기반으로 삭제합니다 buildNumber >= N.
  • 편집 Program Files (x86)/Jenkins/jobs/yourjob/nextBuildNumber. 포함 된 번호를로 설정합니다 N.
  • Jenkins에서 Manage Jenkins -> Reload Configuration from Disk.

확실히 당신은 "디스크에서 다시로드 구성"을 선택하기 전에이 결함을 읽을 수 있는지 확인 - issues.jenkins-ci.org/browse/JENKINS-32984
user3181500

6

허용되는 답변을 확장하여 모든 프로젝트에 대해 한 번에 수행하는 방법은 다음과 같습니다.

Jenkins.instance.allItems.each() { 
  item -> item.builds.each() { 
    build -> build.delete()
  }
  item.updateNextBuildNumber(1)
}  

4

@antweiss의 탁월한 답변의 확장으로 실제로 더 나아갈 수 있습니다 ...

전체 빌드 기록을 삭제할 필요가 없습니다. 원하지 않는 경우 이전 시점으로 시간을 간단히 롤백 할 수 있습니다.

resetNumberTarget = 14
item = Jenkins.instance.getItemByFullName("Project Name [from project Dashboard]")
//println(item)

item.builds.each() { build ->
  //println(build)
  //println(build.number)

  if(build.number >= resetNumberTarget)
  {
    //println("About to Delete '" + build + "'")    
    build.delete()  
  }
}

item.updateNextBuildNumber(resetNumberTarget)

더미 실행을 원하는 경우 실제로 수행하지 않고 수행 할 작업을 확인하려면 build.delete()item.updateNextBuildNumber(resetNumberTarget)줄을 주석 처리하고 다양한 인쇄 명령의 주석 처리를 제거하면됩니다.


문서 : 이러한 개체의 세부 정보를 찾기가 어려웠지만 다음을 확인했습니다.


1

nexBuildNumber플러그인을 사용 하거나 단순히 nexBuildNumber파일을 수정 하여 빌드 번호를 재설정 할 수 있습니다. 다음은 수행해야하는 단계입니다.

  • 로 이동 .jenkins/Jobs/<YourJobName>/build/하여이 폴더를 백업하고 (나중에 사용할 필요가있는 경우) 빌드 폴더를 삭제 합니다.

참고 : 이전 빌드를 정리하면 빌드 기록이 손실되고 Jenkins 대시 보드에서 더 이상 사용할 수 없습니다.

  • 구성을 다시로드합니다 (Jenkins-> Jenkins 관리).
  • 다음 빌드 번호 플러그인을 사용하거나 nextBuildNumber작업 디렉토리 의 파일을 수정하여 다음 빌드 버전을 1로 설정하십시오 .

0

나는 이것을하는 쉬운 방법을 찾았다.

  1. 작업 공간을 닦으십시오.
  2. Jenkins에 저장 한 각 빌드로 이동하여 삭제하십시오.
  3. 빌드 번호를 1로 설정 한 다음 빌드하십시오.

Jenkins는 이전 빌드를 사용하여 다음 빌드 번호를 결정합니다. 입력 한 빌드 번호가 이전 빌드 번호보다 낮 으면 Jenkins는 자동으로 빌드 번호를 이전 빌드보다 높입니다. 그래서 여기 우리는



-1

모든 작업의 ​​빌드 번호를 재설정하려면 :

Jenkins.instance.getAllItems(AbstractProject.class).each {
    item = Jenkins.instance.getItemByFullName(it.fullName)
    //THIS WILL REMOVE ALL BUILD HISTORY
    item.builds.each() { build ->
        build.delete()
    }
    item.updateNextBuildNumber(1)
}
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.