Wir haben einen lokalen S3 Cache, der auf allen unseren Runnern zur Verfügung steht. Hiermit können die Jobs in der CI stark beschleunigt werden. Insbesondere, wenn viele externe Quellen runtergeladen werden.
Offizielle Gitlab Doku zum Caching: https://docs.gitlab.com/ee/ci/caching/
Kurzfassung: in der '.gitlab-ci.yml' den Cache definieren:
cache: paths: - target - .m2 untracked: true
Hier wird z.b. das Verzeichnis .m2 und target, sowie alle „untracked“ Dateien im build Directory gecached.
Es können nur Dateien im Buildverzeichnis gecached werden und das soll leider auch nicht geändert werden (https://gitlab.com/gitlab-org/gitlab-runner/issues/327). Dadurch muss man für diverse Tools/Frameworks etwas tricksen, da diese standardmäßig die Daten im $HOME
ablegen.
Workarounds für Bower, Npm und Composer sind hier zu finden: https://gitlab.com/gitlab-org/gitlab-runner/issues/327#note_17810980 Für Clojure: https://stackoverflow.com/questions/12579335/leiningen-how-to-customize-the-location-of-the-m2-folder
Der Cache legt die Daten auf dem S3 in einem Ordner mit der ProkektID ab. Wenn man also diverse branches nutzt, sollte man einen „key“ mitgeben (kann man auch mit Variablen vom GitLab füttern), falls diese sich den Cache nicht teilen sollen.