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
''''''
}
}
}