2012-01-13 21 views
5

Estoy usando Jenkins y tengo el paso "Archivar los artefactos" al final de mis compilaciones para archivarlas en un archivo zip.¿Puede una construcción de Jenkins acceder a los artefactos archivados de sí mismo?

En lugar de utilizar este paso, me gustaría usar una secuencia de comandos para enviar los artefactos a un servidor remoto al final de la compilación. El servidor que estoy utilizando utiliza una solicitud REST API/HTTP PUT en una secuencia de comandos para cargar archivos.

Tenga en cuenta que estoy buscando acceder al artefacto creado en la misma compilación. Entonces, si estoy en la construcción n. ° 5, quiero los artefactos de la compilación n. ° 5, no de la compilación n. ° 4.

¿Hay alguna manera de acceder a este archivo zip con un script, en la misma versión en que se creó?

Necesito cargar este zip de forma remota y no quiero crear otro trabajo para hacerlo.

Respuesta

1

No hay forma de que haya encontrado acceso al paquete "Archivar los artefactos" de la compilación que lo genera. Este paso siempre ocurre último en la compilación. Acceder a la URL antes de la finalización de la compilación (durante la compilación a través de una secuencia de comandos, por ejemplo) da como resultado un archivo zip en blanco. Para evitar esta limitación, estoy haciendo un segundo trabajo de construcción vinculado para tomar el archivo zip y ejecutar mi script para implementarlo.

4

Puede instalar uno de los complementos "Publish Over..." para cargar sus artefactos al final de una compilación.

El objetivo de los plugins publican más es proporcionar un conjunto coherente de características y comportamientos al enviar construir artefactos ... en alguna parte.

Consulte también el full list of "upload" plugins para conocer otros métodos de publicación de sus artefactos.

+0

Estoy usando un script cURL para verificar en la línea de comando que puedo cargar mis artefactos. Puede que termine teniendo que hacer que este sea un trabajo por separado que se inicie solo para realizar el despliegue. ¿Hay alguna forma de usar los complementos de Publish Over para empaquetar artefactos en el zip y luego ejecutar mi script? – DonBecker

+0

Las cosas de empaquetado probablemente no están dentro del alcance de estos complementos.Sin embargo, puede crear el archivo zip como el último paso de compilación de su trabajo. –

+0

Parece que puedo tomar el archivo zip como último paso, pero termina en blanco. Esto tiene sentido ya que "Archivar los artefactos" se ejecuta por última vez en la compilación. No puedo encontrar ninguna forma de ejecutar un script en los complementos de Publicar más, así que creo que necesito crear un trabajo por separado. – DonBecker

4

Como @Christopher dijo, puede utilizar cualquiera de los Publish Over plugins en la página Jenkins plugins para cargar el artefacto a cualquiera de los

Si desea acceder al archivo zip archivado desde el interior de la construcción en sí, puede utilizar el siguiente enlace para acceder a ella:

http://<server>/job/${JOB_NAME}/lastSuccessfulBuild/artifact/<artifact name w/folder>

Por ejemplo:

  • servidor = myserver.com
  • trabajo nombre = myproject
  • artefacto = del/project.zip

La URL sería:

http://myserver.com/job/myproject/lastSuccessfulBuild/artifact/del/project.zip

EDIT: Cuestión fue cambiado. En cualquier caso, esto funcionaría para acceder al artefacto de la compilación anterior en el actual.

+0

Pero esa URL estaría accediendo a los artefactos de la * última * compilación, no la actual. De ahí mi sugerencia de usar un plugin editor al final de la compilación. –

+0

Es cierto. Sin embargo, especificó que está usando "Archivar los artefactos", que suele ser el último paso en una compilación, de ahí mi sugerencia. Pensé que necesitaba acceder al artefacto existente en cada construcción. – Sagar

+0

Christopher está en lo correcto, necesito acceder a los artefactos de la construcción en la que fueron creados. – DonBecker

Cuestiones relacionadas