Usa Hudson para build un commit de git específico

Tengo un server de compilation hudson. El código fuente es administrado por un repository git. Para cada compilation, se revisa y comstack la última versión. Ahora me gustaría decirle a Hudson que no utilice la última versión, sino una versión anterior del código (especificada por mí).

En Hudson tengo dos parameters que se pueden establecer. Primero "nombre del repository", con el valor por defecto "origen" y el segundo refspec con valor +refs/heads/*:refs/remotes/origin/* refspec +refs/heads/*:refs/remotes/origin/* . Intenté un poco sobre algo como origin/[commitid] o +refs/heads/*:refs/remotes/origin/[commitid] origin/[commitid] +refs/heads/*:refs/remotes/origin/[commitid] . Pero nada funcionó como se esperaba.

Creo que tuve que usar un trabajo parametrizado para poder asignar el parámetro commit para el trabajo.

¿Cómo puedo decirle a Hudson que use una confirmación específica en lugar de la última?

Solo quiero que esta respuesta sea más clara. Cómo hacer su trabajo para pagar un compromiso específico, paso a paso:

  1. Agregue un parámetro de cadena a su trabajo con nombre, permita que sea COMMIT en mi ejemplo.
  2. Elija Git como SCM (proporcionado por Jenkins Git plugin ).
  3. En las properties de Git SCM establece tus properties de repository.
  4. En Git SCM, en el párrafo Sucursales para comstackr el tipo ${COMMIT} que es la reference al parámetro de trabajo y se resolverá durante la compilation.

Eso es todo, inicia la construcción y en el logging verás algo como esto:

 Cloning the remote Git repository Cloning repository ssh://your-repo.git Fetching upstream changes from ssh://your-repo.git using GIT_SSH to set cnetworkingentials Fetching upstream changes from ssh://your-repo.git using GIT_SSH to set cnetworkingentials Checking out Revision af63e2102b65953316e512c0bb659578bb143a33 (detached) 

Tenga en count que hay otras forms de configurar la variable de entorno antes de la salida de SCM, es decir, usar el Prepare environment for the run paso de Prepare environment for the run desde el complemento EnvInject (incluso podría usar Groovy para esto).

Además, si no ves las opciones de las que estoy hablando o no funcionan, asegúrate de tener una nueva versión de un complemento de Git. En mi caso, es 2.2.0.

Puede usar el parámetro de bifurcación de jenkins-git-plugin para definir una identificación de confirmación específica.

Jenkins solo realizará el pago y no el jefe de una sucursal.

En "Pasos previos" intente agregar "Ejecutar shell" y agregue:

  git pull git checkout <commit version> 

Una solución alternativa sería:

  • configura el complemento Git para build una twig especial " build_br ".
  • restablecer la twig build_br a la confirmación esperada
  • empujar esa twig build_br al monitor repo remoto por Jenkins o Hudson (que sería una push --force , como se ilustra en " git reset --hard y un repository remoto ")

De esa forma, build esa twig build_br significaría build una confirmación específica, y la GIT_COMMIT se establecerá correctamente.
No se debe realizar ningún desarrollo en esa twig especial, ya que se restablece periódicamente a cualquier compromiso que necesite build.

Puede configurar su trabajo Hudson para build una sucursal específica. Luego puede presionar cualquier cambio que desee que Hudson cree en esa twig.

Al igual que la documentation dice:

git plugin branch configure

Ingrese su identificación de commit a la configuration "Branches to build".

No estoy seguro acerca de Hudson, pero el plugin Git de Jenkins tiene un button "Avanzado …" a la derecha justo arriba del campo "Navegador de repository". Al hacer clic allí, se muestran muchas opciones adicionales, una de ellas es "Pagar / fusionar a la sucursal local (opcional)". Su text de ayuda dice "Si se da, revise la revisión para build como HEAD en esta twig. Tenga en count que esto no ha sido probado con submodules", por lo que parece ser lo que tiene en mente.