Skip to content

Instantly share code, notes, and snippets.

@knazarov
Last active June 19, 2016 19:50
Show Gist options
  • Save knazarov/06fbc59419f178351953 to your computer and use it in GitHub Desktop.
Save knazarov/06fbc59419f178351953 to your computer and use it in GitHub Desktop.
Коллекция ссылок с доклада про Jenkins на 404fest

Это небольшая сводка информации к докладу на 404fest про то, как мы используем Jenkins в Parallels для сборки Parallels Desktop for Mac.

Презентацию с доклада можно взять здесь.

Удобная ссылка на документ, который вы сейчас читаете: bit.ly/ParallelsJenkins.

Видео будет выложено позже, как только его смонтируют.

Если у вас есть вопросы, их можно задать мне в Twitter: @racktear или по почте: mail@racktear.com.

общая информация

При использовании Jenkins, всегда загружайте LTS версию. Обычные сборки, доступные на сайте, не очень стабильны.

разворачивание из git/svn

У Parallels есть собственный код для разворачивания Jenkins Job-ов, который очень специфичен для наших продуктов. Но вот то, что вы можете использовать из доступного OpenSource кода:

  • jenkins-autojobs -- Скрипт на Python, автоматически разворачивающий Job-ы из YAML конфига
  • jenkins-build-per-branch -- Разворачивает Job-ы на основе существующих
  • jenkins-job-builder -- Шаблонная система и способ написания Job-ов целиком в YAML

параллельная сборка

"Из коробки" Jenkins не поддерживает параллельную и групповую сборку. Но с этим легко справиться, используя плагины:

  • BuildFlow Plugin -- то, что используем мы. Простая и надежная схема. Скриптуется на Groovy.
  • MultiJob Plugin -- еще один вариант, похожий на BuildFlow. Но не такой гибкий, за счет отсутствия возможности его заскриптовать.
  • Workflow Plugin -- пока в разработке. Этот плагин, скорее всего, будет в будущем одним из лучших.

схема именования Job-ов

Без такой схемы вам будет тяжело разворачивать Job-ы автоматически. Наш вариант:

<project>-<branch>-<component>
  • project -- название проекта
  • branch -- название бранча или версия продукта
  • component -- имя компонента

внешняя система хранения файлов

Базовая система хранения файлов Jenkins, не подходит для больших проектов. Она медленная и негибкая. Вот что вы можете использовать:

  • Artifactory -- наш выбор. Работает практически для любых проектов и языков программирования.
  • Nexus -- не такой гибкий. Больше подходит для Java проектов.

релиз менеджмент

Просто собрать проект -- не достаточно. Нужно еще иметь возможность пометить некоторые сборки как "специальные" или "релизные". Или даже отправить соответствующие файлы на внешнее хранилище. Для этого есть:

  • artifactory-python -- написанная нами Python библиотека для работы с Artifactory. Есть на GitHub и PyPi.
  • Promoted Builds Plugin -- плагин для Jenkins, позволяющий сделать что-то со сборкой уже после того, как она завершилась. Например, пометить как валидную для выпуска в production.

системы управления конфигурацией

Помогают держать конфигурацию софта на ваших серверах одинаковой. Это тяжелая артиллерия, но если вдруг у вас начнутся проблемы с "разъезжанием" конфигураций, то вот возможное лечение:

  • Chef -- наш выбор. Система сложная, но очень мощная. Написана на Ruby.
  • Puppet -- то же что Chef, только с немного отличающейся концепцией. Написана на Ruby.
  • Salt Stack -- средней сложности. Написана на Python.
  • Ansible -- довольно простая система. Написана на Python. Подходит для начинающих.

что еще почитать

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment