[jenkins] Jenkins 작업 영역을 정리하는 방법이 있습니까?

Jenkins에서 작업 공간을 어떻게 정리할 수 있습니까? AccuRev버전 관리 도구로 사용 하고 있습니다.

freestyleJenkins에서 프로젝트를 만들었습니다 .



답변

Jenkins에서 작업 공간을 정리하는 방법이 있습니다. 빌드 전 또는 빌드 후에 작업 공간을 정리할 수 있습니다.

먼저 Workspace Cleanup Plugin을 설치 합니다.

빌드 전에 작업 공간을 정리하려면 빌드 환경에서 빌드가 시작되기 전에 작업 공간 삭제 상자를 선택하십시오 .

빌드 후 작업 공간을 정리하려면 : 제목 아래 빌드 후 작업이 선택한 빌드가 완료되면 삭제 작업 공간 으로부터 빌드 후 작업이 추가 메뉴 아래로 놓습니다.


답변

내 버전의 jenkins를 사용하여 수동으로 정리하고 싶다면 (추가 플러그인을 설치할 필요가없는 것처럼 보이지만 누가 알고 있는지) 왼쪽 열에 “작업 공간”링크가 있습니다. 프로젝트를 클릭하십시오. 그런 다음 “작업 공간”에서 “현재 작업 공간 지우기”링크가 왼쪽 열의 그 아래에 나타납니다.
스크린 샷


답변

위의 솔루션 외에도 “일반적인”방법이 있습니다. Linux 시스템에서 가장 큰 공간 소비자를 직접 삭제합니다. 다음 단계를 따를 수 있습니다.

  1. Jenkins 머신 (Putty)에 로그인
    여기에 이미지 설명 입력
  2. Jenkins 설치 경로로 이동합니다.

ls -lart를 사용하여 숨겨진 폴더도 나열하면 일반적으로 jenkin 설치는 .jenkins / 폴더에 있습니다.

[xxxxx ~]$ ls -lart

drwxrwxr-x 12 xxxx  4096 Feb  8 02:08 .jenkins/
  1. 폴더 공간 나열

Use df -h 높은 수준의 디스크 공간 표시

du -sh ./*/ 현재 경로의 각 하위 폴더에 대한 총 메모리를 나열합니다.

du -a /etc/ | sort -n -r | head -n 10 / etc /에서 디스크 공간을 차지하는 상위 10 개 디렉토리를 나열합니다.

  1. 이전 빌드 또는 기타 대용량 폴더 삭제

일반적으로 ./job/ 폴더 또는 ./workspace/ 폴더가 가장 큰 폴더가 될 수 있습니다. 들어가서 필요에 따라 기본을 삭제하십시오 (전체 폴더를 삭제하지 마십시오).

rm -rf theFolderToDelete

여기에 이미지 설명 입력


답변

작업 공간 정리 플러그인

Jenkins 파일에서 추가

cleanWs()

빌드가 완료된 후 작업 공간이 삭제됩니다.


답변

중요 : 작업이 현재 실행되지 않는 한 주어진 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/{}

가장 큰 작업 공간 10 개 정리

이것은 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")
  }
}


답변

질문이 현재 작업의 작업 공간 정리에 관한 것이라고 가정하면 다음을 실행할 수 있습니다.

test -n "$WORKSPACE" && rm -rf "$WORKSPACE"/*