Project

Profile

Help

Jenkins-job-builder

Что такое Jenkins-Job-Builder (JJB)?

Это плагин позволяет описывать Jobs для Jenkins, используя человеко - понятное описание в форматах JSON или YAML и использовать их для настройки Jenkins. Описание Job можно хранить на github и периодически обновлять их. После чего JJB преобразовывает файл с описание Job в XML формат, понятный Jenkins.

Установка JJB

git clone https://github.com/openstack-infra/jenkins-job-builder
cd jenkins-job-builder
sudo python setup.py install

После установки нужно создать и настроить конфигурационный файл jenkins_job.ini (по умолчанию файл находится здесь /etc/jenkins_jobs/jenkins_jobs.ini).

Файл имеет следующий формат:

[job_builder]
ignore_cache=True
...

[jenkins]
user=jenkins
password=1234567890abcdef1234567890abcdef
url=https://jenkins.example.com
...

[hipchat]
authtoken=dummy

[stash]
username=user
password=pass

Подробно секции описаны здесь: http://docs.openstack.org/infra/jenkins-job-builder/execution.html#configuration-file

Create, Update, Delete Jobs

Test a job definition

JJB creates Jenkins XML configuration file from a YAML/JSON definition file and just uploads it to Jenkins. JJB provides a convenient test command to allow you to validate the XML before you attempt to upload it to Jenkins.

jenkins-jobs test tests/yamlparser/fixtures/templates002.yaml

If you want to run a simple test with just a single YAML job definition file and see the XML output on stdout:

jenkins-jobs test /path/to/foo.yaml

Update a job definition

Once you’ve tested your job definition and are happy with it then you can use the update command to deploy the job to Jenkins. The update command requires a configuration file.

jenkins-jobs --conf etc/jenkins_jobs.ini-sample update tests/yamlparser/fixtures/templates002.yaml

Delete a job definition

Jenkins Job Builder supports deleting jobs from Jenkins.

  • Delete one Job
jenkins-jobs delete Foo1
  • Delete several Jobs
jenkins-jobs delete Foo1 Foo2
  • Delete all Jobs
jenkins-jobs delete-all

Описание Job

Основные параметры

Описание job дается в формате YAML или JSON. Подробное описание параметров: http://docs.openstack.org/infra/jenkins-job-builder/definition.html

Пример:

- job:
    name: test
    description: 'Do not edit this job through the web!'
    project-type: freestyle
    block-downstream: false
    scm:
    - git:
        skip-tag: false
        url: URL_TO_GIT_REPOSITORY
    triggers:
      - pollscm: '@hourly'
    builders:
      - shell: 'echo "building"'

Данный job будет будет прослушивать репозиторий каждый час и выполнять действие -- вывод сообщений "building". Job'ы с похожими именами можно объединять в темплейты, проекты и группы.

Модули

Основная часть описаний Job пришла из следующих модулей:

Подробности - http://docs.openstack.org/infra/jenkins-job-builder/definition.html#modules

Выполнение модуля

The jenkins job builder modules are executed in sequence.

Generally the sequence is:
  1. parameters/properties
  2. scm
  3. triggers
  4. wrappers
  5. prebuilders (maven only, configured like Builders)
  6. builders (maven, freestyle, matrix, etc..)
  7. postbuilders (maven only, configured like Builders)
  8. publishers/reporters/notifications

Запуск Job

Чтобы добавить или обновить job нужно выполнить следующую команду:

jenkins-jobs --conf etc/jenkins_jobs.ini update PATH_TO_JOB_CONFIG

JJB extending

Jenkins Job Builder is quite modular. It is easy to add new attributes to existing components, a new module to support a Jenkins plugin, or include locally defined methods to deal with an idiosyncratic build system.

Подробности: http://docs.openstack.org/infra/jenkins-job-builder/extending.html#extending

Links