在Jenkins

时间:2017-03-20 23:31:28

标签: jenkins jenkins-pipeline

我有一个groovy方法,现在可以创建XML文件。我已经使用groovyConsole验证了它。但是如果我在我的jenkinsfile中使用这个片段,虽然作业成功完成,但是看不到在工作区中创建XML文件。

问题:如何确保在工作区中生成XML文件?我将在jenkinsfile

中的后续阶段使用此XML

以下是jenkinsfile的样子:

import groovy.xml.*

node('master') {

  deleteDir()

  stage('Checkout') {
   // checks out the code
  }

 generateXML("deploy.xml")  //This calls the method to generate the XML file


  //stage for packaging



  //Stage to Publish


  //Stage to Deploy


}


  @NonCPS
  def generateXML(file1) {

    println "Generating the manifest XML........"

    def workflows = [
    [ name: 'A', file: 'fileA', objectName: 'wf_A', objectType: 'workflow', sourceRepository: 'DEV2', folderNames: [ multifolder: '{{multifolderTST}}', multifolder2: '{{multifolderTST2}}' ]],

    [ name: 'B', file: 'fileB', objectName: 'wf_B', objectType: 'workflow', sourceRepository: 'DEV2', folderNames: [ multifolder3: '{{multifolderTST3}}', multifolder4: '{{multifolderTST4}}']]
    ]

     def builder = new StreamingMarkupBuilder()
    builder.encoding = 'UTF-8'
    new File(file1).newWriter() << builder.bind {
      mkp.xmlDeclaration()
      mkp.declareNamespace(udm :'http://www.w3.org/2001/XMLSchema')
      mkp.declareNamespace(powercenter:'http://www.w3.org/2001/XMLSchema')
      delegate.udm.DeploymentPackage(version:'$BUILD_NUMBER', application: "informaticaApp"){
        delegate.deployables {
          workflows.each { item ->
            delegate.powercenter.PowercenterXml(name:item.name, file:item.file) {
              delegate.scanPlaceholders(true)
              delegate.sourceRepository(item.sourceRepository)
              delegate.folderNameMap {
                item.folderNames.each { name, value ->
                  it.entry(key:name, value)
                }
              }
              delegate.objectNames {
                delegate.value(item.objectName)
              }
              delegate.objectTypes {
                delegate.value(item.objectType)
              }
            }
          }
        }
        delegate.dependencyResolution('LATEST')
        delegate.undeployDependencies(false)
      }
    }
  }

1 个答案:

答案 0 :(得分:0)

我在/ dir中找到了该文件。因为我还没有进入文件编写器中的任何路径。

更新: 这不是分布式环境的正确解决方案。看来java文件io操作只能在master中运行,而不能在代理机器中运行。