如何编写Pipeline来丢弃旧版本?

时间:2016-09-17 03:07:35

标签: jenkins jenkins-pipeline

groovy语法生成器不适用于示例步骤properties: Set Job Properties。我已选择Discard old builds,然后在10字段中输入Max # of builds to keep,然后Generate Groovy,则无法显示任何内容。

Jenkins版本:2.7

9 个答案:

答案 0 :(得分:102)

对于声明性语法,您可以使用options块:

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

logRotator的参数(来自the source code):

  • daysToKeepStr:历史记录只保留至今。
  • numToKeepStr:只保留此数量的构建日志。
  • artifactDaysToKeepStr:工件只能保留至今。
  • artifactNumToKeepStr:只有这些版本的构件才能保留其工件。

可以在Cloudbees knowledge basethe docs for options block中找到更多信息。

答案 1 :(得分:39)

您可以使用嵌套在properties中的BuildDiscarderProperty方法最终拥有您想要设置的密钥。我仍然没有一种可靠的方法来查找每个键的正确语法。经过多次猜测和检查:

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

请注意,此代码段用于脚本语法。

答案 2 :(得分: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'
        )
    )
}

答案 3 :(得分:5)

瓦迪姆的答案因某些未知原因对我不起作用。我将其简化如下,现在可以使用了:

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

答案 4 :(得分:4)

  1. 要在特定数量的之后放弃构建

     options {
         buildDiscarder(logRotator(daysToKeepStr: '7'))
     }
    
  2. 在特定数量的构建之后放弃构建:

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

答案 5 :(得分:4)

Jenkins内置了语法生成器页面。

Pipeline-Syntax:Snippet Generator
<your jenkins url&GT; /管线的语法/

管道 - 语法:指令生成器
<your jenkins url&GT; /指令发电机/

来自指令生成器的

Discard old builds示例 discard old builds example

答案 6 :(得分:4)

对于脚本化管道,请使用:

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

答案 7 :(得分:1)

如果要在multibranch管道作业级别配置构建保留(在所有单个Jenkinsfile中),这也是可能的: https://issues.jenkins-ci.org/browse/JENKINS-30519?focusedCommentId=325601&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-325601

BuildRetentionBranchProperty之外,您还可以在此配置*BranchProperty中的任何其他内容: https://github.com/jenkinsci/branch-api-plugin/tree/master/src/main/java/jenkins/branch

尽管如此,它们可能不会出现在GUI中,至少对我来说是Jenkins 2.73.2。但您仍然可以使用JobDSL或直接修改config.xml(我没有说; - ))

答案 8 :(得分:0)

如果您需要编程方式(即从函数中执行此操作,而不是使用options{}管道语法):

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