Cómo evitar repetidamente la clonación de un repository git de terceros en construcciones CI

Empecé a usar AWS CodeBuild para build nuestros proyectos almacenados en AWS CodeCommit. Nuestro proyecto se basa en varias bibliotecas de terceros, la mayoría recuperadas como Git, algunas como HTTP. Nuestro script de compilation clona / descarga y extrae las bibliotecas necesarias (de la misma forma que lo hacemos en nuestros sistemas de desarrollo para comstackciones locales). Mi preocupación es si estamos haciendo múltiples commits por día que CodeBuild está clonando / descargando repetidamente de terceros. Parece un desperdicio, no me preocupan nuestros costos / ancho de banda, pero a medida que más personas confíen en esas bibliotecas de terceros, su ancho de banda / costos boostían significativamente. Me gustaría evitar eso.

  1. ¿Es esto una preocupación, o estoy siendo muy cauteloso?
  2. ¿Qué methods tengo disponibles para evitar recurrir repetidamente a bibliotecas de terceros?

Actualmente no estamos usando los submodules de git, pero no creo que eso cambie nada.

Podría usar git clone --depth 1 --shallow-submodules para networkingucir la carga en repositorys de terceros.

Mi mejor solución es empaquetar bibliotecas de terceros al final de cada compilation, almacenarlas en S3 y search la siguiente compilation, extraerla y simplemente realizar un jit de extracción para search actualizaciones.

Una solución más limpia, aunque less elegante, sería tener un sistema de compilation separado que actualice las copys locales de esas bibliotecas para ser utilizadas por nuestros proyectos, esto evita la posibilidad de contaminación de los packages de terceros de nuestro process de compilation.

¿Alguna opción más simple?

Podría usar git clone --depth 1 --shallow-submodules para networkingucir la carga en repositorys de terceros.

También puede usar el submodule git y tomar solo el último commit del submodule, igual que usará en git clone ya que el submodule está haciendo un git clne una vez actualizado.

Existe el indicador --depth que se puede pasar al submodule.
El indicador --depth se puede usar de la misma forma que lo usa cuando clona el repository y desea clonar solo el último commit.

Agregue la opción --depth a los commands de agregar y actualizar del git submodule , que luego se pasa al command clonar.
Esto es útil cuando los submodules son enormes y no está realmente interesado en nada más que en la última confirmación.

 git submodule add --depth 1 -- <url> git submodule update --depth -- <url> 

La documentation completa se puede encontrar aquí .