답변:
Jenkins에서 작업 공간을 정리하는 방법이 있습니다. 빌드 전 또는 빌드 후에 작업 공간을 정리할 수 있습니다.
먼저 Workspace Cleanup Plugin을 설치 합니다.
빌드 전에 작업 공간을 정리하려면 빌드 환경에서 빌드가 시작되기 전에 작업 공간 삭제 상자를 선택하십시오 .
빌드 후 작업 공간을 정리하려면 : 제목 아래 빌드 후 작업이 선택한 빌드가 완료되면 삭제 작업 공간 으로부터 빌드 후 작업이 추가 메뉴 아래로 놓습니다.
내 버전의 jenkins를 사용하여 수동으로 정리하고 싶다면 (추가 플러그인을 설치할 필요가없는 것처럼 보이지만 누가 알고 있는지) 왼쪽 열에 "작업 공간"링크가 있습니다. 프로젝트를 클릭하십시오. 그런 다음 "작업 공간"에서 "현재 작업 공간 지우기"링크가 왼쪽 열의 그 아래에 나타납니다.
위의 솔루션 외에도 "일반적인"방법이 있습니다. Linux 시스템에서 가장 큰 공간 소비자를 직접 삭제합니다. 다음 단계를 따를 수 있습니다.
ls -lart를 사용하여 숨겨진 폴더도 나열하면 일반적으로 jenkin 설치는 .jenkins / 폴더에 있습니다.
[xxxxx ~]$ ls -lart drwxrwxr-x 12 xxxx 4096 Feb 8 02:08 .jenkins/
Use df -h
높은 수준의 디스크 공간 표시
du -sh ./*/
현재 경로의 각 하위 폴더에 대한 총 메모리를 나열합니다.
du -a /etc/ | sort -n -r | head -n 10
/ etc /에서 디스크 공간을 차지하는 상위 10 개 디렉토리를 나열합니다.
일반적으로 ./job/ 폴더 또는 ./workspace/ 폴더가 가장 큰 폴더가 될 수 있습니다. 들어가서 필요에 따라 기본을 삭제하십시오 (전체 폴더를 삭제하지 마십시오).
rm -rf theFolderToDelete
cleanWs()
플러그인 랜딩 페이지에는 내 Jenkinsfile
.
중요 : 작업이 현재 실행되지 않는 한 주어진 Jenkins 작업에 대한 작업 공간을 제거하는 것이 안전합니다!
참고 : 귀하의 $JENKINS_HOME
가 기본값으로 설정되어 있다고 가정합니다 /var/jenkins_home
.
rm -rf /var/jenkins_home/workspaces/<workspace>
rm -rf /var/jenkins_home/workspaces/*
이것은 grep을 사용하여 화이트리스트를 만듭니다.
ls /var/jenkins_home/workspace \
| grep -v -E '(job-to-skip|another-job-to-skip)$' \
| xargs -I {} rm -rf /var/jenkins_home/workspace/{}
이것은 du와 sort를 사용하여 가장 큰 것에서 가장 작은 순서로 작업 공간을 나열합니다. 그런 다음 head를 사용하여 처음 10 개를 가져옵니다.
du -d 1 /var/jenkins_home/workspace \
| sort -n -r \
| head -n 10 \
| xargs -I {} rm -rf /var/jenkins_home/workspace/{}
한 번에 모든 작업의 작업 공간을 삭제하기 위해 Jenkins 관리 → 스크립트 콘솔 에서 아래 스크립트를 실행할 수 있습니다 . 파일 시스템의 공간을 정리하기 위해 이렇게했습니다.
import hudson.model.*
// For each project
for(item in Hudson.instance.items) {
// check that job is not building
if(!item.isBuilding()) {
println("Wiping out workspace of job "+item.name)
item.doDoWipeOutWorkspace()
}
else {
println("Skipping job "+item.name+", currently building")
}
}
따라서 댓글을 달 수 없습니다.
Upen 의 대답은 잘 작동하지만 Jenkins Pipeline Jobs와 Freestyle Jobs가 혼합 된 경우에는 그렇지 않습니다. 파이프 라인 작업에는 DoWipeWorkspace와 같은 메서드가 없습니다. 그래서 그것을 건너 뛰기 위해 스크립트를 수정했습니다.
import hudson.model.*
import org.jenkinsci.plugins.workflow.job.WorkflowJob
// For each project
for(item in Hudson.instance.items) {
// check that job is not building
if(!item.isBuilding() && !(item instanceof WorkflowJob))
{
println("Wiping out workspace of job "+item.name)
item.doDoWipeOutWorkspace()
}
else {
println("Skipping job "+item.name+", currently building")
}
}
필요한 경우 작업 이름으로 필터링 할 수도 있습니다.
item.getDisplayName().toLowerCase().contains("release")
위에서 언급 한 옵션이 나타나기 전에이 플러그인을 설치해야합니다.
이 플러그인은 모든 작업 구성에 확인란을 추가하여 모든 단계 (소스 제어 포함)가 실행되기 전에 전체 작업 공간을 삭제할 수 있습니다.
이것은 빌드가 실행되는 방식을 보장하기 위해 항상 알려진 지점에서 시작하도록하는 데 유용합니다.
하나의 dir (또는 파일) 만 제거하려면 Groovy를 사용하고 Jenkins 관리 → Scripts Console을 사용하여 제거하는 스크립트를 실행할 수 있습니다.
예를 들어 다음을 사용하여 파일을 볼 수 있습니다.
dh = new File('./bitnami/jenkins/jenkins_home/workspace/jobname/folder')
dh.eachFile {
println(it)
}
그런 다음에서 삭제할 폴더가 있으면 dh
다음 코드를 추가하기 만하면됩니다.
dh.deleteDir()
그리고 삭제됩니다.
참고 : 예제에 표시된 경로는 Bitnami Jenkins 설치용이며 사용자 경로는 다를 수 있습니다.
그것을 할 수있는 옵션이 있습니다. 구성-> 빌드 후 작업
이 옵션은 최소한 Jenkins 버전 2.236에서 기본적으로 제공됩니다.