Я работаю над Jenkins и использую сценарий Groovy для автоматизации процесса развертывания.

Для работы с паролями я сохранил файл 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

Для этого я написал отличный сценарий ниже,

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
useranon 28 Дек 2016 в 12:58
Уточните, используете ли вы этот код в сценарии задания конвейера или на этапе сборки (System) Groovy.
 – 
izzekil
28 Дек 2016 в 14:33
- Я запустил этот скрипт на этапе сборки System Groovy.
 – 
useranon
28 Дек 2016 в 14:37

1 ответ

Лучший ответ
  rootNode.APP.each{ APP ->
    APP.development.schema.children().each{ tag ->
        writer_passwords_rails_app.println("${APP.@title}.development.schema.${tag.name()}=${tag.text()}")
  }
    APP.test.schema.children().each{ tag ->
        writer_passwords_rails_app.println("${APP.@title}.test.schema.${tag.name()}=${tag.text()}")
  }

    APP.production.schema.children().each{ tag ->
        writer_passwords_rails_app.println("${APP.@title}.production.schema.${tag.name()}=${tag.text()}")
  }

}

Решает вопрос

0
useranon 28 Дек 2016 в 17:52