How to set Artifactory discardOldBuilds to true in a Jenkinsfile? How to set Artifactory discardOldBuilds to true in a Jenkinsfile? jenkins jenkins

How to set Artifactory discardOldBuilds to true in a Jenkinsfile?


Into official JenkinsFile https://github.com/jenkinsci/jenkins/blob/master/Jenkinsfile has:

properties([[$class: 'jenkins.model.BuildDiscarderProperty', strategy:             [$class: 'LogRotator', numToKeepStr: '50', artifactNumToKeepStr: '20']           ]])

A example of own use with github plugin and jenkins multibranch pipeline:

#!groovynode {  try {    properties([       [        $class: 'jenkins.model.BuildDiscarderProperty',        strategy: [          $class: 'LogRotator',          numToKeepStr: '10'          ]      ],      [        $class: 'GithubProjectProperty',        displayName: '',        projectUrlStr: 'https://github.com/xxxxxxx/xxxxx-xxxx/'      ]    ])    env.JAVA_HOME = tool 'JDK8'    def mvnHome = tool 'Maven'    stage 'Clean Workspace'      deleteDir()    stage 'Git Checkout Source'      checkout scm    stage 'Build Maven Module'      sh "${mvnHome}/bin/mvn clean install -DskipTests=true -DskipITs=true -U"    stage 'Unit Test Maven Module'      sh "${mvnHome}/bin/mvn test -DskipTests=false -DskipITs=true"    stage 'Integration Test Maven Module'      sh "${mvnHome}/bin/mvn verify -DskipTests=true -DskipITs=false"    stage 'Nexus Deploy Artifact'      sh "${mvnHome}/bin/mvn deploy:deploy -Pnexus-deploy"    stage 'Trigger Job xxxxxx-xxxxxx /master'      build job: 'xxxxxx-xxxxxx/master', propagate: false, wait: false    stage 'Send Success Email'      mail from: 'noreply-jenkins@xxxxxxx.io',           to: 'tools@xxxxxxx.io',           subject: "[JENKINS] ${env.JOB_NAME} - Build # ${env.BUILD_NUMBER} - [SUCCESS]!",           body: "${env.JOB_NAME} - Build # ${env.BUILD_NUMBER} - SUCCESS!"  }  catch (Exception ex) {    mail from: 'noreply-jenkins@xxxxxxx.io',         to: 'tools@xxxxxxx.io',         subject: "FAILURE - [JENKINS] ${env.JOB_NAME} - Build # ${env.BUILD_NUMBER} - [FAILURE]!",         body: "${env.JOB_NAME} - Build # ${env.BUILD_NUMBER} - FAILURE (${ex.message})!"    throw ex  }}

In my Sonatype Nexus, I created a task to clean up the artifacts.enter image description here

I do not use 'Artifactory', but I believe you can create an internal task to clear it.

You can also manually remove, in the case of maven use, you can follow this example:

How do you deal with maven-3 timestamped snapshots efficiently?

I hope I helped you.


This has been fixed in the latest Artifactory Jenkins plugin.

As per the documentation, to trigger build retention when publishing build-info to Artifactory, use the following method:

buildInfo retention maxBuilds: 10buildInfo retention maxDays: 7// deleteBuildArtifacts is false by default.buildInfo retention maxBuilds: 10, maxDays: 7, doNotDiscardBuilds: ["3", "4"], deleteBuildArtifacts: true


Triggering Artifactory Build retention from a Pipeline script is planned to be supported in the coming release of the Jenkins Artifactory Plugin. See this issue:https://www.jfrog.com/jira/browse/HAP-796