Лиллипуттен унд Нобле Артефакты 2015

Автоматический деплой git веб-проектов с bitbucket.org

Всего одна ночь кодинга и всё заработало обратно!

Урраааааа!!!

В ночь на прошедшее воскресенье (5/6 сентября) начал и закончил собственный синхронизатор для веб-проектов на git-хостинге от bitbucket.org. В общем, не сильно хотел этим заниматься, — жизнь заставила. Собственный кривоватый древний загручик, привыкши уже достаточно давно хранить всё в git, развивать считаю нецелесообразным, а давно и нежно любимый bitbucket-sync, похоже, приказал долго жить, не справившись с новым интерфейсом для веб-хуков. Не знаю, почему, но уже неск. недель оно неработоспособно и, похоже, оживать, к сожалению, не собирается.

Т.е., засучив рукава, пришлось взяться самому. Спустя несколько часов поиска было найдено альтернативное решение. В отличие от bitbucket-sync, который загружал упакованные коммиты и сам раскладывал их на месте, здесь автоматизируется клиент git на сервере хостера. Т.е., появляется как минимум одно требование к хостеру. Скорее всего, ещё нужен будет нормальный SSH-доступ для инициализации ключей доступа к bitbucket-аккаунту.

Старый код от Jonathan Nicoals тоже не работал с новым webhook-интерфейсом, но сам скрипт был не очень сложным, и его без особых сложностей удалось адапатировать к новому интерфейсу. См. обсуждение проблемы в форуме bitbucket-sync.

Добавлен ряд возможностей:

  • Обслуживание нескольких пар репозиторий-проект одним скриптом, как было сделано на том же bitbucket-sync.
  • Автоматическая инициализация папок репозитория/проекта. Т.е., если папка репозитория пуста или отсутствует, происходит не частичная загрузка изменений (fetch), а полная выгрузка репозитория (clone), аналогично, если отсутствует или пуста папка проекта, то производится полный checkout файлов проекта. Т.е., путём удаления папки (той или иной), можно «сбрасывать» репозиторий/проект.

Особенности проекта:

  • Документация пока находится в стадии оформления. Полное тестирование на экстремальные условия пока не проведено.
  • Для полной автоматизации клиента git требуется создать пару ssh-ключей с пустым паролём (git запускается не в интерактивном режиме и ввести пароль невозможно).



Более полную информацию и исходный код см. на bitbucket: https://bitbucket.org/lilliputten/automatic-bitbucket-deploy/.

«Лиллипуттен унд Нобле» / Игорь А. Лилипутен <>