Pregunta

Estoy configurando el trabajo de Jenkins para cargar archivos desde Subversion a SFTP. Publicar a través de SSH Está funcionando bastante bien, pero carga todos los archivos en cada compilación.

Para algunos proyectos tenemos miles de archivos y la carga cuesta más de 1 hora, por lo que esa no es una opción.

¿Alguien puede sugerir una forma de cargar sólo los archivos modificados en la última revisión?

¿Fue útil?

Solución

Puedes usar Complemento de subversión para sondear cambios de SVN y ejecutar un trabajo que no haga nada en particular.llamémoslo Su trabajo de votación.Luego llame a la API de Jenkins a través de http de esta manera:

http://[jenkins_server]/api/xml?depth=2&xpath=/hudson/job[name='YourPollingJob']/build[id='BUILD_ID']/changeSet

dónde BUILD_ID es el ID de compilación real del trabajo que acaba de ejecutar (el formato habitual es algo así como 2012-02-21_16-15-49).Examina el resultado.Tenga en cuenta que toda la información sobre los archivos que han cambiado desde la compilación anterior está ahí; solo necesita analizarla.

Entonces ahora puedes hacer lo siguiente: Su trabajo de votación llamará a otro trabajo - llamémoslo Copiartrabajo - y pasarle su BUILD_ID como parámetro (a través del Complemento de activación parametrizado;asegúrate de llamar Copiartrabajo como un paso posterior a la compilación, no como un paso de compilación). Copiartrabajo Luego consultará a Jenkins a través de http (como se indicó anteriormente, la mejor manera es hacerlo a través de wget), analiza los resultados y haz la copia.

Puedes hacerlo todo en un solo trabajo, pero es un poco más complicado y difícil de depurar.

Además, probablemente sea prudente copiar todo el repositorio una vez al día (todas las noches).

Otros consejos

Puede mantener esos archivos en un repositorio separado.Parece que un VCS distribuido como mercurial o git sería lo mejor para eso en su caso.Puede configurarlo en el espacio de trabajo y agregar un paso de compilación para confirmar los archivos modificados y enviar el compromiso al servidor donde desea publicarlo (lo que debería funcionar siempre que no elimine el espacio de trabajo o construya sobre variosmáquinas) o agregue pasos adicionales para clonar / extraer el repositorio con los artefactos del servidor en el que los mantiene.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top