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

tar*_*yte 66 jenkins jenkins-pipeline

groovy语法生成器不适用于示例步骤properties: Set Job Properties.我已经选择Discard old builds然后进入10Max # of builds to keep领域,然后Generate Groovy没有任何显示.

詹金斯版:2.7

Vad*_*tov 125

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

pipeline {
  options {
    buildDiscarder(logRotator(numToKeepStr: '30', artifactNumToKeepStr: '30'))
  }
  ...
}
Run Code Online (Sandbox Code Playgroud)

参数logRotator(来自源代码):

  • daysToKeepStr:历史只保留到今天.
  • numToKeepStr:仅保留此数量的构建日志.
  • artifactDaysToKeepStr:文物只保留到今天.
  • artifactNumToKeepStr:只有这些数量的构建才能保留其工件.

可以在Cloudbees知识库文档中options找到更多信息.

  • 当您丢弃“构建”时,它是否会丢弃构建工件和关联的存储库? (4认同)
  • @vadim-kotov 你的答案是关于如何提供一个很好的答案的集体行为。您提供所有相关详细信息以及阅读它们的外部参考资料。如果 stackoverflow 上的每个人都花你的时间来回答这个问题,每个人都会受益匪浅。荣誉。 (4认同)
  • 这应该是每个分支还是每个管道?它似乎在我的环境中不起作用。 (2认同)
  • @vadim-kotov,我已经尝试过,但它不适用于管道。尝试保留两个属性和仅保留 1 个属性,但没有成功。有什么线索吗? (2认同)

tar*_*yte 44

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

properties([[$class: 'BuildDiscarderProperty', strategy: [$class: 'LogRotator', artifactDaysToKeepStr: '', artifactNumToKeepStr: '', daysToKeepStr: '', numToKeepStr: '10']]]);
Run Code Online (Sandbox Code Playgroud)

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

  • @AbhijitSarkar 我不是OP,我只是让你知道在哪里可以找到答案。 (2认同)

Sta*_*yuk 11

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

properties([
    buildDiscarder(logRotator(daysToKeepStr: '3', numToKeepStr: '3')),
])
Run Code Online (Sandbox Code Playgroud)


Jer*_*u M 10

  1. 在特定数后丢弃构建:

     options {
         buildDiscarder(logRotator(daysToKeepStr: '7'))
     }
    
    Run Code Online (Sandbox Code Playgroud)
  2. 在特定数量的构建后丢弃构建

     options {
         buildDiscarder(logRotator(numToKeepStr: '7'))
     }
    
    Run Code Online (Sandbox Code Playgroud)


小智 9

Jenkins具有内置的语法生成器页面。

管道语法:代码段生成器
<your jenkins url> / pipeline-syntax /

管道语法:指令发生器
<your jenkins url> / directive-generator /

Discard old builds 指令生成器的示例 丢弃旧版本示例


bho*_*pur 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'
        )
    )
}
Run Code Online (Sandbox Code Playgroud)


小智 5

瓦迪姆的答案因某些未知原因对我不起作用.我把它简化如下,它现在有效:

options {
    buildDiscarder(logRotator(numToKeepStr: '3'))
}
Run Code Online (Sandbox Code Playgroud)