2012-05-28 16 views
43

Tengo un gran repositorio en Git. ¿Cómo creo un trabajo en Jenkins que comprueba solo una subcarpeta del proyecto?Pagos escasos de Jenkins y Git

+2

¿Es realmente necesario añadir que la complejidad? Una vez que el repositorio se clona la primera vez, git simplemente estaría tirando nuevos objetos. A menos que tu servidor jenkins carezca de suficiente almacenamiento, simplemente clonaría todo y evitaría cualquier complejidad adicional. – wadesworld

Respuesta

42

Jenkins Git Plugin compatibilidad parches dispersos desde git-plugin 2.1.0 (abril de 2014). Necesitarás git> = 1.7.0 para esta función. Se encuentra en "Comportamientos adicionales" -> "Rutas de salida dispersas".

screenshot

Ver: JIRA JENKINS-21809

+0

Desafortunadamente, Git todavía tendría que copiar el repositorio completo localmente. Por lo tanto, es posible que no experimente ninguna mejora de velocidad para que Git obtenga los archivos del servidor. – luka5z

+5

Lamentablemente todavía lo verifica con la "estructura de ruta" original intacta, por lo que no es como si realmente comprobara "un directorio" simplemente pasa a llenar un solo directorio, FWIW – rogerdpack

+1

Bastante y antiguo, pero ¿cómo definimos un nombres de subdirectorio con espacio. Quiero verificar "folder/to/include/directory withSpace" .. – OK999

20

Puede usar la característica sparse checkout de Git. Tenga en cuenta que Git aún clona todo el repositorio en el disco local. Eso no está mal, sin embargo, porque está comprimido.

  1. Cree un nuevo trabajo en Jenkins, configure el repositorio de Git en la sección Gestión de código fuente.
  2. Cree el proyecto. Esto clonará todo el repositorio en el disco local.
  3. Abra la carpeta del espacio de trabajo de los proyectos, elimine todo lo que haya, excepto la carpeta .git.
  4. Abrir el shell Git para la carpeta de espacio de trabajo del proyecto. Habilitar escasa-checkout: árbol de trabajo

    git config core.sparsecheckout true 
    
  5. Actualización:

    git read-tree -mu HEAD 
    
  6. Crear sparse-checkout archivo en la carpeta .git/Información. Añadir camino hacia la sub-carpeta que desea para la obtención de dicho archivo, al igual que (nota barra diagonal):

    folder/to/include/ 
    
  7. construir el proyecto de nuevo. Esta vez, solo una subcarpeta debería aparecer en la carpeta del espacio de trabajo.

+0

¿Tienes que ejecutar esos comandos para cada trabajo? –

+1

@RuudLenders Sí, debe hacerlo por cada trabajo que desee para pagar una sola subcarpeta. –

+0

¿No debería el paso 5'git read-tree -mu HEAD' seguir el paso 6? Por lo que puedo seguir, primero debes decirle a Git qué archivos debería ver (paso 6) y luego leer la información del árbol en el índice. – borisdiakur

1

usted podría tener un paso a medida que sólo tiene que utilizar

git checkout your-branch -- the/desired/path anthother/desired/path 

Para desactivarla sólo podría rm -rf la carpeta de trabajo y volver a crearla con mkdir workingdir. Para ello sería necesario que especifique esta opción en el nivel git del comando anterior:

git --working-dir="/path/to/workingdir" checkout your-branch -- the/desired/path anthother/desired/path 

Todo esto depende de qué tan bien conoce Jenkins.

+0

El problema es que Jenkins normalmente usa un complemento para obtener el código fuente y el complemento Git no le permite cambiar el comando para el pago. –

+0

Supongo que escribir o modificar un complemento existente sería demasiado problemático. –