丢弃多分支管道作业中的旧构建,并没有真正从服务器中删除构建

Discard old build in multi-branch pipeline job, doesn't really delete builds from server

我在 Jenkins 中有多个分支管道作业:

http://illinXXXX:XXXX/job/OC/configure

我检查了丢弃旧版本的选项,如下所示:

我原以为,在此更改之后,每个新的 运行 都会从服务器中删除该管道内每个存储库的旧版本。但是,我看到所有构建仍然存在,这导致我出现文件系统问题。 詹金斯 link:

http://illinXXX:XXXX/job/OC/job/productconfigurator-ms/job/master/

来自服务器:

jenkins@XXXXX:jenkins/jenkins-production/jobs/OC/jobs/productconfigurator-ms/branches/master/builds>

我看到从 541 到 1039 的版本

詹金斯版本。 2.176.1

您粘贴的界面用于孤立项目。孤立项是指已删除的分支,其中没有可用的 Jenkinsfile。

对于多分支管道,构建每个分支的指令都在该分支的 Jenkinsfile 中。这是您需要定义这些限制的地方。

在您的 Jenkinsfile 中使用以下内容(从上方,在 master 分支中):

options {
        buildDiscarder(logRotator(numToKeepStr: "100"))
}

确保使用字符串(如 "100")而不是数字(如 100)。

参数:

  • daysToKeepStr: 历史只保留这么多天
  • numToKeepStr: 只保留这么多构建日志。
  • artifactDaysToKeepStr: 工件只保留了这么多天。
  • artifactNumToKeepStr:只有这么多构建保留了它们的工件。

您可能需要手动 运行 您的 master 管道一次才能正常工作。

这相当于脚本管道:

node('some-label') {
        properties([
                buildDiscarder(
                        logRotator(
                                artifactDaysToKeepStr: "10",
                                artifactNumToKeepStr: "50",
                                daysToKeepStr: "10",
                                numToKeepStr: "50")
                )
        ])

        stage('Maven Compile') {
        }

        stage('Some other steps') {
        }
   
}