diff --git a/Jenkinsfile b/Jenkinsfile
index 3803e61..c3b64e7 100644
--- a/Jenkinsfile
+++ b/Jenkinsfile
@@ -49,7 +49,7 @@
             }
         }
         if (!fileExists("bin")) {
-            println("Downloading packer")
+            common.infoMsg("Downloading packer")
             sh "mkdir bin"
             dir("bin") {
                 sh "wget -O ${PACKER_ZIP} ${PACKER_URL}"
@@ -139,7 +139,7 @@
                     imageBuilds["build${i}"]={
                         if (SKIP_UPLOAD != 'true') {
                             sh "md5sum ${imageName} > ${imageName}.md5"
-                            println("Uploading image " + imageName)
+                            common.infoMsg("Uploading image " + imageName)
                             def uploadImageStatus = sh(script: "curl -f -T ${imageName} ${UPLOAD_URL}", returnStatus: true)
                             def uploadMd5Status = sh(script: "curl -f -T ${imageName}.md5 ${UPLOAD_URL}", returnStatus: true)
 
@@ -167,7 +167,7 @@
                                 def deleteCount = cleanupImages.size() - Integer.parseInt(CLEANUP_KEEP)
                                 if (deleteCount > 0) {
                                     for (int j = 0; j < deleteCount; j++) {
-                                        println(String.format("Deleting image %s from aptly", cleanupImages[j]))
+                                        common.infoMsg(String.format("Deleting image %s from aptly", cleanupImages[j]))
                                         sh "curl -f -X DELETE ${UPLOAD_URL}" + cleanupImages[j]
                                         sh "curl -f -X DELETE ${UPLOAD_URL}" + cleanupImages[j] + ".md5"
                                         cleanedImages.add(cleanupImages[j])
@@ -178,8 +178,8 @@
                     }
                 }
                 parallel imageBuilds
-                println(String.format("Uploaded %s images with names %s", uploadedImages.size(), uploadedImages.toString()))
-                println(String.format("Cleaned %s images with names %s", cleanedImages.size(), cleanedImages.toString()))
+                common.infoMsg(String.format("Uploaded %s images with names %s", uploadedImages.size(), uploadedImages.toString()))
+                common.infoMsg(String.format("Cleaned %s images with names %s", cleanedImages.size(), cleanedImages.toString()))
             }
         }
     } catch (Throwable e) {
