tutorial example jenkins groovy comments jenkins-pipeline

example - ¿Se pueden agregar comentarios a un archivo Jenkins?



jenkinsfile docker (3)

¿Son posibles los comentarios en un archivo Jenkins? Si es así, ¿cuál es la sintaxis?

Estoy usando la sintaxis de canalización declarativa.

Quiero comentar la sección "publicación" a continuación hasta que mi servidor SMTP esté funcionando.

pipeline { agent { label ''docker-build-slave'' } environment { IMAGE = ''registry.gitlab.com/XXXXX/bible-server'' DOCKER_REGISTRY_CREDENTIALS = credentials(''DOCKER_REGISTRY_CREDENTIALS'') } options { timeout(10) } stages { stage(''Test'') { steps { sh ''yarn'' sh ''npm test'' } } stage(''Build'') { when { branch ''*/master'' } steps { sh ''docker login -u ${DOCKER_REGISTRY_CREDENTIALS_USR} -p ${DOCKER_REGISTRY_CREDENTIALS_PSW} registry.gitlab.com'' sh ''docker build -t ${IMAGE}:${BRANCH_NAME} .'' sh ''docker push ${IMAGE}:${BRANCH_NAME}'' } } stage(''Deploy'') { when { branch ''*/master'' } steps { echo ''Deploying ..'' } } } post { success { mail to: "[email protected]", subject:"SUCCESS: ${currentBuild.fullDisplayName}", body: "Yay, we passed." } failure { mail to: "[email protected]", subject:"FAILURE: ${currentBuild.fullDisplayName}", body: "Boo, we failed." } } }


El Jenkinsfile está escrito en groovy que usa la forma de comentarios Java (y C):

/* this is a multi-line comment */ // this is a single line comment


Los comentarios funcionan bien en cualquiera de los formularios habituales de Java / Groovy, pero actualmente no puede usar groovydoc para procesar sus Jenkinsfile .

Primero, groovydoc ahoga en archivos sin extensiones con el maravilloso error

java.lang.reflect.InvocationTargetException at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.codehaus.groovy.tools.GroovyStarter.rootLoader(GroovyStarter.java:109) at org.codehaus.groovy.tools.GroovyStarter.main(GroovyStarter.java:131) Caused by: java.lang.StringIndexOutOfBoundsException: String index out of range: -1 at java.lang.String.substring(String.java:1967) at org.codehaus.groovy.tools.groovydoc.SimpleGroovyClassDocAssembler.<init>(SimpleGroovyClassDocAssembler.java:67) at org.codehaus.groovy.tools.groovydoc.GroovyRootDocBuilder.parseGroovy(GroovyRootDocBuilder.java:131) at org.codehaus.groovy.tools.groovydoc.GroovyRootDocBuilder.getClassDocsFromSingleSource(GroovyRootDocBuilder.java:83) at org.codehaus.groovy.tools.groovydoc.GroovyRootDocBuilder.processFile(GroovyRootDocBuilder.java:213) at org.codehaus.groovy.tools.groovydoc.GroovyRootDocBuilder.buildTree(GroovyRootDocBuilder.java:168) at org.codehaus.groovy.tools.groovydoc.GroovyDocTool.add(GroovyDocTool.java:82) at org.codehaus.groovy.tools.groovydoc.GroovyDocTool$add.call(Unknown Source) at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:48) at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:113) at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:125) at org.codehaus.groovy.tools.groovydoc.Main.execute(Main.groovy:214) at org.codehaus.groovy.tools.groovydoc.Main.main(Main.groovy:180) ... 6 more

... y segundo, hasta donde puedo decir, los comentarios al estilo Javadoc al comienzo de un script groovy son ignorados. Entonces, incluso si copia / cambia el nombre de su Jenkinsfile a Jenkinsfile.groovy , no obtendrá resultados muy útiles.

Quiero poder usar un

/** * Document my Jenkinsfile''s overall purpose here */

comentar al comienzo de mi Jenkinsfile. No hay tanta suerte (todavía).

groovydoc , groovydoc procesará las clases y los métodos definidos en su Jenkinsfile si pasa -private al comando.


Puede usar el bloque (/ *** /) o el comentario de una sola línea (//) para cada línea. Debe usar "#" en el comando sh.

Bloquear comentario

/* post { success { mail to: "[email protected]", subject:"SUCCESS: ${currentBuild.fullDisplayName}", body: "Yay, we passed." } failure { mail to: "[email protected]", subject:"FAILURE: ${currentBuild.fullDisplayName}", body: "Boo, we failed." } } */

Linea sola

// post { // success { // mail to: "[email protected]", // subject:"SUCCESS: ${currentBuild.fullDisplayName}", // body: "Yay, we passed." // } // failure { // mail to: "[email protected]", // subject:"FAILURE: ${currentBuild.fullDisplayName}", // body: "Boo, we failed." // } // }

Comentario en el comando ''sh''

stage(''Unit Test'') { steps { ansiColor(''xterm''){ sh '''''' npm test # this is a comment in sh '''''' } } }