diff --git a/jenkins/lib/src/build/bazel/ci/JenkinsUtils.groovy b/jenkins/lib/src/build/bazel/ci/JenkinsUtils.groovy
index f917be1..ea25d77 100644
--- a/jenkins/lib/src/build/bazel/ci/JenkinsUtils.groovy
+++ b/jenkins/lib/src/build/bazel/ci/JenkinsUtils.groovy
@@ -91,6 +91,26 @@
     return null
   }
 
+  /** Returns the URL of the console for a job run */
+  static def getConsoleUrl(RunWrapper run) {
+    return "${run.absoluteUrl}console"
+  }
+
+  /** Returns the URL of the blue ocean view for a job run */
+  @NonCPS
+  static def getBlueOceanUrl(RunWrapper run) {
+    def name = java.net.URLEncoder.encode(run.fullProjectName, "UTF-8")
+    def url = new URL(run.absoluteUrl)
+    def path = "/blue/organizations/jenkins/${name}/detail/${run.projectName}/${run.number}/pipeline/"
+    return new URL(url.protocol, url.host, url.port, path).toString()
+  }
+
+  /** Returns the URL to the small icon for a run */
+  @NonCPS
+  static def getSmallIconUrl(RunWrapper run) {
+    return "${Jenkins.RESOURCE_PATH}/images/16x16/${run.rawBuild.getIconColor()}.png"
+  }
+
   /**
    * A utility method that look for an artifact matching a pattern in upstream
    * builds.
diff --git a/jenkins/lib/vars/gerritReview.groovy b/jenkins/lib/vars/gerritReview.groovy
index 7e92f76..cd1064d 100644
--- a/jenkins/lib/vars/gerritReview.groovy
+++ b/jenkins/lib/vars/gerritReview.groovy
@@ -26,7 +26,8 @@
   stage("Start Gerrit review") {
     echo "Reviewing change ${url} (${branch})"
     gerrit.addReviewer(changeNum)
-    gerrit.comment(changeNum, branch, "Starting build at ${currentBuild.getAbsoluteUrl()}")
+    gerrit.comment(changeNum, branch,
+		   "Starting build at ${JenkinsUtils.getBlueOceanUrl(currentBuild)}")
   }
   def config = [gerritBuild: currentBuild]
   try {
@@ -37,6 +38,6 @@
     def verified = result == "SUCCESS" ? "+" : "-"
     echo "Setting ${verified}Verified to change ${url} after build returned ${result}"
     gerrit.review(changeNum, branch, result == "SUCCESS" ? 1 : -1,
-                  "Build ${config.gerritBuild.getAbsoluteUrl()} finished with status ${result}")
+                  "Build ${JenkinsUtils.getBlueOceanUrl(config.gerritBuild)} finished with status ${result}")
   }
 }
diff --git a/jenkins/lib/vars/reportAB.groovy b/jenkins/lib/vars/reportAB.groovy
index 9b61e51..1476e0a 100644
--- a/jenkins/lib/vars/reportAB.groovy
+++ b/jenkins/lib/vars/reportAB.groovy
@@ -19,11 +19,10 @@
   if (run == null) {
     return "unkown status"
   }
-  def consoleUrl = "${run.absoluteUrl}console"
-  def name = java.net.URLEncoder.encode(run.fullProjectName, "UTF-8")
-  def runUrl = "/blue/organizations/jenkins/${name}/detail/${run.projectName}/${run.number}/pipeline/"
-  def resultImg = "${Jenkins.RESOURCE_PATH}/images/16x16/${run.rawBuild.getIconColor()}.png"
-  return "<a href=\"${consoleUrl}\"><img src=\"${resultImg}\"/></a> <a href=\"${runUrl}\">#${run.number}</a>"
+  def console = JenkinsUtils.getConsoleUrl(run)
+  def url = JenkinsUtils.getBlueOceanUrl(run)
+  def icon = JenkinsUtils.getSmallIconUrl(run)
+  return "<a href=\"${console}\"><img src=\"${icon}\"/></a> <a href=\"${url}\">#${run.number}</a>"
 }
 
 @NonCPS
