Я собираюсь создать симпатичный маленький рецепт Capistrano для развертывания версий сайтов, управляемых в Git.
В дополнение к некоторым другим вещам, над которыми я работаю, моей первой задачей является пометка текущей версиис текущей датой ... и когда этот тег уже существует (например, несколько выпусков в день), добавьте письмо.
Я написал некоторый рабочий код и протестировал его в своей работе.рб (используя многоступенчатый в 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