Class: Drunker::Artifact
- Inherits:
-
Object
- Object
- Drunker::Artifact
- Defined in:
- lib/drunker/artifact.rb,
lib/drunker/artifact/layer.rb
Defined Under Namespace
Classes: Layer
Instance Attribute Summary collapse
-
#bucket ⇒ Object
readonly
Returns the value of attribute bucket.
-
#exit_status ⇒ Object
readonly
Returns the value of attribute exit_status.
-
#stderr ⇒ Object
readonly
Returns the value of attribute stderr.
-
#stdout ⇒ Object
readonly
Returns the value of attribute stdout.
Instance Method Summary collapse
- #delete ⇒ Object
-
#initialize(config:, logger:) ⇒ Artifact
constructor
A new instance of Artifact.
- #layers ⇒ Object
- #replace_build(before:, after:) ⇒ Object
- #set_build(build) ⇒ Object
- #to_h ⇒ Object
Constructor Details
#initialize(config:, logger:) ⇒ Artifact
Returns a new instance of Artifact.
8 9 10 11 12 13 14 15 16 17 18 19 20 |
# File 'lib/drunker/artifact.rb', line 8 def initialize(config:, logger:) = Time.now.to_i s3 = Aws::S3::Resource.new(client: Aws::S3::Client.new(config.)) @bucket = s3.create_bucket(bucket: "drunker-artifact-store-#{}") logger.info("Created artifact bucket: #{bucket.name}") @name = "drunker_artifact_#{}" @stdout = "drunker_artifact_#{}_stdout.txt" @stderr = "drunker_artifact_#{}_stderr.txt" @exit_status = "drunker_artifact_#{}_exit_status.txt" @builds = [] @logger = logger end |
Instance Attribute Details
#bucket ⇒ Object (readonly)
Returns the value of attribute bucket.
3 4 5 |
# File 'lib/drunker/artifact.rb', line 3 def bucket @bucket end |
#exit_status ⇒ Object (readonly)
Returns the value of attribute exit_status.
6 7 8 |
# File 'lib/drunker/artifact.rb', line 6 def exit_status @exit_status end |
#stderr ⇒ Object (readonly)
Returns the value of attribute stderr.
5 6 7 |
# File 'lib/drunker/artifact.rb', line 5 def stderr @stderr end |
#stdout ⇒ Object (readonly)
Returns the value of attribute stdout.
4 5 6 |
# File 'lib/drunker/artifact.rb', line 4 def stdout @stdout end |
Instance Method Details
#delete ⇒ Object
57 58 59 60 |
# File 'lib/drunker/artifact.rb', line 57 def delete bucket.delete! logger.info("Deleted bucket: #{bucket.name}") end |
#layers ⇒ Object
30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
# File 'lib/drunker/artifact.rb', line 30 def layers @layers ||= builds.each_with_object([]) do |build, layers| project_name, build_id = build.split(":") layers << Layer.new(build_id: build).tap do |layer| begin layer.stdout = fetch_content("#{build_id}/#{project_name}/#{stdout}") layer.stderr = fetch_content("#{build_id}/#{project_name}/#{stderr}") layer.exit_status = fetch_content("#{build_id}/#{project_name}/#{exit_status}") rescue Aws::S3::Errors::NoSuchKey logger.debug("Artifact not found") layer.invalid! end end end end |
#replace_build(before:, after:) ⇒ Object
51 52 53 54 55 |
# File 'lib/drunker/artifact.rb', line 51 def replace_build(before:, after:) builds.delete(before) logger.debug("Unset build: { build: #{before}, artifact: #{name} }") set_build(after) end |
#set_build(build) ⇒ Object
46 47 48 49 |
# File 'lib/drunker/artifact.rb', line 46 def set_build(build) @builds << build logger.debug("Set build: { build: #{build}, artifact: #{name} }") end |
#to_h ⇒ Object
22 23 24 25 26 27 28 |
# File 'lib/drunker/artifact.rb', line 22 def to_h { type: "S3", location: bucket.name, namespace_type: "BUILD_ID", } end |