Sha256: 1bf4247aee4f54256cdbfc54740a4b51e786a48f68e08bc536819e6972515f20
Contents?: true
Size: 1.54 KB
Versions: 4
Compression:
Stored size: 1.54 KB
Contents
require 'aws-sdk' module Beanstalkify class Archive attr_reader :app_name, :version def initialize(filename) @filename = filename @archive_name = File.basename(@filename) @app_name, hyphen, @version = File.basename(filename, '.*').rpartition("-") end def upload(beanstalk_api, s3_client=AWS::S3.new.client) if already_uploaded?(beanstalk_api) return puts "#{version} is already uploaded." end bucket = beanstalk_api.create_storage_location.data[:s3_bucket] upload_to_s3(s3_client, bucket) make_application_version_available_to_beanstalk(beanstalk_api, bucket) end private def upload_to_s3(s3_client, bucket) puts "Uploading #{@archive_name} to bucket #{bucket}..." s3_client.put_object( bucket_name: bucket, key: @archive_name, data: File.open(@filename) ) end def make_application_version_available_to_beanstalk(beanstalk_api, bucket) puts "Making version #{version} of #{app_name} available to Beanstalk..." beanstalk_api.create_application_version( application_name: app_name, version_label: version, source_bundle: { s3_bucket: bucket, s3_key: @archive_name }, auto_create_application: true ) end def already_uploaded?(beanstalk_api) beanstalk_api.describe_application_versions( application_name: app_name, version_labels: [version] ).data[:application_versions].count > 0 end end end
Version data entries
4 entries across 4 versions & 1 rubygems