Если я правильно понимаю ваш вопрос, есть два других подхода, доступные в контексте одного файла YAML
Подход 1: Установка git_url
на уровне проекта
- project
name: some-test
git_url: "[email protected]:woof/bark.git"
jobs:
- test-{name}:
- job-template
name: test-{name}
scm:
- git:
url: "{git_url}"
branches:
- master
Здесь git_url
устанавливается на уровень проекта. Такой подход позволяет определить второй проект с другим значением для git_url
, т.е.
- project
name: some-other-test
git_url: "[email protected]:meow/meow.git"
jobs:
- test-{name}:
Подвод 2: Установите git_url
на работу-шаблон уровня экземпляра
- project
name: some-test
jobs:
- test-{name}:
git_url: "[email protected]"
- job-template
name: test-{name}
scm:
- git:
url: "{git_url}"
branches:
- master
Здесь git_url
устанавливается на фактическое экземпляр шаблона задания, где он указан. Если job-template
было больше, чем просто {name}
в его названии, это позволит вам создать несколько экземпляров в списке jobs
на уровне проекта, т.е.
- project
name: some-test
git_url: "[email protected]"
jobs:
- test-{name}-{type}:
type: 'cat'
- test-{name}-{type}:
type: 'dog'
- job-template
name: test-{name}-{type}
display-name: 'Test for {type} projects'
scm:
- git:
url: "{git_url}"
branches:
- master
Мысли о ТЕСТ против QA против PROD
Вы также упомянули, что хотите, чтобы какой-то файл внешних свойств различал среды TEST, QA и PROD. Для решения этого вопроса рассмотрим четыре разных файла: project.yaml
, defaults/TEST.yaml
, defaults/QA.yaml
, defaults/PROD.yaml
, содержание которых перечислено ниже.
project.yaml
- project
name: some-test
jobs:
- test-{name}:
defaults/TEST.yaml
- defaults:
name: global
git_url: "[email protected]:woof/test.git"
defaults/QA.yaml
- defaults:
name: global
git_url: "[email protected]:woof/qa.git"
defaults/PROD.yaml
- defaults:
name: global
git_url: "[email protected]:woof/prod.git"
Хорошо, так это не большие примеры, потому что вы, вероятно, не будет иметь другой репозиторий для каждой среды, но я не хочу усложнять вещи отклоняясь слишком далеко от вашего оригинальный пример.
С JJB вы можете указать несколько файлов YAML в командной строке (я не хочу усложнять пример или его объяснение, но вы также можете указать каталоги, полные JJB yaml). Для того, чтобы различать TEST, QA и развертывания Prod вашего Дженкинс работы вы можете сделать что-то вроде:
jenkins-jobs project.yaml:defaults/TEST.yaml
Для тестовой среды.
jenkins-jobs project.yaml:defaults/QA.yaml
Для вашей окружающей среды qa.
jenkins-jobs project.yaml:defaults/PROD.yaml
Для вашей окружающей среды.
Надеюсь, что это поможет.