wow titulo leeeeeeeeeeeeeroy jenkins jenkins-pipeline

jenkins - titulo - Ignorar el fallo en el paso de compilación de la tubería



leeeeeeeeeeeeeroy ?] wow (3)

Con el plugin jenkins build flow esto fue posible:

ignore(FAILURE){ build( "system-check-flow" ) }

¿Cómo hacer esto con la sintaxis declarativa Pipeline?


En la nueva tubería, puede usar try-catch para lograr esto.

node{ try{ build job: ''system-check-flow'' } catch (err){ echo "system-check-flow failed" } try{ build job: ''job2'' } catch (err){ echo "job2 failed" } }

Aquí se construirá el trabajo ''system-check-flow''. Si falla, detectará el error, ignorarlo y luego continuar con la compilación ''job2''



Para ignorar un paso fallido en la canalización declarativa, básicamente tiene dos opciones:

  1. Utilice el paso de script y el bloque try-catch (similar a la proposición anterior de R_K pero en estilo declarativo)

stage(''someStage'') { steps { script { try { build job: ''system-check-flow'' } catch (err) { echo err } } echo currentBuild.result } }

  1. Utilice catchError

stage(''someStage'') { steps { catchError { build job: ''system-check-flow'' } echo currentBuild.result } }

En ambos casos, la compilación no se anulará tras la excepción en el build job: ''system-check-flow'' . En ambos casos se ejecutará el paso de echo (y cualquier otro siguiente).

Pero hay una diferencia importante entre estas dos opciones. En el primer caso, si la sección de try genera una excepción, el estado general de la compilación no se modificará (por lo tanto echo currentBuild.result => SUCCESS ). En el segundo caso, su compilación general fallará (por lo tanto echo currentBuild.result => FAILURE ).

Esto es importante porque siempre puede fallar la compilación general en el primer caso (configurando currentBuild.result = ''FAILURE'' ) pero no puede reparar la compilación en la segunda opción ( currentBuild.result = ''SUCCESS'' no funcionará).