Class: Moonshot::ArtifactRepository::S3Bucket

Inherits:
Object
  • Object
show all
Includes:
CredsHelper, DoctorHelper, ResourcesHelper
Defined in:
lib/moonshot/artifact_repository/s3_bucket.rb

Overview

The S3Bucket stores builds in an S3 Bucket.

For example:

def MyApplication < Moonshot::CLI

self.artifact_repository = S3Bucket.new('my-application-builds')

end

Direct Known Subclasses

S3BucketViaGithubReleases

Instance Attribute Summary collapse

Attributes included from ResourcesHelper

#resources

Instance Method Summary collapse

Methods included from DoctorHelper

#doctor_hook

Methods included from CredsHelper

#as_client, #cd_client, #cf_client, #ec2_client, #iam_client, #s3_client

Constructor Details

#initialize(bucket_name, prefix: '') ⇒ S3Bucket

Returns a new instance of S3Bucket.



15
16
17
18
# File 'lib/moonshot/artifact_repository/s3_bucket.rb', line 15

def initialize(bucket_name, prefix: '')
  @bucket_name = bucket_name
  @prefix = prefix
end

Instance Attribute Details

#bucket_nameObject (readonly)

Returns the value of attribute bucket_name.



13
14
15
# File 'lib/moonshot/artifact_repository/s3_bucket.rb', line 13

def bucket_name
  @bucket_name
end

Instance Method Details

#filename_for_version(version_name) ⇒ Object



35
36
37
# File 'lib/moonshot/artifact_repository/s3_bucket.rb', line 35

def filename_for_version(version_name)
  "#{@prefix}#{version_name}.tar.gz"
end

#store_hook(build_mechanism, version_name) ⇒ Object



20
21
22
23
24
25
26
27
28
29
30
31
32
33
# File 'lib/moonshot/artifact_repository/s3_bucket.rb', line 20

def store_hook(build_mechanism, version_name)
  unless build_mechanism.respond_to?(:output_file)
    raise "S3Bucket does not know how to store artifacts from #{build_mechanism.class}, no method '#output_file'." # rubocop:disable LineLength
  end

  file = build_mechanism.output_file
  bucket_name = @bucket_name
  key = filename_for_version(version_name)

  ilog.start_threaded "Uploading #{file} to s3://#{bucket_name}/#{key}" do |s|
    upload_to_s3(file, key)
    s.success "Uploaded s3://#{bucket_name}/#{key} successfully."
  end
end