Я собираюсь создать красивый небольшой рецепт Capistrano для развертывания сайтов, версия которых контролируется в Git.
В дополнение к некоторым другим вещам, над добавлением которых я работаю, моя первая задача - пометить текущий выпуск date ... и когда этот тег уже существует (например, несколько выпусков в день), добавьте письмо.
Я написал рабочий код и протестировал его в своем production.rb (используя многоступенчатый в capistrano -ext) ... но мне кажется, я мог бы написать это лучше. Во-первых, фактическая проверка существования тега очень часто повторяется. Однако, независимо от того, в каком порядке я перемещаю вещи, это единственная конфигурация, которая дает результаты.
Есть идеи? Заранее спасибо.
before 'deploy' do
# Tag name is build_YYYYMMDD
tag_name = "build_#{Time.now.strftime('%Y%m%d')}"
check_tag = `git tag -l #{tag_name}`
# If the tag exists, being appending letter suffix
if not check_tag.empty?
suffix = 'a'
check_tag = `git tag -l #{tag_name}#{suffix}`
while not check_tag.empty? do
suffix.next!
check_tag = `git tag -l #{tag_name}#{suffix}`
end
tag_name = "#{tag_name}#{suffix}"
end
# Tag with computed tag name
p "Tagging #{tag_name}" # TODO How to output via Capistrano?
system "git tag #{tag_name}"
# Push tags to origin remote
p "Pushing tag to origin" # TODO How to output via Capistrano?
system "git push origin master --tags"
end