[demo-day] slava mogilevsky: "cluster ci on jenkins"

13
Cluster CI on Jenkins Слава Могилевский 20 октября 2016 г. Provectus

Upload: provectus

Post on 15-Apr-2017

119 views

Category:

Technology


3 download

TRANSCRIPT

Cluster CI on Jenkins

Слава Могилевский

20 октября 2016 г.

Provectus

Идея

Мы имеем несколько машин: как максимально использовать их длявыполнения Jenkins-джобов?

1

Jenkins+Docker+swarm-plugin

Используем плагин swarm и запускаем все внутри docker контейнеров

2

Схема деплоя

Деплоятся контейнеры через ansible-плейбук

3

Multijob плагин

Для распараллеливания используем Multijob плагин

4

Докер-в-докере (на самом деле нет)

Разные джобы требуют разных инструментов, окружений, библиотек

5

Докер-в-докере (на самом деле нет)

Нам нужен доступ к докеру из докера, что бы запускать джобы всвоих контейнерах.

Примерный алгоритм джобы

6

Докер-в-докере (на самом деле нет)

Есть подозрения что, докер виснет если параллельной сборке внутриодной машины Поэтому используется bash-костыль в качествесемафора для всего хоста

ATTEMPT_LIMIT="1000"ATTEMPT_NUMBER="1"LOCK_FILE =/tmp/.jenkins -run -off -docker -build -lockLOCK_FD =200eval "exec $LOCK_FD >$LOCK_FILE"while ! flock -n -x $LOCK_FD; do

if (("$ATTEMPT_NUMBER" > "$ATTEMPT_LIMIT")); thenecho "Too many attempts"exit 1

fisleep 5ATTEMPT_NUMBER=$[$ATTEMPT_NUMBER + 1]

done{ docker build --tag=$DOCKER_IMAGE_TAG --force -rm

$DOCKER_IMAGE_PULL_FLAG --file=${BuildFile} ${BuildPath }; } || export CONTAINER_BUILD_ERR =1

7

Запись видео с UI-тестов(шок-контент, 18+)

8

Запись видео с UI-тестов(шок-контент, 18+)

Используются следующие инструменты:

• Google chrome

• xvfb - виртуальный буфер(а)

• openbox - оконный менеджер

• avconv - запись с экрана

• supervisor - запуск всех этих штук

9

Запись видео с UI-тестов(шок-контент, 18+)

Видео доступны как Jenkins-артефакты:

10

Запись видео с UI-тестов(шок-контент, 18+)

11

Вопросы?

11