in riff-raff/app/housekeeping/ArtifactHousekeeping.scala [182:232]
def housekeepArtifacts(now: DateTime): Int = {
if (config.housekeeping.tagOldArtifacts.enabled) {
log.info("Running housekeeping")
val projectNames =
ArtifactHousekeeping.getProjectNames(s3Client, artifactBucketName)
val taggedBuilds = projectNames.map { name =>
log.info(s"Housekeeping project '$name'")
val buildIdsForProject = ArtifactHousekeeping
.getBuildIds(s3Client, artifactBucketName, name)
.toSet
ArtifactHousekeeping.getBuildIdsToKeep(
deployments,
name,
config.housekeeping.tagOldArtifacts.numberToScan,
config.housekeeping.tagOldArtifacts.numberToKeep
) match {
case Left(_) =>
log.warn(
s"Failed to get list of builds to keep for project $name - not housekeeping this project"
)
0
case Right(buildIdsToKeep) if buildIdsToKeep.nonEmpty =>
val buildIdsToKeepSet = buildIdsToKeep.toSet
log.info(
s"Keeping ${buildIdsToKeepSet.size} builds of $name (${buildIdsToKeepSet.toList.sorted})"
)
val missingBuilds = buildIdsToKeepSet -- buildIdsForProject
if (missingBuilds.nonEmpty) {
log.error(
"Some builds we wanted to keep were not found, possible something is awry. Skipping tagging."
)
0
} else {
val buildsToTag = buildIdsForProject -- buildIdsToKeepSet
tagBuilds(s3Client, artifactBucketName, name, buildsToTag, now)
}
case Right(_) =>
log.error(
s"List of builds to keep for project $name was empty, possible something is awry. Skipping tagging."
)
0
}
}
val numberOfTaggedBuilds = taggedBuilds.sum
log.info(s"Tagged $numberOfTaggedBuilds builds for deletion")
numberOfTaggedBuilds
} else {
log.info("Artifact housekeeping not enabled - skipping")
0
}
}