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


87

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

Jenkins 버전 : 2.7


젠킨스 2.32.3와 나를 위해 잘 작동
— 미셸 정

답변:


181

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

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

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

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

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


1
이것은 분기당 또는 파이프 라인 당이어야합니까? 내 환경에서 작동하지 않는 것 같습니다.
— nroose

다양한 옵션에 대한 매개 변수를 얻기 위해 소스 코드를 참조해야하는 일반적인 관행입니까? 문서는 참조 용 numToKeepStr이며 운 좋게도 다른 매개 변수를 찾기 위해 여기에서 귀하의 응답을 찾았습니다. 그들이 문서화하는 방식이 엉망입니다. 생명의 은인이지만 감사합니다.
— emmdee

누군가이 buildDiscarder 옵션 문을 (다중 파이프 라인) 단계 블록 안에 넣는 컨텍스트를 보여줄 수 있습니까? 시도했지만 빌드가 실패합니다.
— Christopher D. Emerson

53

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

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

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


1
이것은 효과가 있지만 왜 이것이 두 개의 맵 안에 중첩되어 있으며 어떻게 해결 했습니까?
— Rupert Madden-Abbott

나는 당신의 대답을보고 있는데 그것이 무엇을하는지 이해하지 못합니다. 지난 10 개의 빌드를 유지합니까 아니면 지난 10 일 동안 유지합니까? 지난 10 주 또는 3 개월의 빌드를 유지할 수 있습니까? 에서 각 *Str필드 의 의미를 설명하십시오 strategy. 물고기 사람 ... 등을 가르쳐
— Abhijit 사카

1
@AbhijitSarkar 모든 옵션은 해당 클래스의 javadoc에 설명되어 있습니다. github.com/jenkinsci/jenkins/blob/master/core/src/main/java/…
— apottere

@apottere 1. 링크가 답에 없습니다. 2. Javadoc을 살펴보면 대답 할 필요가 없습니다. 대답은 가능한 한 완전해야합니다. 관련 부분을 복사하여 여기에 설명하는 한 외부 링크는 괜찮습니다.
— Abhijit Sarkar

1
@AbhijitSarkar 저는 OP가 아닙니다. 어디에서 답을 찾을 수 있는지 알려주고있었습니다.
— apottere

17

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

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

파이프 라인 구문 : 지시어 생성기
<your jenkins url > / directive-generator /

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


17

스크립팅 된 파이프 라인의 경우 다음을 사용합니다.

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

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

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

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

:) 계속 빌드의 그냥 일의 추가 수는이 총 수에서 떨어져, 빌드 유지
— 제럴드 사부 M

이러한 유형의 경우 주석을 사용해야합니다. 그에 따라 내 답변을 업데이트했습니다.
— Vadim Kotov 2017

댓글을 달았다는 평판이 없습니다.
— Jerald Sabu M

이제 있습니다. 그러나 일반적으로 평판이 없으면 댓글 대신 답변해서는 안됩니다 .
— Vadim Kotov 2017

6

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

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

6

선언적 파이프 라인의 경우 다음을 추가 할 수 있습니다.

options {

    buildDiscarder(
        logRotator(
            // number of build logs to keep
            numToKeepStr:'5',
            // history to keep in days
            daysToKeepStr: '15',
            // artifacts are kept for days
            artifactDaysToKeepStr: '15',
            // number of builds have their artifacts kept
            artifactNumToKeepStr: '5'
        )
    )
}

Thx,하지만 어디에서 정보를 찾았습니까? 코드?
— silencej

1
나는 보통 여기에서 그것을한다 jenkins-base-url:port if any/pipeline-syntax/. 여기에 또 다른 javadoc.jenkins.io/hudson/tasks/LogRotator.html도 있습니다. 또한 플러그인의 github 소스 코드를 자세히 살펴보고 자세히 이해합니다. @silencej
— bhordupur

2

다중 브랜치 파이프 라인 작업 수준 (모든 개별 Jenkinsfiles의 경우) 에서 빌드 보존을 구성하려는 경우 에도 가능합니다. 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직접 수정할 수 있습니다 (나는 ;-))


Job DSL Plugin 에 대해 이야기하고 있습니까? Jenkins Pipelines와는 다릅니다. 내 말은, Pipelines를 사용하는 모든 사람이 Job DSL Plugin을 사용하는 것은 아닙니다.
— Vadim Kotov

@VadimKotov 아니, 정말로. Jenkins Pipelines에서 빌드 보존을 구성하는 데 문제가있었습니다. Jenkinsfile에서 그렇게하고 싶지 않았지만 대신 작업 수준에서 수행하고 싶었습니다. 여기서는 Job DSL을 사용했지만 빌드 작업 설정을 자동화하는 수단 일 뿐이므로 실제로는 중요하지 않습니다. 그러나 빌드 작업을 수동으로 구성 할 때 위의 설정이 나타나지 않도록하는 GUI에 버그가있는 것 같습니다. (JobDSL 그렇지 않으면 GUI를 통해 당신이 할 수없는 아무것도하지 않습니다)
— 의 Torben Knerr

2

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

def someFunction() {
  ...
  properties([
    buildDiscarder(logRotator(numToKeepStr: '5'))
  ])
}
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.