Sha256: 00fbfd57e75db926221085ce73e86e06f5aaec64de2ad770ec860ba61146d5d4

Contents?: true

Size: 1.43 KB

Versions: 6

Compression:

Stored size: 1.43 KB

Contents

require 'yaml'
require 'json'
require 'fileutils'
require 'zip'

module Shipwright
  module ElasticBeanstalk

    EB_CONFIG     = ".elasticbeanstalk/config.yml"
    EB_EXTENSIONS = '.ebextensions'
    DOCKERRUN     = 'Dockerrun.aws.json'

    extend self

    def update_dockerrun
      dockerrun  = JSON.parse(File.read DOCKERRUN)

      dockerrun['containerDefinitions'].each do |container|
        bits = container['image'].to_s.split(':').tap(&:pop)
        container['image'] = bits.push(version).join(':')
      end

      File.open(DOCKERRUN, 'wb') { |file|
        file.write JSON.pretty_generate(dockerrun) }
    end

    def generate_artifact
      FileUtils.mkdir_p File.dirname(artifact_path)
      FileUtils.rm artifact_path, force: true
      Zip::File.open(artifact_path, Zip::File::CREATE) do |zip|
        zip.add DOCKERRUN, DOCKERRUN
        ebexts = Dir.glob(File.join EB_EXTENSIONS, '*')
        if ebexts.any?
          zip.mkdir EB_EXTENSIONS
          ebexts.each { |ext| zip.add ext, ext }
        end
      end
    end

    def update_ebconfig
      config = YAML.load_file EB_CONFIG
      config['deploy'] ||= {}
      config['deploy']['artifact'] = artifact_path
      File.open(EB_CONFIG, 'wb') { |f| f.write config.to_yaml[4..-1] } # skip ---\n
    rescue Errno::ENOENT
    end

    def artifact_path
      File.join Dir.pwd, 'builds', "#{application}-#{version}.zip"
    end

    def version
      Builder.version
    end

  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
shipwright-1.2.1 lib/shipwright/elastic_beanstalk.rb
shipwright-1.2.0 lib/shipwright/elastic_beanstalk.rb
shipwright-1.1.5 lib/shipwright/elastic_beanstalk.rb
shipwright-1.1.4 lib/shipwright/elastic_beanstalk.rb
shipwright-1.1.3 lib/shipwright/elastic_beanstalk.rb
shipwright-1.1.2 lib/shipwright/elastic_beanstalk.rb