¿Son posibles los comentarios en un archivo Jenkins? Si es así, ¿cuál es la sintaxis?
Estoy usando la sintaxis declarativa del pipeline.
Quiero comentar la sección "post" de abajo 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."
}
}
}
Puede utilizar un bloque (/***/) o un comentario de una sola línea (//) para cada línea. Debe utilizar "#" en el comando sh.
Comentario en bloque begin snippet: js hide: false console: true babel: false -->
/*
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."
}
}
*/
Una sola línea
// 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
'''
}
}
}
Los comentarios funcionan bien en cualquiera de las formas habituales de Java/Groovy, pero actualmente no se puede utilizar groovydoc
para procesar su Jenkinsfile
(s).
En primer lugar, groovydoc
se atraganta con los 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 en segundo lugar, por lo que puedo decir, los comentarios estilo Javadoc al comienzo de un script groovy
son ignorados. Así que aunque copies/renombres tu Jenkinsfile
a Jenkinsfile.groovy
, no obtendrás mucha salida útil.
Quiero ser capaz de usar un
/**
* Document my Jenkinsfile's overall purpose here
*/
al principio de mi archivo Jenkins. No ha habido suerte (todavía).
Sin embargo, groovydoc
*procesará las clases y métodos definidos en tu Jenkinsfile
si pasas private
al comando.