Подведение итогов года 2019

Под конец года принято писать про итоги и произошедшие события за год. Что ж, даже несмотря на то, что все эти «топы и итоги» окутаны хайповостью и кликбейстностью, опутаны бородатостью и пахнут вермутом бьянко, и моя натура, относящаяся с критическим мышлением к таким вещам, не хотела вливаться в этот поток. Но пульсирующая мысль, корнем, которого было где то невпопад прочитанная: «Что не записано, того не было», не давало покоя. Кажется, это высказывания великого римского историка. Или высказывание моей одноклассницы, постоянно ведшая дневник и писавшая любую мелочь туда. Хотя… больше похоже на девиз бухгалтеров.

Переписал проект Gitlab Webhooks + Redmine, интеграция с помощью вебхуков на Lumen. Основная идея — посмотреть отличия между проектом на чистом PHP и проектом на известном фреймворке. Из побочных эффектов — возможность использования Dependency Injection в тестах. С помощью Laravel Service Container and PHPUnit сделать это легко. Исходный код лежит в репозиторий: https://github.com/Carsak/GitlabWebhookExample

Gitlab webbhooks + Redmine

Задача — при создании мерж реквеста(pull request) в Gitlab обновлять задачу в Redmine. Например, обновить описание задачи, добавив ссылку на мерж реквест, или отредактировать любое другое поле. Стандартная интеграция из под коробки Gitlab не позволяла это сделать. Было решено делать это через веб хуки. Алгоритм работы: после каждого открытия мерж реквеста отправляется событие на кастомный endpoint. Будет отправляться имя ветки из MR, projectCode-issueId-task-description, откуда будет парситься ID задачи Redmine. Пример имени ветки wh-123456-add-webhooks, где 123456 — это ID задачи.

Список прочитанных книг за осень

Заметка о том, что удалось прочитать за квартал, за эту осень. За три месяца было прочитано четыре книги «Предметно-ориентированное проектирование (DDD)» Эрика Эванса, «Использование Docker» Моуэт Эдриен и «Проект Феникс. Роман о том как DevOps меняет жизнь» авторов Ким Джин, Спаффорд Джордж, Бер Кевин, также книга Mastering Gitlab 12 Packt Publishing Общие впечатления о книгах.

Docker Network

Задача — соединить два контейнера в одну сеть. Допустим это будет веб сервер nginx and php-fpm. Естественно они должны обмениваться сообщениями без проблем, ip адреса должна быть из одной подсети. Также должны находить друг друга не просто по ip адресу, но и по имени сервиса. Намного удобнее работать с именем php-service, вместо 172.21.0.2, который еще может измениться при повторном запуске. Для начала немного теории. При установке Docker-а автоматически создается три сети под название none, host, bridge. Список можно посмотреть через команду docker network ls none — у контейнера нет сети, он изолирован, ему сломали ethernet port, host — использовать сеть хоста. Чтобы присоединиться к ним, придется вручную прописать имя сети …

Зачем это нужно? При работе с долгоживущими контейнерами приходится запускать внутри контейнера какие то команды. Это могут быть запуск тестов, подключение к БД, сброс кеша или еще какие нибудь шаблонные команды. Все эти команды записываются в историю терминала, то есть в .bash_history. В следующий раз не нужно вводить команды полностью, можно подтянуть их из историй CTRL+R. Но после перезапуска контейнера вся эта история перезатирается. Чтобы упростить себе жизнь, сохраним эту историю.

install gitlab on windows 10

Как установить Gitlab в Windows? Первая же ссылка в поисковике дала ответ: Самый легкий способ установить Gitlab в Windows-е — это установить виртуальную машину Linux и уже там установить Gitlab. Пост был опубликован на официальном форуме Гитлаба. Автор кажется не шутить? Хм… А есть ли все таки способ?

Mmock мокирование http запросов- preview

У любого разработчика или даже программы возникает потребность в интеграции с другой программой или микросервисом. Возьмем как частность интеграцию через REST интерфейс. Хорошо если у поставщика есть тестовый API для периода разработки и/или ручного тестирования. А вдруг его нет, или еще не готов, или нужно написать автотесты для адаптера. Что ж в этом случае нам поможет MMock сервер