Как настроить таргетинг на конкретную транзакцию SHA при развертывании capistrano
Мне интересно, как я могу настроить целевой SHA в Git для развертывания, используя Capistrano? Это должно быть что-то вроде
cap deploy --version=<sha targeted>
Кажется, не удается найти ответ на этот вопрос после большого поиска.
Ответ 1
Для Capistrano 2.9 до 3.0:
cap -S revision=80655da8d80aaaf92ce5357e7828dc09adb00993 deploy
Для более старых версий Capistrano вы можете развернуть конкретный git commit/tree/branch/tag, выполнив следующее:
cap -s branch=80655da8d80aaaf92ce5357e7828dc09adb00993 deploy
В некоторых случаях может потребоваться указать среду как аргумент. production является просто примером.
cap production -S revision=80655da8d80aaaf92ce5357e7828dc09adb00993 deploy
Ответ 2
Ответ molf не работал у меня (используя capistrano 2.11.2). Мне пришлось использовать "ревизию" вместо ветки, например:
cap -S revision=80655da8d80aaaf92ce5357e7828dc09adb00993 deploy
Ответ 3
Капистрано 3
В вашем deploy.rb или конкретном файле, например config/deploy/production.rb
set :branch, ENV.fetch('REVISION', 'master')
Это позволяет указать конкретную ревизию git. Он принимает SHA, но также и все, что разрешает реальную ревизию (например, тег git, аннотированный тег или ветвь).
Используйте его в командной строке, установив переменную среды REVISION, например.
bundle exec cap production deploy REVISION=80655da8d80aaaf92ce5357e7828dc09adb00993
bundle exec cap staging deploy REVISION=my-topic-branch
Ответ 4
ask: branch, 'master'
Запрос для ввода, но по умолчанию используется "master", если вы нажмете return.