remote plugin performing for failed error configurar con git jenkins

git - performing - plugins jenkins io



característica avanzada de git jenkins (1)

Según lo que puedo ver del método GitSCM.checkout , la fusión comienza primero con un pago y, si la fusión falla, restaura la rama candidata con otra salida:

// checkout origin/blah ObjectId target = git.revParse(mergeOptions.getRemoteBranchName()); git.checkoutBranch(paramLocalBranch, target.name()); try { git.merge(revToBuild.getSha1().name()); } catch (Exception ex) { // We still need to tag something to prevent // repetitive builds from happening - tag the // candidate // branch. git.checkoutBranch(paramLocalBranch, revToBuild.getSha1().name()); [... tag applied ...] buildData.saveBuild(new Build(revToBuild, buildNumber, Result.FAILURE)); throw new AbortException("Branch not suitable for integration as it does not merge cleanly"); }

Por lo tanto, no creo que una fusión fallida tenga consecuencias en versiones posteriores.

Nuestro equipo usa jenkins y git. Estamos buscando implementar la característica avanzada del plugin git que permite compilaciones previas antes de enviar commits al repositorio bendecido. Ver https://wiki.jenkins-ci.org/display/JENKINS/Git+Plugin#GitPlugin-AdvancedFeatures

Sin embargo, estoy teniendo problemas para comprender todo el proceso.

Aquí hay un extracto:

Configure su proyecto Jenkins y deje el campo ''branch'' en el Git SCM en blanco. Esto hará que Jenkins considere cualquier cambio en cualquier rama para la construcción.

Luego, elija un nombre de rama particular como el objetivo de integración en la sección "Avanzado" (por ejemplo, "maestro" o "estable") y seleccione "Fusionar antes de compilación".

Seleccione ''Empujar etiquetas GIT de vuelta al repositorio de origen'' de las acciones posteriores a la construcción (esto es necesario para actualizar su repositorio git centralizado con los resultados de la compilación).

Ahora, los desarrolladores nunca deben comprometerse directamente con su rama de integración (el ''maestro'' o ''estable''). En su lugar, deben usar ramas de características o crear nuevas ramas remotas en la confirmación (por ejemplo: "git push origen HEAD: refs / heads / myNewFeature"). También puede configurar su repositorio de GIT para que solo acepte confirmaciones en la rama de integración de Jenkins.

Ya terminaste Los commits ahora se deben fusionar automáticamente con la rama de integración (fallarán si no se combinan limpiamente) y se generarán. Si la compilación tiene éxito, el resultado de la fusión se retrotraerá al repositorio remoto de git.

Lo que entiendo es,

  1. Los desarrolladores crean ramas remotas, de las cuales jenkins extraerá
  2. jenkins fusionará la sucursal con su rama de integración y construcción
  3. Si la construcción tiene éxito, la fusión se llevará a blessed-repo / master.

La pregunta es si la construcción falla, ¿cuál es el estado de la rama de integración? Solo supondría que de alguna manera se revierte a la confirmación antes de la fusión. De lo contrario, la rama de integración mantendría la fusión que rompió la construcción, por lo que es imposible fusionar y construir otras ramas.

¿Es esto cierto? Lamentablemente, no está claro desde la wiki.

Además, ¿alguien sabe de un ejemplo que pueda ver?