IT TIP

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

itqueen 2020. 10. 20. 18:58
반응형

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


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

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


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

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

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

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


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


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

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

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 관리스크립트 콘솔 에서 아래 스크립트를 실행할 수 있습니다 . 파일 시스템의 공간을 정리하기 위해 이렇게했습니다.

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")
  }
}

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

위에서 언급 한 옵션이 나타나기 전에이 플러그인을 설치해야합니다.

작업 공간 정리 플러그인

이 플러그인은 모든 작업 구성에 확인란을 추가하여 모든 단계 (소스 제어 포함)가 실행되기 전에 전체 작업 공간을 삭제할 수 있습니다.

이것은 빌드가 실행되는 방식을 보장하기 위해 항상 알려진 지점에서 시작하도록하는 데 유용합니다.


따라서 댓글을 달 수 없습니다.

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")


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

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

참고 URL : https://stackoverflow.com/questions/28683914/is-there-any-way-to-cleanup-jenkins-workspace

반응형