Преобразуйте эту типичную строку в карту в конвейере Дженкинса - PullRequest
0 голосов
/ 24 апреля 2020

У меня есть эта типичная строка карты (словаря), которую нужно преобразовать в словарь в jenkins.

[
prDetails:[
    [prInfo:[pull_request:https://github.com/kiek/nanny-test3/pull/17, organization:kiek, repository:nanny-test3, pr_number:17], authors:[abc@dmc.com]],
    [prInfo:[pull_request:https://github.com/kiek/nanny-test3/pull/18, organization:kiek, repository:nanny-test3, pr_number:18], authors:[kis@dmc.com,crc@dmc.com]] 
],
authors:[abc@dmc.com,crc@dmc.com,kis@dmc.com], 
buildCause:BranchEventCause
]

В качестве примера Преобразовать groovy строку для отображения в конвейере jenkins но не смог найти правильного решения. Может ли кто-нибудь помочь.

1 Ответ

0 голосов
/ 24 апреля 2020

Прямым решением было бы использование Groovy eval функциональности.

Проблема в том, что для него должны быть подготовлены входные данные: вам нужно вставить кавычки в нужных местах.

Отсюда и код:

def a = '''[
  prDetails:[
      [prInfo:[pull_request:https://github.com/kiek/nanny-test3/pull/17, organization:kiek, repository:nanny-test3, pr_number:17], authors:[abc@dmc.com]],
      [prInfo:[pull_request:https://github.com/kiek/nanny-test3/pull/18, organization:kiek, repository:nanny-test3, pr_number:18], authors:[kis@dmc.com,crc@dmc.com]]
  ],
  authors:[abc@dmc.com,crc@dmc.com,kis@dmc.com],
  buildCause:BranchEventCause
  ]'''


a = a.replaceAll( /:([^,\[\]\n]+)/, ':"$1"' ) // add " to map's values
a = a.replaceAll( /\[([^:\[\]]+)\]/, '["$1"]' ) // add " inside arrays
a = a.replaceAll( /(\w),(\w)/, '$1","$2' ) // add " around ,

Map map = Eval.me a

assert map.prDetails[0].authors[0] == 'abc@dmc.com'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...