2012-02-23 13 views
6

He revisado un buen número de estas discusiones sin éxito hasta el momento.Combinación de artefactos en TeamCity

Nuestro proceso de construcción (en TeamCity 6.5.5) produce dos carpetas, A y B.

Estamos pasar con velocidad actualmente la carpeta B para el despliegue (ruta artefacto. \ B => B-% build.number%. cremallera). Sin embargo, se ha decidido que la carpeta A debe ser incluido como un archivo en el zip de B. Es decir, después de la construcción, B-2.0.0.zip debe verse como:

B-2.0.0.zip 
    file 1 
    ... 
    file n 
    A.zip 
     file a1 
     ... 
     file an 

Para lograr esto, 've añadido el camino artefacto \ a => \ B \ A.zip antes de la regla postal existente para la B, por lo que nuestros caminos se ven como artefactos:..

.\A => .\B\A.zip 
.\B => .\B-%build.number%.zip 

Sin embargo, mientras se produce A.zip (I puede verlo en la carpeta B después de la compilación), no se agrega al archivo B.zip. Miré la salida de compilación y los artefactos se crearon en el orden esperado.

Francamente, estoy perplejo. Cualquier idea sería bien y verdaderamente apreciada. Podría modificar potencialmente el script de construcción para lograr esto, pero preferiría no hacerlo si fuera posible.

Gracias de antemano.

Editar (2/24/12): En futuras investigaciones, parecía que estaba corriendo en un problema con A.zip siendo creado como un archivo temporal y se movió en su lugar después fueron creados todos los artefactos.

tanto, he intentado reordenar mis caminos de artefactos de la siguiente manera:

.\B => .\B-%build.number%.zip 
.\A => .\B-%build.number%.zip\A.zip 

pensé que esto sería insertar A.zip en B.zip. En lugar de un archivo anidado, crea una carpeta llamada A.zip. ¿Acabo de ver una limitación de que TeamCity no pueda anidar archivos?

+0

Quería algo similar y no pude encontrar una buena solución que no fuera usar el script de compilación para producir un directorio con la estructura que quería . Buena suerte –

+0

Se parece cada vez más a la solución, Mike. Gracias. Es bueno saber que no soy solo yo.;) – TimW

Respuesta

2

Tiene razón, TeamCity no es compatible con esquemas de embalaje complejos para artefactos. El camino a seguir es, de hecho, agregar un paso de compilación para preparar los archivos que se publicarán como artefactos.

+0

Es una pena, pero no del todo inesperada. Gracias, Yaegor! – TimW

2

Una opción podría ser utilizar un mensaje de servicio de Teamcity para crear el primer archivo antes de que la compilación finalice.

##teamcity[publishArtifacts '.\A => .\B\A.Zip'] 

Luego tienen la ciudad de equipo de devolver el artefacto construcción en la etapa de envasado artefacto en la configuración de generación:

Algo así como:

%env.TEAMCITY_DATA_PATH%\system\artifacts\%env.TEAMCITY_PROJECT_NAME%\%env.TEAMCITY_BUILDCONF_NAME%\%env.BUILD_NUMBER%\B\A.zip => .\B-%build.number%.zip 
.\B => .\B-%build.number%.zip 
7

Al menos con la versión 9, ahora es posible para agregar varios archivos al mismo archivo comprimido haciendo algo como esto en el campo "rutas de artefactos":

.\A => myArchive.zip 
.\B => myArchive.zip 

No estoy seguro, si las subcarpetas/subarchivos se pueden crear sobre la marcha ...

+2

Consejo súper relevante. Mi caso de uso fue exactamente esto; Confirmo que esto funciona en TeamCity 9.X. – Form

+1

Las subcarpetas se pueden crear de esta manera: +: */*. Css => report.zip!/Css / – iFred

Cuestiones relacionadas