6. Докер-в-докере (на самом деле нет)
Разные джобы требуют разных инструментов, окружений, библиотек
5
7. Докер-в-докере (на самом деле нет)
Нам нужен доступ к докеру из докера, что бы запускать джобы в
своих контейнерах.
Примерный алгоритм джобы
6
8. Докер-в-докере (на самом деле нет)
Есть подозрения что, докер виснет если параллельной сборке внутри
одной машины Поэтому используется bash-костыль в качестве
семафора для всего хоста
ATTEMPT_LIMIT ="1000"
ATTEMPT_NUMBER ="1"
LOCK_FILE =/ tmp /. jenkins -run -off -docker -build -lock
LOCK_FD =200
eval "exec $LOCK_FD >$LOCK_FILE"
while ! flock -n -x $LOCK_FD; do
if ((" $ATTEMPT_NUMBER " > " $ATTEMPT_LIMIT ")); then
echo "Too many attempts"
exit 1
fi
sleep 5
ATTEMPT_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
10. Запись видео с UI-тестов(шок-контент, 18+)
Используются следующие инструменты:
• Google chrome
• xvfb - виртуальный буфер(а)
• openbox - оконный менеджер
• avconv - запись с экрана
• supervisor - запуск всех этих штук
9
11. Запись видео с UI-тестов(шок-контент, 18+)
Видео доступны как Jenkins-артефакты:
10