최근에 허드슨 빌드 중 하나의 구성을 업데이트했습니다. 빌드 기록이 동기화되지 않았습니다. 내 빌드 기록을 지우는 방법이 있습니까?
제발 감사합니다
최근에 허드슨 빌드 중 하나의 구성을 업데이트했습니다. 빌드 기록이 동기화되지 않았습니다. 내 빌드 기록을 지우는 방법이 있습니까?
제발 감사합니다
답변:
Manage Hudson / Reload Configuration From Disk를 클릭하면 Hudson이 모든 빌드 이력 데이터를 다시로드합니다.
디스크의 데이터가 엉망인 경우 % HUDSON_HOME % \ jobs \ < projectname > 디렉터리 로 이동하여 예상대로 빌드 디렉터리를 복원해야합니다. 그런 다음 구성 데이터를 다시로드하십시오.
단순히 모든 빌드 기록을 제거하는 방법을 묻는 경우, 빌드가 몇 개만있는 경우 UI를 통해 하나씩 삭제하거나 % HUDSON_HOME % \ jobs \ < projectname > 디렉토리 로 이동하여 모든 빌드를 삭제할 수 있습니다 . 거기에있는 하위 디렉터리-빌드에 해당합니다. 그런 다음 변경 사항을 적용하려면 서비스를 다시 시작하십시오.
스크립트 콘솔 (Jenkins 관리> 스크립트 콘솔) 및이 스크립트와 유사한 것을 사용하여 작업의 빌드 기록을 대량 삭제합니다. https://github.com/jenkinsci/jenkins-scripts/blob/master/scriptler/bulkDeleteBuilds.groovy
이 스크립트는 빌드 범위 만 삭제한다고 가정합니다. 특정 작업의 모든 빌드를 삭제하려면 다음을 사용하십시오 (테스트 됨).
// 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() }
// uncomment these lines to reset the build number to 1:
//job.nextBuildNumber = 1
//job.save()
이 대답은 Jenkins입니다.
암호:
def jobName = "copy_folder"
def job = Jenkins.instance.getItem(jobName)
job.getBuilds().each { it.delete() }
job.nextBuildNumber = 1
job.save()
또 다른 옵션은 cURL로 빌드를 삭제하는 것입니다.
$ curl -X POST http://jenkins-host.tld:8080/jenkins/job/myJob/[1-56]/doDeleteAll
위는 myJob 작업에 대한 빌드 # 1에서 # 56을 삭제합니다.
Jenkins 인스턴스에서 인증이 활성화 된 경우 사용자 이름과 API 토큰을 다음과 같이 제공해야합니다.
$ curl -u userName:apiToken -X POST http://jenkins-host.tld:8080/jenkins/job/myJob/[1-56]/doDeleteAll
API 토큰은 /me/configure
Jenkins 의 페이지에서 가져와야합니다 . "Show API Token ..."버튼을 클릭하면 사용자 이름과 API 토큰이 모두 표시됩니다.
편집 : 하나를 교체해야 할 수도 있습니다 doDeleteAll
에 의해 doDelete
구성이나 사용 젠킨스의 버전에 따라이 작업을하기 위해 위의 URL에서.
프로젝트 구성을 임시로 수정하여 마지막 1 개의 빌드 만 저장하고 구성을 다시로드 한 다음 (이전 빌드를 폐기해야 함) 구성 설정을 원하는 값으로 다시 변경할 수 있습니다.
MultiBranchProject (예 : 파이프 라인)의 빌드 기록을 지우려면 Jenkins 홈 페이지 → Jenkins 관리 → 스크립트 콘솔로 이동하여 다음 스크립트를 실행합니다.
def projectName = "ProjectName"
def project = Jenkins.instance.getItem(projectName)
def jobs = project.getItems().each {
def job = it
job.getBuilds().each { it.delete() }
job.nextBuildNumber = 1
job.save()
}
이것은 가능한 최상의 옵션입니다.
Jenkins.instance.getAllItems(AbstractProject.class).each {it -> Jenkins.instance.getItemByFullName(it.fullName).builds.findAll { it.number > 0 }.each { it.delete() } }
이 코드는 모든 Jenkins 작업 빌드 기록을 삭제합니다.
스크립트 콘솔 사용.
작업이 그룹화 된 경우 슬래시로 전체 이름을 지정할 수 있습니다.
getItemByFullName("folder_name/job_name")
job.getBuilds().each { it.delete() }
job.nextBuildNumber = 1
job.save()
또는 다음과 같이 계층 구조를 탐색하십시오.
def folder = Jenkins.instance.getItem("folder_name")
def job = folder.getItem("job_name")
job.getBuilds().each { it.delete() }
job.nextBuildNumber = 1
job.save()
파일 시스템에서 직접 삭제하는 것은 안전하지 않습니다. 아래 스크립트를 실행하여 모든 작업 (재귀 적으로)에서 모든 빌드를 삭제할 수 있습니다.
def numberOfBuildsToKeep = 10
Jenkins.instance.getAllItems(AbstractItem.class).each {
if( it.class.toString() != "class com.cloudbees.hudson.plugins.folder.Folder" && it.class.toString() != "class org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject") {
println it.name
builds = it.getBuilds()
for(int i = numberOfBuildsToKeep; i < builds.size(); i++) {
builds.get(i).delete()
println "Deleted" + builds.get(i)
}
}
}
빌드를 정리하는 또 다른 쉬운 방법은 작업 끝에 Discard Old Plugin을 추가하는 것입니다. 저장할 최대 빌드 수를 설정 한 후 작업을 다시 실행하십시오.
https://wiki.jenkins-ci.org/display/JENKINS/Discard+Old+Build+plugin
스크립트 콘솔 방법을 사용하는 경우 작업이 폴더 컨테이너로 그룹화되는지 고려하기 위해 대신 다음을 사용하십시오.
def jobName = "Your Job Name"
def job = Jenkins.instance.getItemByFullName(jobName)
또는
def jobName = "My Folder/Your Job Name
def job = Jenkins.instance.getItemByFullName(jobName)