Добавление тегов к выпуску перед развертыванием с помощью Capistrano

Я собираюсь создать красивый небольшой рецепт 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
12
задан TheOddLinguist 20 April 2011 в 19:34
поделиться