Добавить дополнительные параметры на уровне проекта или унаследованного шаблона работы - PullRequest
0 голосов
/ 31 октября 2018

Я ищу способ разрешить некоторым экземплярам jjb job-template добавлять дополнительные параметры или добавлять их через унаследованный дочерний шаблон.

То же самое действительно относится к любому ключу массива / списка / последовательности. Вместо того, чтобы переопределять весь ключ, я хочу добавить к нему. Возможно, несколько уровней n, требующих чего-то вроде якорей YAML и ключей слияния.

Так что либо:

  • A project, который создает экземпляр job-template, может добавить свой собственный дополнительный parameters:; или
  • A job-template, который наследует / расширяет другой job-template, может добавлять дополнительные параметры без переопределения уже указанных.

Я хочу рабочую версию этого:

- job-template: &base-template
    name: base-params
    parameters:
       - string:
           name: foo
           default: FOO
           description: Foofoo

- project:
    name: thing
    jobs:
       - more-params
         parameters:
           - !APPEND          # This is wrong
           - string:
               name: bar
               default: BAR
               description: Baaaa

или это:

- job-template: &base-template
    name: base-params
    parameters:
       - string:
           name: foo
           default: FOO
           description: Foofoo

- job-template:
    name: more-params
    << : *base-template
    parameters:
      - !APPEND             # This is wrong
      - string:
           name: bar
           default: BAR
           description: Baaaa

- project:
    name: thing
    jobs:
       - more-params

или это:

- job-template: &base-template
    name: base-params
    parameters: &base-template-parameters
       - string:
           name: foo
           default: FOO
           description: Foofoo

- job-template:
    name: more-params
    << : *base-template
    parameters:
      - << &base-template-parameters     # THIS IS WRONG
      - string:
           name: bar
           default: BAR
           description: Baaaa

- project:
    name: thing
    jobs:
       - more-params

Я смотрел на создание потомства job-template с наследованием YAML, а затем использовал его в проекте. Но это не похоже на то, что это будет работать, потому что yaml не имеет способа расширять / добавлять последовательности / списки . Ключи слияния не работают для списков , а спецификация yaml не планирует принимать что-либо подобное ; на самом деле, ключи слияния мягко устарели.

Сам JJB, кажется, не предлагает способ сказать "этот шаблон задания расширяет этот другой шаблон задания, и вы должны объединить списки parameters:". Он опирается на наследование YAML, реализованное в самом JJB, а не в считывателе YAML, но не имеет (доступного для поиска / документированного) списка эквивалентов.

Я подозреваю, что это может быть возможно с !j2 тегами Jinja2, но я не совсем уверен, как, или если это разумно пойти таким путем.

Конечно, это общая потребность? У меня были похожие проблемы с Ansible некоторое время назад .

Единственный способ, который я нашел, это сделать с помощью фрагментов во включаемых файлах, что ужасно чертовски похоже на (не проверено)

# File base-template-params.yml.inc
- string:
    name: foo
    default: FOO
    description: Foofoo

# File templates.yml
- job-template: &base-template
    name: base-params
    parameters:
        !include base-template-params.yml.inc


- job-template:
    name: more-params
    << : *base-template
    parameters:
      !include base-template-params.yml.inc
      - string:
           name: bar
           default: BAR
           description: Baaaa

- project:
    name: thing
    jobs:
       - more-params

1 Ответ

0 голосов
/ 10 апреля 2019

К сожалению, вы правы, JJB не облегчает запрос, запрашиваемый здесь. Самое близкое, что вы можете получить с текущим JJB - это использовать ключ "obj:" при объявлении переменной {obj: variable_name_must_use_underscores}

- job-template:
    name: base-params

    ######################
    # Default parameters #
    ######################

    job_params:

    #####################
    # Job configuration #
    #####################

    parameters: '{obj:job_params}'

- project:
    name: thing
    jobs:
      - base-params
    job_params:
      - string:
          name: foo
          default: FOO
          description: Foofoo
       - string:
           name: bar
           default: BAR
           description: Baaaa

Для этого задается заданный по умолчанию параметр job_params в шаблоне задания, который будет применяться ко всем пользователям шаблона задания. Опционально предоставляет возможность переопределить заданные по умолчанию параметры job_params, но, как вы можете видеть из примера, к сожалению, пользователю необходимо переопределить заданные по умолчанию параметры job_params, если они хотят добавить новые параметры вместе с ним.

Текущий JJB 2.x не поддерживает способ наследования и расширения существующих конфигураций шаблонов, если вы переопределите, вам потребуется переопределить весь раздел.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...