Bir Jenkinsfile'a yorum eklenebilir mi?


177

Jenkins dosyasında yorum yapmak mümkün mü? Öyleyse, sözdizimi nedir?

Bildirici ardışık düzen sözdizimi kullanıyorum.

SMTP sunucum çalışana kadar aşağıdaki "yayın" bölümüne yorum yapmak istiyorum.

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."
    }
  }
}

2
Jenkinsfiles hakkında böyle bir dil sorunuz olduğunda, bunların çoğunlukla GROOVY komut dosyaları olduğunu unutmayın. Bu nedenle, "Jenkinsfile" yerine "groovy" anahtar kelimesini eklerseniz daha fazla sonuç bulabilirsiniz.
Raúl Salinas-Monteagudo

Yanıtlar:


285

Jenkinsfile, Java (ve C) yorum biçimini kullanan harika bir şekilde yazılmıştır:

/* this
   is a
   multi-line comment */

// this is a single line comment

3
Bir sh bölümünün içindeki bir jenkinsfile üzerinde bildirici boru hattı kullanıyorum ve başarısız, belki bir blok düzeyinde çalışır. pipeline { ... stage('Set Tagging') { steps { sh ''' echo "env.m_time='$m_time'" > ${params_file} echo "env.m_comp_tag='${BRANCH_NAME}_${m_time}_${BUILD_NUMBER}'" >> ${params_file} /* echo "env.docker_ws='/usr/local/lib/node_modules/${repo}'" >> ${params_file} */ ''' < / bash izinleri hatasıyla sonuçlanıyor
Chen

6
Bir shbölümün içinde, kabuk yorum karakterini kullanmanız gerekir:#
BMitch

18

Her satır için blok (/ *** /) veya tek satırlı yorum (//) kullanabilirsiniz. Sh komutunda "#" kullanmalısınız.

Yorumu engelle

/*  
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."
    }
  }
*/

Tek satır

// 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' komutunda yorum yap

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


1

Her zamanki Java / Groovy formlardan herhangi birinde Yorumlar iş ince ama olamaz anda kullandığınız groovydocişlemek için seninJenkinsfile (s).

İlk olarak, groovydocharika hata ile uzantıları olmayan dosyalar üzerinde boğulma

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

... ve ikinci olarak, groovybetiğin başlangıcında Javadoc tarzı yorumların yok sayıldığını söyleyebildiğim kadarıyla . Kopyalamak Yani bile / senin adlandırmak JenkinsfileTo Jenkinsfile.groovy, çok kullanışlı çıktı alamayacak.

Kullanabilmek istiyorum

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

Jenkinsfile'mın başında yorum. Böyle bir şans yok (henüz).

groovydoc yine de , komuta Jenkinsfilegeçerseniz , sizin tanımladığınız sınıfları ve yöntemleri işleyecektir -private.


1

Resmi Jenkins belgeleri sadece aşağıdaki gibi tek satır komutları bahseder:

// Declarative //

ve ( bkz. )

pipeline {
    /* insert Declarative Pipeline here */
}

Jenkinsfile sözdizimi dayanmaktadır Groovy kullanmak da mümkündür, böylece yorumlar için harika bir sözdizimi . Alıntı:

/* a standalone multiline comment
   spanning two lines */
println "hello" /* a multiline comment starting
                   at the end of a statement */
println 1 /* one */ + 2 /* two */

veya

/**
 * such a nice comment
 */
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.