@@ -22,15 +22,17 @@ const EnvOverrideHost = "DOCKER_HOST"
2222
2323var dockerHost = machineryvars .GetEnv ("DOCKER_HOST" , "docker-host" )
2424var repositoriesToUpdate = machineryvars .GetEnv ("REPOSITORIES_TO_UPDATE" , "uselagoon" )
25- var REGISTRY = machineryvars .GetEnv ("REGISTRY" , "docker-registry.default.svc:5000" )
26- var BIP = machineryvars .GetEnv ("BIP" , "172.16.0.1/16" )
25+ var registry = machineryvars .GetEnv ("REGISTRY" , "docker-registry.default.svc:5000" )
26+ var bip = machineryvars .GetEnv ("BIP" , "172.16.0.1/16" )
2727var logLevel = machineryvars .GetEnv ("LOG_LEVEL" , "info" )
28- var REGISTRY_MIRROR = machineryvars .GetEnv ("REGISTRY_MIRROR" , "" )
28+ var registryMirror = machineryvars .GetEnv ("REGISTRY_MIRROR" , "" )
2929var pruneImagesSchedule = machineryvars .GetEnv ("PRUNE_SCHEDULE" , "22 1 * * *" )
3030var pruneDanglingSchedule = machineryvars .GetEnv ("PRUNE_DANGLING_SCHEDULE" , "22 1 * * *" )
31+ var pruneBuilderCacheSchedule = machineryvars .GetEnv ("PRUNE_BUILDER_CACHE_SCHEDULE" , "22 1 * * *" )
3132var removeExitedSchedule = machineryvars .GetEnv ("REMOVE_EXITED_SCHEDULE" , "22 */4 * * *" )
3233var updateImagesSchedule = machineryvars .GetEnv ("UPDATE_IMAGES_SCHEDULE" , "*/15 * * * *" )
3334var pruneImagesUntil = machineryvars .GetEnv ("PRUNE_IMAGES_UNTIL" , "168h" )
35+ var pruneBuilderCacheUntil = machineryvars .GetEnv ("PRUNE_BUILDER_CACHE_UNTIL" , "168h" )
3436
3537func main () {
3638 cli , err := client .NewClientWithOpts (
@@ -42,12 +44,12 @@ func main() {
4244 }
4345 defer cli .Close ()
4446
45- var command = fmt .Sprintf ("/usr/local/bin/dind /usr/local/bin/dockerd --host=tcp://0.0.0.0:2375 --host=unix:///var/run/docker.sock --bip=%s --storage-driver=overlay2 --tls=false --log-level=%s" , BIP , logLevel )
46- if REGISTRY != "" {
47- command = command + fmt .Sprintf (" --insecure-registry=%s" , REGISTRY )
47+ var command = fmt .Sprintf ("/usr/local/bin/dind /usr/local/bin/dockerd --host=tcp://0.0.0.0:2375 --host=unix:///var/run/docker.sock --bip=%s --storage-driver=overlay2 --tls=false --log-level=%s" , bip , logLevel )
48+ if registry != "" {
49+ command = command + fmt .Sprintf (" --insecure-registry=%s" , registry )
4850 }
49- if REGISTRY_MIRROR != "" {
50- command = command + fmt .Sprintf (" --registry-mirror=%s" , REGISTRY_MIRROR )
51+ if registryMirror != "" {
52+ command = command + fmt .Sprintf (" --registry-mirror=%s" , registryMirror )
5153 }
5254 var cmd = exec .Command ("sh" , "-c" , command )
5355
@@ -57,6 +59,7 @@ func main() {
5759 c := cron .New ()
5860 pruneImages (cli , c )
5961 pruneDanglingImages (cli , c )
62+ pruneBuilderCache (cli , c )
6063 removeExited (cli , c )
6164 updateImages (cli , c )
6265 c .Start ()
@@ -79,11 +82,6 @@ func pruneImages(client *client.Client, c *cron.Cron) {
7982 log .Println (err )
8083 return
8184 }
82- // prune all docker build cache images older than 7 days or what is specified in the environment variable
83- _ , buildErr := client .BuildCachePrune (context .Background (), types.BuildCachePruneOptions {Filters : ageFilter })
84- if buildErr != nil {
85- log .Println (buildErr )
86- }
8785 log .Printf ("Image prune complete: %d images deleted, %d bytes reclaimed\n " ,
8886 len (pruneReport .ImagesDeleted ), pruneReport .SpaceReclaimed )
8987 })
@@ -113,6 +111,29 @@ func pruneDanglingImages(client *client.Client, c *cron.Cron) {
113111 }
114112}
115113
114+ func pruneBuilderCache (client * client.Client , c * cron.Cron ) {
115+ _ , err := c .AddFunc (pruneBuilderCacheSchedule , func () {
116+ log .Println ("Starting builder cache prune" )
117+ ageFilter := filters .NewArgs ()
118+ ageFilter .Add ("until" , pruneBuilderCacheUntil )
119+ builderCacheOpts := types.BuildCachePruneOptions {
120+ Filters : ageFilter ,
121+ }
122+
123+ // Cleans up build cache images
124+ pruneReport , pruneErr := client .BuildCachePrune (context .Background (), builderCacheOpts )
125+ if pruneErr != nil {
126+ log .Println (pruneErr )
127+ }
128+ log .Printf ("Builder Cache prune complete: %d deleted, %d bytes reclaimed\n " ,
129+ len (pruneReport .CachesDeleted ), pruneReport .SpaceReclaimed )
130+ })
131+
132+ if err != nil {
133+ log .Printf ("Error initiating pruneBuilderCache cron: %v\n " , err )
134+ }
135+ }
136+
116137func removeExited (client * client.Client , c * cron.Cron ) {
117138 _ , err := c .AddFunc (removeExitedSchedule , func () {
118139 log .Println ("Starting removeExited" )
@@ -197,7 +218,7 @@ func updateImages(client *client.Client, c *cron.Cron) {
197218 for _ , img := range postUpdateImages {
198219 for _ , updatedImg := range updatedImages {
199220 if img .ID == updatedImg {
200- log .Println ( fmt . Sprintf ( "Updated image %s" , img .RepoTags ) )
221+ log .Printf ( "Updated image %s" , img .RepoTags )
201222 }
202223 }
203224 }
@@ -208,7 +229,7 @@ func updateImages(client *client.Client, c *cron.Cron) {
208229 } else {
209230 imgPluralize = "images"
210231 }
211- log .Println ( fmt . Sprintf ( "Update images complete | %d %s updated" , len (updatedImages ), imgPluralize ) )
232+ log .Printf ( "Update images complete | %d %s updated" , len (updatedImages ), imgPluralize )
212233 })
213234
214235 if err != nil {
0 commit comments