우리는 Jenkins 2.x를 실행 중이며 새로운 Pipeline 플러그인을 좋아합니다. 그러나 저장소에 분기가 너무 많으면 디스크 공간이 빠르게 채워집니다.
파이프 라인과 호환되는 플러그인이 있습니까? 성공적인 빌드에서 작업 공간을 지울 수 있습니까?
답변
deleteDir()
파이프 라인 Jenkinsfile의 마지막 단계로 사용할 수 있습니다 (작업 디렉토리를 변경하지 않았다고 가정).
답변
@gotgenes가 Jenkins Version에서 지적한 것처럼 . 2.74 , 아래는 작동합니다. 언제든지, 누군가가 위의 버전을 편집하고 추가 할 수 있다면
cleanWs()
와 젠킨스 버전 2.16 와 작업 공간 정리 플러그인 , 내가 가지고, 내가 사용
step([$class: 'WsCleanup'])
작업 공간을 삭제합니다.
당신은로 이동하여 그것을 볼 수 있습니다
JENKINS_URL/job/<any Pipeline project>/pipeline-syntax
그런 다음 샘플 단계에서 “단계 : 일반 빌드 단계”를 선택한 다음 빌드 단계에서 “빌드 완료시 작업 공간 삭제”를 선택하십시오.
답변
언급 된 솔루션 deleteDir()
및 작업 공간 정리 플러그인을cleanWs()
사용하는 경우 둘 다 작동 하지만 추가 빌드 단계에서이를 사용하도록 권장하는 것은 일반적으로 원하는 솔루션이 아닙니다 . 빌드가 실패하고 파이프 라인이 중단되면이 정리 단계에 도달하지 않으므로 실패한 빌드에서 작업 공간이 정리되지 않습니다.
=> 대부분의 경우 다음 과 같은 빌드 후 단계 조건에 배치해야합니다 always
.
pipeline {
agent any
stages {
stage('Example') {
steps {
echo 'Hello World'
}
}
}
post {
always {
cleanWs()
}
}
}
답변
실제로 deleteDir 함수는 현재 디렉토리와 그 내용을 반복적으로 삭제합니다. 심볼릭 링크 및 접합은 따르지 않지만 제거됩니다.
작업 공간의 특정 디렉토리를 삭제하려면 dir 단계에서 deleteDir 단계를 랩핑하십시오.
dir('directoryToDelete') {
deleteDir()
}
답변
다음과 같이 deleteDir ()을 사용했습니다.
post {
always {
deleteDir() /* clean up our workspace */
}
}
그러나 그 후 항상 성공 또는 실패 후에도 실행해야했지만 사후 조건을 주문할 수는 없습니다. 현재 순서는 항상 변경, 중단, 실패, 성공 및 불안정합니다.
그러나, 매우 유용한 게시물에 조건이 정리 항상 마지막에 실행을 참조 https://jenkins.io/doc/book/pipeline/syntax/은
결국 내 게시물은 다음과 같습니다.
post {
always {
}
success{
}
failure {
}
cleanup{
deleteDir()
}
}
희망적으로 이것은 일부 코너 경우에 도움이 될 수 있습니다
답변
다음 파이프 라인 스크립트 사용 :
pipeline {
agent { label "master" }
options { skipDefaultCheckout() }
stages {
stage('CleanWorkspace') {
steps {
cleanWs()
}
}
}
}
다음과 같이하세요:
- 작업 공간을 정리하려는 최신 파이프 라인 작업 빌드로 이동하십시오.
- LHS 메뉴에서 재생 링크를 클릭하십시오.
- 위의 스크립트를 텍스트 상자에 붙여 넣고 실행을 클릭하십시오.
답변
Jenkins에서 사용자 정의 작업 공간을 사용한 경우 deleteDir ()은 @tmp 폴더를 삭제하지 않습니다.
따라서 작업 공간과 함께 @tmp를 삭제하려면 다음을 사용하십시오.
pipeline {
agent {
node {
customWorkspace "/home/jenkins/jenkins_workspace/${JOB_NAME}_${BUILD_NUMBER}"
}
}
post {
cleanup {
/* clean up our workspace */
deleteDir()
/* clean up tmp directory */
dir("${workspace}@tmp") {
deleteDir()
}
/* clean up script directory */
dir("${workspace}@script") {
deleteDir()
}
}
}
}
이 스 니펫은 기본 작업 공간에서도 작동합니다.