Sha256: e337088503c9db6b9324536fc6f496758404001f06f46fa8ebf924fcdb27fa6a

Contents?: true

Size: 1.56 KB

Versions: 1

Compression:

Stored size: 1.56 KB

Contents

namespace :deploy do
  task :ensure_tag do
    tagname = `git describe --exact-match HEAD`.chomp
    if $? == 0
      puts "Code is tagged as `#{tagname}`, proceeding with deployment"
    else
      abort "You need to tag the source before you can deploy production"
    end
  end

  task :create_tag do
    now = Time.now
    tagname = "#{fetch(:stage)}-#{now.strftime('%Y-%m-%d-%H%M')}"
    me = `whoami`.chomp
    %x(git tag -a #{tagname} -m "Automated deploy tag by #{me}" && git push origin #{tagname})
  end

  task :backup_database do
    if fetch(:skip_deploy_backups)
      puts "Skipping database backup because :skip_deploy_backups is set"
    else
      invoke "db:backup"
    end
  end

  task :scan_gems do
    require 'bundler/audit/scanner'
    require 'bundler/audit/database'

    Bundler::Audit::Database.update!
    scanner = Bundler::Audit::Scanner.new
    vulnerable = false
    scanner.scan do |result|
      vulnerable = true
      case result
      when Bundler::Audit::Scanner::InsecureSource
        print_warning "Insecure Source URI found: #{result.source}"
      when Bundler::Audit::Scanner::UnpatchedGem
        puts "#{result.gem} is not secure!"
      end
    end
    if vulnerable && ENV["I_KNOW_GEMS_ARE_INSECURE"] == nil
      abort """
      Your Gemfile.lock contains unpatched gems -- refusing to deploy
      Run `bundle-audit check --update` for full information
      You can set 'I_KNOW_GEMS_ARE_INSECURE' if you really want to do this anyway
      """
    end
  end
end

before 'deploy:migrate', 'deploy:backup_database'
before 'deploy', 'deploy:scan_gems'

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
jefferies_tube-0.1.2 lib/jefferies_tube/capistrano/deploy.rb