development

파이프 라인을 작성하여 이전 빌드를 삭제하는 방법은 무엇입니까?

big-blog 2020. 11. 19. 21:43
반응형

파이프 라인을 작성하여 이전 빌드를 삭제하는 방법은 무엇입니까?


groovy 구문 생성기가 샘플 단계에서 작동하지 않습니다 properties: Set Job Properties. 필드 Discard old builds선택 하고 입력 10했는데 아무것도 표시되지 않습니다.Max # of builds to keepGenerate Groovy

Jenkins 버전 : 2.7


선언적 구문의 경우 options블록을 사용할 수 있습니다 .

pipeline {
  options {
    buildDiscarder(logRotator(numToKeepStr: '30', artifactNumToKeepStr: '30'))
  }
  ...
}

logRotator( 소스 코드에서 )에 대한 매개 변수 :

  • daysToKeepStr: 역사는 오늘날까지만 유지됩니다.
  • numToKeepStr:이 수의 빌드 로그 만 유지됩니다.
  • artifactDaysToKeepStr: 유물은 현재까지만 보관됩니다.
  • artifactNumToKeepStr:이 빌드 수에만 아티팩트가 유지됩니다.

자세한 내용은 Cloudbees 지식 기반block 문서options 에서 찾을 수 있습니다 .


결국에는 설정하려는 키가 properties있는에 중첩 된 메서드를 사용할 수 있습니다 BuildDiscarderProperty. 여전히 각 키의 올바른 구문을 찾을 수있는 확실한 방법이 없습니다. 많은 추측과 확인 후 :

properties([[$class: 'BuildDiscarderProperty', strategy: [$class: 'LogRotator', artifactDaysToKeepStr: '', artifactNumToKeepStr: '', daysToKeepStr: '', numToKeepStr: '10']]]);

이 스 니펫은 스크립트 구문을위한 것입니다.


스크립팅 된 파이프 라인의 경우 :

properties([
    buildDiscarder(logRotator(daysToKeepStr: '3', numToKeepStr: '3')),
])

Jenkins에는 내장 구문 생성기 페이지가 있습니다.

파이프 라인 구문 : 스 니펫 생성기
<your jenkins url> / pipeline-syntax /

Pipeline-Syntax : 지시어 생성기
<your jenkins url> / directive-generator /

Discard old builds Directive Generator의 예 오래된 빌드 예제 삭제


Vadim의 대답은 알려지지 않은 이유로 저에게 효과가 없었습니다. 다음과 같이 단순화했으며 이제 작동합니다.

options {
    buildDiscarder(logRotator(numToKeepStr: '3'))
}

  1. 특정 일수 이후 빌드를 취소하려면 :

     options {
         buildDiscarder(logRotator(daysToKeepStr: '7'))
     }
    
  2. 특정 수의 빌드 후 빌드를 취소하려면 다음을 수행하십시오.

     options {
         buildDiscarder(logRotator(numToKeepStr: '7'))
     }
    

다중 브랜치 파이프 라인 작업 수준 (모든 개별 작업 수준과 비교)에서 빌드 보존을 구성하려는 경우 Jenkinsfile에도 가능합니다 : https://issues.jenkins-ci.org/browse/JENKINS-30519?focusedCommentId=325601&page=com .atlassian.jira.plugin.system.issuetabpanels : comment-tabpanel # comment-325601

이외에도 https://github.com/jenkinsci/branch-api-plugin/tree/master/src/main/java/jenkins/branch 에서 BuildRetentionBranchProperty다른 *BranchPropertys를 구성 할 수 있습니다.

적어도 Jenkins 2.73.2를 사용하는 경우 GUI에 표시되지 않을 수 있습니다. 그러나 여전히 JobDSL을 사용하거나 config.xml직접 수정할 수 있습니다 (나는 ;-))


프로그래밍 방식이 필요한 경우 (예 options{}: 파이프 라인 구문을 사용하는 대신 함수에서 수행 ) :

def someFunction() {
  ...
  properties([
    buildDiscarder(logRotator(numToKeepStr: '5'))
  ])
}

참고 URL : https://stackoverflow.com/questions/39542485/how-to-write-pipeline-to-discard-old-builds

반응형