steps pipelines example groovy jenkins-pipeline

groovy - pipelines - jenkinsfile parameters



¿Cómo crear métodos en el pipeline declarativo de Jenkins? (4)

En jenkins scripted pipeline, podemos crear métodos y llamarlos.

¿Es posible en el oleoducto declarativo de Jenkins? ¿Y cómo?


Esto funcionó para mí. Se puede ver con la interfaz gráfica de usuario de Blue Ocean, pero cuando edito con la interfaz gráfica de usuario de Blue Ocean, se eliminan los métodos "def showMavenVersion (String a)".

pipeline { agent any stages { stage(''build'') { agent any steps { script { showMavenVersion(''mvn version'') } } } } } def showMavenVersion(String a) { bat ''mvn -v'' echo a }


Puedes crear una función genial como esta y guardarla en tu git que debería configurarse como biblioteca administrada (configúrala también en jenkins):

/path/to/repo-shared-library/vars/sayHello.groovy:

Contenido:

def call(String name = ''human'') { echo "Hello, ${name}." }

Puede llamar a este método en su canalización utilizando:

@Library(''name-of-shared-library'')_ pipeline { agent any stages { stage(''test'') { steps { sayHello ''Joe'' } } } }

Salida:

[Pipeline] echo Hello, Joe.

Puede reutilizar las funciones existentes que mantiene en su biblioteca.


También puede tener archivos groovy separados con todas sus funciones (solo para mantener las cosas estructuradas y limpias), que puede cargar para archivar con canalización:

JenkinsFile.groovy

Map modules = [:] pipeline { agent any stages { stage(''test'') { steps { script{ modules.first = load "first.groovy" modules.first.test1() modules.first.test2() } } } } }

primero.groovy

def test1(){ //add code for this method } def test2(){ //add code for this method } return this


Versiones más recientes de las tuberías declarativas son compatibles con esto, mientras que esto no era posible antes (~ mediados de 2017). Simplemente puede declarar funciones como lo esperaría de un script maravilloso:

pipeline { agent any stages { stage(''Test'') { steps { whateverFunction() } } } } void whateverFunction() { sh ''ls /'' }