Sha256: 4e7c8cd061498a70e1277aa9c18fc1952910060325fe2d518d6780a21fa2625c

Contents?: true

Size: 1.82 KB

Versions: 1

Compression:

Stored size: 1.82 KB

Contents

Capistrano::Configuration.instance(:must_exist).load do
  define_recipe :release_tagger do |*stages|
    # Set up some default stages
    set :autotagger_stages, stages.flatten unless exists?(:autotagger_stages)  && !stages.empty?
    
    # This needs to be loaded after the stages are set up
    require 'release_tagger'
    
    set :keep_release_tags, 5 unless exists?(:keep_release_tags)
    namespace :release_tagger do
      desc "remove old tags, similar to keep_releases"
      task :remove_previous_tags, :roles => :app do
        keep_tags = fetch(:keep_release_tags, 5)
        tags = `git tag`
        tags = tags.split
        stage_tags = {}
        tags.each do |tag|
          stage = tag.split('/').first
          stage_tags[stage] = [] unless stage_tags.key?(stage)
          stage_tags[stage] << tag
        end

        stage_tags.each do |stage, tags|
          # remove all tags but the last n number
          tags[0..-(keep_tags + 1)].each do |tag|
            puts `git tag -d #{tag}`
            puts `git push origin :refs/tags/#{tag}`
          end
        end
      end
      
      desc "remove all local tags before release_tagger fetches all tags"
      task :remove_local_tags, :roles => :app do
        puts `git tag -l | xargs git tag -d` if fetch(:remove_local_tags, true)
      end
    end
    
    # Run release tagger to get the right release for the deploy
    before  "deploy:update_code",        "release_tagger:set_branch"
    before  "deploy:cleanup",            "release_tagger:create_tag"
    before  "deploy:cleanup",            "release_tagger:write_tag_to_shared"
    before  "deploy:cleanup",            "release_tagger:remove_previous_tags"
    before  "deploy:cleanup",            "release_tagger:print_latest_tags"
    
    before  "release_tagger:create_tag", "release_tagger:remove_local_tags"
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
factorylabs-fdlcap-0.3.8 lib/fdlcap/recipes/autotagger.rb