2016-12-28 115 views
0

我正在使用Jenkins並使用Groovy腳本來自動執行部署過程。Groovy腳本讀取xml文件並寫入節點名稱

爲了應對密碼,我一直一個XML文件 - passwords.xml

<APP1> 
    <development> 
     <schema> 
      <db1>pass1234</db1> 
     </schema> 
    </development> 
    <test> 
     <schema> 
      <db1>pass1234</db1> 
     </schema> 
    </test> 
    <production> 
     <schema> 
      <db1>pass1234</db1> 
     </schema> 
    </production> 
</APP1> 

現在我想創建一個屬性文件一樣,

APP1.development.schema.db1=pass1234 
APP1.test.schema.db1=pass1234 
APP1.production.schema.db1=pass1234 

我已經寫下面的groovy腳本這樣做,

def passwords_rails_app = var_workspace + "/passwords.properties" 
def passwords = new XmlParser().parseText(props_credential.passwords_url.text) 

PrintWriter writer_passwords_rails_app = new PrintWriter(passwords_rails_app) 

passwords.'**'.findAll{ 
    writer_passwords_rails_app.println(it.name() + "=" + it.name()) 
} 
writer_passwords_rails_app.close() 

但這只是簡單地創建屬性文件,而不是在屬性文件中寫入節點名稱。

推薦我。

+0

請說明您是否在流水線作業腳本或一個(系統)的Groovy生成步驟使用此代碼。 – izzekil

+0

@izzekil - 我在System Groovy構建步驟中運行了這個腳本。 – useranon

回答

0
rootNode.APP.each{ APP -> 
    APP.development.schema.children().each{ tag -> 
     writer_passwords_rails_app.println("${[email protected]}.development.schema.${tag.name()}=${tag.text()}") 
    } 
    APP.test.schema.children().each{ tag -> 
     writer_passwords_rails_app.println("${[email protected]}.test.schema.${tag.name()}=${tag.text()}") 
    } 

    APP.production.schema.children().each{ tag -> 
     writer_passwords_rails_app.println("${[email protected]}.production.schema.${tag.name()}=${tag.text()}") 
    } 

} 

解決問題的