Jenkinsfile에서 주석이 가능합니까? 그렇다면 구문은 무엇입니까?
선언적 파이프 라인 구문을 사용하고 있습니다.
SMTP 서버가 작동 할 때까지 아래의 “게시”섹션을 주석 처리하고 싶습니다.
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: "XXXXX@gmail.com", subject:"SUCCESS: ${currentBuild.fullDisplayName}", body: "Yay, we passed."
}
failure {
mail to: "XXXXX@gmail.com", subject:"FAILURE: ${currentBuild.fullDisplayName}", body: "Boo, we failed."
}
}
}
답변
Jenkinsfile은 Java (및 C) 형식의 주석을 사용하는 그루비로 작성되었습니다.
/* this
is a
multi-line comment */
// this is a single line comment
답변
각 줄에 블록 (/ *** /) 또는 한 줄 주석 (//)을 사용할 수 있습니다. sh 명령에서 “#”을 사용해야합니다.
댓글 차단
/*
post {
success {
mail to: "XXXXX@gmail.com",
subject:"SUCCESS: ${currentBuild.fullDisplayName}",
body: "Yay, we passed."
}
failure {
mail to: "XXXXX@gmail.com",
subject:"FAILURE: ${currentBuild.fullDisplayName}",
body: "Boo, we failed."
}
}
*/
한 줄
// post {
// success {
// mail to: "XXXXX@gmail.com",
// subject:"SUCCESS: ${currentBuild.fullDisplayName}",
// body: "Yay, we passed."
// }
// failure {
// mail to: "XXXXX@gmail.com",
// 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 양식에서 잘 작동하지만 현재는 (s) 를 처리 하는 데 사용할 수 없습니다 .groovydoc
Jenkinsfile
첫째, 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
… 그리고 둘째, groovy
스크립트 시작 부분에서 Javadoc 스타일의 commments를 무시할 수있는 한 무시됩니다. 복사 그래서 경우에도 / 당신의 이름을 변경 Jenkinsfile
하는 방법에 대해 Jenkinsfile.groovy
, 당신은 훨씬 더 유용한 출력을받지 않습니다.
사용할 수 있기를 원합니다
/**
* Document my Jenkinsfile's overall purpose here
*/
Jenkinsfile의 시작 부분에 의견을 말하십시오. 그런 운은 없습니다 (아직).
groovydoc
그러나 명령에 Jenkinsfile
전달하면 정의 된 클래스와 메소드 를 처리합니다 -private
.
답변
공식 젠킨스 문서는 단지 다음과 같은 한 줄의 명령을 언급한다 :
// Declarative //
그리고 ( 참조 )
pipeline {
/* insert Declarative Pipeline here */
}
Jenkinsfile의 구문은 Groovy를 기반으로 하므로 주석에 groovy 구문 을 사용할 수도 있습니다 . 인용문:
/* a standalone multiline comment
spanning two lines */
println "hello" /* a multiline comment starting
at the end of a statement */
println 1 /* one */ + 2 /* two */
또는
/**
* such a nice comment
*/
답변
