Disable GitHub Image Cache for CI Build Badges
Since some time, GitHub caches Images, that are linked in Wiki-Pages or Readme files.
That’s not optimal, when you want to display current states (e.g. the Build Status of your CI Job).
To disable the Caching for a specific Image, you need to configure a proper Caching Header.
So before the Changes, you have:
$ curl -L -I https://consolving.de/jenkins/buildStatus/icon?job=de.consolving.chatlogconverter HTTP/1.1 200 OK Date: Sun, 03 Aug 2014 10:08:44 GMT Server: Jetty(8.y.z-SNAPSHOT) ETag: /static/e5920a00/success.png Expires: Sun, 01 Jan 1984 00:00:00 GMT Content-Type: image/png Content-Length: 2339 Via: 1.1 consolving.de
That means GitHub will cache the Image (for some time), although the Expires Header is set to the past.
In our case, the Jenkins CI is behind an Apache2 Server. So you need to update your Configuration.
... # Disable Cache for /jenkins/buildStatus <LocationMatch "/jenkins/buildStatus/icon*"> Header set Cache-Control "no-cache" Header set Pragma "no-cache" </LocationMatch> ...
After that, you have now some more Caching Headers set and GitHub won’t Cache your image anymore.
$ curl -L -I https://consolving.de/jenkins/buildStatus/icon?job=de.consolving.chatlogconverter HTTP/1.1 200 OK Date: Sun, 03 Aug 2014 10:13:16 GMT Server: Jetty(8.y.z-SNAPSHOT) ETag: /static/e5920a00/success.png Expires: Sun, 01 Jan 1984 00:00:00 GMT Content-Type: image/png Content-Length: 2339 Via: 1.1 consolving.de Cache-Control: no-cache Pragma: no-cache