Построение Pipeline в Jenkins

Построение CI/CD Pipeline для автоматизации тестирования и деплоя в Jenkins. Сбор артефактов и уведомления по электронной почте.

  • 00:01:04 - Создание Jenkinsfile
  • 00:04:43 - Добавление GitHub-репозитория в Jenkins
  • 00:11:44 - Просмотр multibranch-проекта
  • 00:13:40 - Вывод временных меток в логах
  • 00:16:32 - Валидация Jenkinsfile
  • 00:18:09 - Переменная окружения CI
  • 00:19:45 - Доработка docker-compose pull
  • 00:21:51 - Команды init и down c защитой в post
  • 00:23:38 - Первый и повторный запуск
  • 00:27:27 - Установка git и make на машину-агент
  • 00:28:39 - Сравнение производительности
  • 00:30:05 - Этап valid
  • 00:30:33 - Параллельный запуск линтеров
  • 00:33:16 - Анализаторы и тесты
  • 00:34:30 - Переменная REGISTRY для реестра
  • 00:38:03 - Генерация тегов с номером сборки
  • 00:43:05 - Сборка production образов
  • 00:44:08 - Запуск Smoke и E2E тестов
  • 00:45:03 - Оптимизация числа потоков
  • 00:47:58 - Аутентификация в Docker-реестре и push
  • 00:52:04 - Автодеплой на production-сервер
  • 00:56:59 - Имя пользователя для деплоя
  • 00:57:44 - Отключение интерактивной SSH-проверки
  • 00:58:33 - Генерация SSH-ключа для деплоя
  • 01:06:38 - Подключение через плагин SSH Agent
  • 01:09:24 - Работа со Staging-сервером
  • 01:11:40 - Сохранение артефактов
  • 01:17:05 - Добавление Email-уведомлений
Скрытый контент
Комментарии (16)
Arunas
2020-06-08 16:29

чудотворный урок, спасибо.

Ответить
Дмитрий Елисеев
2020-06-08 17:28

Спасибо! Стараемся.

Ответить
fedot
2020-06-09 05:42

Спасибо, большое тебе Дима, ты конечно мастер. А сколько времени уходит если не секрет, что бы все скрипты заработали? Ведь на поиск правильно работающего в данной конфигурации рецепта, может уйти куча времени, иногда с виду простая вещь может упереться так, что мама не горюй, записал бы может стрим какой отдельно, как что то сложное настраивал, было бы тоже весьма познавательно.

Ответить
Дмитрий Елисеев
2020-06-20 07:02

С GitHub Actions просидел так три дня. В итоге и запись видео заняла шесть часов, так как каждый прогон Pipeline шёл несколько минут и в случае ошибок после каждого исправления приходилось всё перезапускать.

Ответить
fedot
2020-06-22 13:18

Понятно, ещё раз спасибо за труд, аналогов таким урокам не видел, там рецепты почти на все случаи жизни собраны, хоть понятно куда копать теперь.

Ответить
Andrey
2020-06-09 07:32

Дмитрий, спасибо большое за урок! Вопрос, будет ли рассмотрен вариант использоваться докер образа с Git lab или вообще Git lab как инструмента? Там же есть встроенная возможность и репозиторий для docker организовать и ci\cd настраивать...

Ответить
Дмитрий (Deworker Pro)
2020-06-20 07:10

Да, скоро рассмотрим.

Ответить
Yevhenii Lykholai
2020-06-14 20:34

Огромное спасибо за труд.

Ответить
Merlin
2020-06-15 15:07

А сколько всего планируется уроков?

Ответить
Дмитрий (Deworker Pro)
2020-06-20 07:12

Сколько получится. Плюс некоторые добавляются по просьбам из комментариев.

Ответить
Александр
2020-06-21 19:51

Спасибо!

Ответить
Valentin
2020-06-26 19:58

Этот урок просто бесценный, спасибо

Ответить
Андрей
2020-07-09 11:15

А что если надо сделать деплой на две разных машины? Ну т.е. чтобы было 2 копии сайта. Как это сконфигурировать?

Ответить
Дмитрий (Deworker Pro)
2020-07-10 08:14

Для этого вместо Docker Compose мы в следующих эпизодах будем использовать Docker Swarm. И он уже задеплоит проект на все подключенные серверы.

Ответить
Андрей
2020-07-09 11:44

А что если у нас есть shared данные. Например, изображения загруженные пользователями. Понятное дело, что можно заиметь ftp сервер какой-нибудь и грузить все туда. Но если все таки без сервера, т.е. хранить изображения надо где-то в отдельной папке, то как тогда ее монтировать в контейнер? Причем надо не забывать, что у нас может быть staging (или даже несколько staging).

Ответить
Дмитрий (Deworker Pro)
2020-07-10 08:23

Обычно их помещают на отдельный файловый сервер по S3 или FTP.

А если без него, то просто монтируем папку public/upload через volume. И для тестов отдельной командой вроде:

docker run --rm php-cli copy docker/testing/demo/photos public/upload/photos

заполняем тестовыми данными.

Ответить
Зарегистрируйтесь или войдите чтобы оставить комментарий