ver tag remove modificados log archivos git hudson

modificados - git remove tag



Usa Hudson para construir un commit de git especĂ­fico (7)

Tengo un servidor de compilación hudson. El código fuente es administrado por un repositorio git. Para cada compilación, se revisa y compila 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 parámetros que se pueden establecer. Primero "nombre del repositorio", 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?


Al igual que la documentación dice:

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


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

git pull git checkout <commit version>


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


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


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.


Solo quiero que this 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 propiedades de Git SCM establece tus propiedades de repositorio.
  4. En Git SCM, en el párrafo Sucursales para compilar el tipo ${COMMIT} que es la referencia al parámetro de trabajo y se resolverá durante la compilación.

Eso es todo, inicia la construcción y en el registro 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 credentials Fetching upstream changes from ssh://your-repo.git using GIT_SSH to set credentials Checking out Revision af63e2102b65953316e512c0bb659578bb143a33 (detached)

Tenga en cuenta que hay otras formas 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.


Una solución alternativa sería:

  • configura el complemento Git para construir una rama especial " build_br ".
  • restablecer la rama build_br a la confirmación esperada
  • empujar esa rama 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 repositorio remoto ")

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