ci/cd - Кеширование зависимостей при сборке maven

Thank you for reading this post, don't forget to subscribe!

Есть про­ект кото­рый при сбор­ке исполь­зу­ет maven и выка­чи­ва­ет зави­си­мо­сти. Костыль­ный метод для запи­хи­ва­ния зави­си­мо­стей в кон­тей­нер сборки:

Име­ет­ся Dockerfile кото­рый соби­ра­ет наш проект:

 

 

 

Это муль­ти­стейдж сбор­ка, на выхо­де полу­ча­ем лег­ко­вес­ный кон­тей­нер, поэто­му все ска­чан­ный на пер­вом эта­пе зави­си­мо­сти не вытащить.
cache-maven/ - это дирек­то­рия в корне про­ек­та, в неё надо будет под­ки­ды­вать зависимости

Далее у нас есть вто­рой докер­файл с помо­щью кото­ро­го будет про­хо­дить пер­вый этап сбор­ки толь­ко для того что­бы выка­чать все зависимости

cat dockerfile2

 

 

 

А даль­ше начи­на­ет­ся косты­ле­ние в ci/cd
cat .gitlab-ci.yml

 

 

 

Осталь­ную часть не вно­шу так как она в дан­ном опи­са­нии без надобности.

======================================================================

Дру­гой вари­ант под­тя­ги­ва­ния кэша это исполь­зо­ва­ние пла­ги­на кото­рый на осно­ве pom.xml выка­чи­ва­ет все зависимости.
Dockerfile выгля­дит сле­ду­ю­щим образом:

 

 

Запус­ка­ем билд как обычно
Зави­си­мо­сти выка­ча­ют­ся пер­вы­ми и если далее pom.xml изме­нять не будут то эти же слои кон­тей­не­ра вме­сте с зави­си­мо­сти будут исполь­зо­вать­ся в после­ду­ю­щих пересборках.