пятница, 12 августа 2016 г.

Поддержка git сабмодулей для Capistrano 3

Из коробки Capistrano 3й версии не умеет клонировать репозиторий с сабмодулями. А проекты с сабмодулями есть и деплоить их как-то надо. Решением может быть мой плагин для Capistrano - capistrano-git-submodule-strategy .

Использование

Чтобы использовать его достаточно подключить к своему проекту и чуть-чуть настроить.

1. в Gemfile добавляем
gem 'capistrano-git-submodule-strategy', '~> 0.1'
Не забываем выполнить bundle.

2. в Capfile добавляем
require 'capistrano/git-submodule-strategy'

3. в deploy.rb настраиваем
set :scm, :git
set :git_strategy, Capistrano::Git::SubmoduleStrategy
По умолчанию метаданные (папка .git) не деплоятся. Чтобы деплоить код вместе с метаданными нужно добавить специальный флаг:
set :git_keep_meta, true


Особенности

1. Для основного репозитория используется кеш. То есть при первом деплое во временную папку клонируется оригинальный репозиторий с флагом --mirror, а затем просто делается update зеркала. А релиз создаётся путём локального клонирования из зеркала.
2. К сожалению пока для сабмодулей кеш не поддерживается. То есть сабмодули всегда клонируются из оригинальных репозиториев.