class CircleciArtifact::Fetcher
This is the main interface, handles fetching and parsing
Public Class Methods
new(token:, username:, reponame:, build:)
click to toggle source
@param token [String] @param username [String] @param reponame [String] @param build [String]
# File lib/circleci_artifact.rb, line 92 def initialize(token:, username:, reponame:, build:) raise ArgumentError, 'Error: Missing CIRCLE_API_TOKEN' if token.to_s.empty? raise ArgumentError, 'Error: Missing CIRCLE_PROJECT_USERNAME' if username.to_s.empty? raise ArgumentError, 'Error: Missing CIRCLE_PROJECT_REPONAME' if reponame.to_s.empty? raise ArgumentError, 'Error: Missing CIRCLE_BUILD_NUM' if build.to_s.empty? @token = token @username = username @reponame = reponame @build = build @config = CircleCi::Config.new token: token end
Public Instance Methods
fetch_queries(queries)
click to toggle source
Give array of Query
to find, returns Results
@param queries [Array<Query>] @return [ResultSet]
# File lib/circleci_artifact.rb, line 110 def fetch_queries(queries) raise ArgumentError, 'Error: Must have queries' unless queries.is_a?(Array) build = CircleCi::Build.new @username, @reponame, nil, @build, @config artifacts = build.artifacts if artifacts.nil? STDERR.puts 'Error: No artifacts' return Results.new end parse(artifacts: artifacts, queries: queries) end
parse(artifacts:, queries:)
click to toggle source
Internal method for extracting results @param artifacts [CircleCi::Artifacts] @param queries [Array<Query>] @return [ResultSet]
# File lib/circleci_artifact.rb, line 126 def parse(artifacts:, queries:) raise ArgumentError, 'Error: Must have artifacts' if artifacts.nil? raise ArgumentError, 'Error: Must have queries' unless queries.is_a?(Array) # Example # [ # { # node_index: 0, # path: "/tmp/circle-artifacts.NHQxLku/cherry-pie.png", # pretty_path: "$CIRCLE_ARTIFACTS/cherry-pie.png", # url: "https://circleci.com/gh/circleci/mongofinil/22/artifacts/0/tmp/circle-artifacts.NHQxLku/cherry-pie.png" # }, # { # node_index: 0, # path: "/tmp/circle-artifacts.NHQxLku/rhubarb-pie.png", # pretty_path: "$CIRCLE_ARTIFACTS/rhubarb-pie.png", # url: "https://circleci.com/gh/circleci/mongofinil/22/artifacts/0/tmp/circle-artifacts.NHQxLku/rhubarb-pie.png" # } # ] results = ResultSet.new artifacts.body.each do |artifact| url = artifact['url'] if url.nil? STDERR.puts "Warning: No URL found on #{artifact}" next end query = queries.find { |q| url.include?(q.url_substring) } next if query.nil? result = Result.new(query: query, url: url) results.add_result(result) end results end