Class: Moonshot::ArtifactRepository::S3Bucket
- Inherits:
-
Object
- Object
- Moonshot::ArtifactRepository::S3Bucket
- 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
Instance Attribute Summary collapse
-
#bucket_name ⇒ Object
readonly
Returns the value of attribute bucket_name.
Attributes included from ResourcesHelper
Instance Method Summary collapse
- #filename_for_version(version_name) ⇒ Object
-
#initialize(bucket_name, prefix: '') ⇒ S3Bucket
constructor
A new instance of S3Bucket.
- #store_hook(build_mechanism, version_name) ⇒ Object
Methods included from DoctorHelper
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_name ⇒ Object (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 |