Jenkinsファイルでコメントは可能ですか?もしそうなら、構文は何ですか?
宣言的パイプライン構文を使用しています。
私のSMTPサーバが動作するまで、私は下記の "post"セクションをコメントアウトしたいです。
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."
}
}
}
Jenkinsファイルは、Java(およびC)形式のコメントを使用するgroovyで書かれています。
/* this
is a
multi-line comment */
// this is a single line comment
各行にブロック(/ *** /)または単一行コメント(//)を使用できます。 shコマンドでは "#"を使うべきです。
ブロックコメント
/*
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."
}
}
*/
単一行
// 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."
// }
// }
'sh'コマンドにコメントを入れる
stage('Unit Test') {
steps {
ansiColor('xterm'){
sh '''
npm test
# this is a comment in sh
'''
}
}
}
コメントは通常のJava/Groovyフォームのいずれでも正常に機能しますが、できない現在groovydoc
を使用してJenkinsfile
(s)を処理します。
最初に、groovydoc
は、拡張子のないファイルですばらしいエラーが発生します
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
...そして2番目に、groovy
スクリプトの開始時にJavadocスタイルのコメントを無視できる限りです。したがって、Jenkinsfile
をJenkinsfile.groovy
にコピー/名前を変更しても、それほど有用な出力は得られません。
使用できるようにしたい
/**
* Document my Jenkinsfile's overall purpose here
*/
jenkinsfileの冒頭でコメントします。そのような運は(まだ)ありません。
groovydoc
will-private
をコマンドに渡す場合、Jenkinsfile
で定義されているクラスとメソッドを処理します。