WIP
This commit is contained in:
24
bin/build_test_runner.rb
Normal file
24
bin/build_test_runner.rb
Normal file
@@ -0,0 +1,24 @@
|
||||
#!/usr/bin/env ruby
|
||||
require "bundler/setup"
|
||||
$LOAD_PATH.unshift File.expand_path("../../lib", __FILE__)
|
||||
|
||||
require "pipeline"
|
||||
|
||||
track_slug = ARGV[0]
|
||||
project_suffix = "test-runner"
|
||||
|
||||
env_suffix = (ENV["env"] == "production") ? "" : "-dev"
|
||||
|
||||
puts "Building <#{project_suffix}> for <#{track_slug}> (#{env_suffix})"
|
||||
|
||||
repo = Pipeline::AnalyzerRepo.for_track(track_slug, project_suffix)
|
||||
latest_tag = repo.tags.keys.last
|
||||
if (latest_tag.nil?)
|
||||
latest_tag = "master"
|
||||
end
|
||||
|
||||
config = YAML.load(File.read(File.expand_path('../../config/pipeline.yml', __FILE__)))
|
||||
credentials = Aws::Credentials.new(config["aws_access_key_id"], config["aws_secret_access_key"])
|
||||
container_repo = Pipeline::ContainerRepo.new("#{track_slug}-#{project_suffix}#{env_suffix}", credentials)
|
||||
|
||||
Pipeline::Build::TestRunnerBuild.(latest_tag, track_slug, repo, container_repo)
|
||||
@@ -38,14 +38,6 @@ class PipelineClient
|
||||
return parsed
|
||||
end
|
||||
|
||||
def build_analyzer(track_slug)
|
||||
send_msg("build-analyzer_#{track_slug}", 300)
|
||||
end
|
||||
|
||||
def build_test_runner(track_slug)
|
||||
send_msg("build-test-runner_#{track_slug}", 300)
|
||||
end
|
||||
|
||||
def analyze(track_slug, exercise_slug, solution_slug, iteration_folder)
|
||||
params = {
|
||||
action: "analyze_iteration",
|
||||
|
||||
@@ -1,23 +0,0 @@
|
||||
#!/usr/bin/env ruby
|
||||
|
||||
require_relative "./client"
|
||||
|
||||
pipeline = PipelineClient.new
|
||||
|
||||
# return
|
||||
lang = ARGV[0] || "ruby"
|
||||
lang = "ruby"
|
||||
|
||||
r = pipeline.analyze(lang, "two-fer", "soln-42", "s3://exercism-dev/iterations/fff07700-e1c3-402d-8937-823aeefb159f")
|
||||
# puts r
|
||||
if r["logs"]
|
||||
r["logs"].each do |log_line|
|
||||
puts "+ #{log_line["cmd"]}"
|
||||
puts log_line["stdout"]
|
||||
puts log_line["stderr"]
|
||||
end
|
||||
end
|
||||
|
||||
puts r["result"]
|
||||
|
||||
pipeline.close_socket
|
||||
@@ -1,23 +0,0 @@
|
||||
#!/usr/bin/env ruby
|
||||
|
||||
require_relative "./client"
|
||||
|
||||
pipeline = PipelineClient.new
|
||||
|
||||
# return
|
||||
lang = ARGV[0] || "ruby"
|
||||
lang = "ruby"
|
||||
|
||||
r = pipeline.test_run(lang, "two-fer", "soln-42", "s3://exercism-dev/iterations/fff07700-e1c3-402d-8937-823aeefb159f")
|
||||
# puts r
|
||||
if r["logs"]
|
||||
r["logs"].each do |log_line|
|
||||
puts "+ #{log_line["cmd"]}"
|
||||
puts log_line["stdout"]
|
||||
puts log_line["stderr"]
|
||||
end
|
||||
end
|
||||
|
||||
puts r["result"]
|
||||
|
||||
pipeline.close_socket
|
||||
@@ -1,25 +0,0 @@
|
||||
#!/usr/bin/env ruby
|
||||
|
||||
require_relative "./client"
|
||||
|
||||
pipeline = PipelineClient.new
|
||||
|
||||
|
||||
# return
|
||||
lang = ARGV[0] || "ruby"
|
||||
lang = ARGV[1] || "ruby"
|
||||
|
||||
r = pipeline.represent(lang, "two-fer", "soln-42",
|
||||
"s3://exercism-iterations/production/iterations/1182520")
|
||||
# puts r
|
||||
if r["logs"]
|
||||
r["logs"].each do |log_line|
|
||||
puts "+ #{log_line["cmd"]}"
|
||||
puts log_line["stdout"]
|
||||
puts log_line["stderr"]
|
||||
end
|
||||
end
|
||||
|
||||
puts r["result"]
|
||||
|
||||
pipeline.close_socket
|
||||
@@ -8,6 +8,4 @@ Pipeline.load_config(File.expand_path('../../config/pipeline.yml', __FILE__))
|
||||
context = ZMQ::Context.new
|
||||
router = Pipeline::Rpc::Router.new(context)
|
||||
|
||||
|
||||
|
||||
router.run
|
||||
|
||||
@@ -28,56 +28,38 @@ module Pipeline
|
||||
@config
|
||||
end
|
||||
|
||||
def self.build_analyzer(track_slug)
|
||||
repo = Pipeline::AnalyzerRepo.for_track(track_slug)
|
||||
latest_tag = repo.tags.keys.last
|
||||
if (latest_tag.nil?)
|
||||
latest_tag = "master"
|
||||
end
|
||||
Pipeline::Build::AnalyzerBuild.(latest_tag, track_slug, repo)
|
||||
end
|
||||
|
||||
def self.build_test_runner(track_slug)
|
||||
repo = Pipeline::AnalyzerRepo.test_runner_for_track(track_slug)
|
||||
latest_tag = repo.tags.keys.last
|
||||
if (latest_tag.nil?)
|
||||
latest_tag = "master"
|
||||
end
|
||||
Pipeline::Build::TestRunnerBuild.(latest_tag, track_slug, repo)
|
||||
end
|
||||
|
||||
def self.release(language_slug)
|
||||
puts "Releasing #{language_slug}"
|
||||
env_base = "/tmp/analyzer-env/#{SecureRandom.hex}"
|
||||
env_base = "/tmp/analyzer-env/1e9c733fd7502974c2a3fdd85da9c844"
|
||||
environment = Runtime::RuntimeEnvironment.new(env_base)
|
||||
environment.prepare
|
||||
environment.release_analyzer(language_slug)
|
||||
end
|
||||
|
||||
def self.analyze!(language_slug, exercise_slug, solution_slug)
|
||||
env_base = "/tmp/analyzer-env/1e9c733fd7502974c2a3fdd85da9c844"
|
||||
environment = Runtime::RuntimeEnvironment.new(env_base)
|
||||
analysis_run = environment.new_analysis(language_slug, exercise_slug, solution_slug)
|
||||
analysis_run.prepare_iteration do |iteration_folder|
|
||||
yield(iteration_folder)
|
||||
end
|
||||
begin
|
||||
analysis_run.analyze!
|
||||
rescue => e
|
||||
puts e
|
||||
ensure
|
||||
# puts "---"
|
||||
# puts analysis_run.stdout
|
||||
# puts "==="
|
||||
# puts analysis_run.stderr
|
||||
# puts "---"
|
||||
# puts analysis_run.success?
|
||||
# puts analysis_run.exit_status
|
||||
# puts analysis_run.result
|
||||
puts "DONE"
|
||||
end
|
||||
end
|
||||
# def self.release(language_slug)
|
||||
# puts "Releasing #{language_slug}"
|
||||
# env_base = "/tmp/analyzer-env/#{SecureRandom.hex}"
|
||||
# env_base = "/tmp/analyzer-env/1e9c733fd7502974c2a3fdd85da9c844"
|
||||
# environment = Runtime::RuntimeEnvironment.new(env_base)
|
||||
# environment.prepare
|
||||
# environment.release_analyzer(language_slug)
|
||||
# end
|
||||
#
|
||||
# def self.analyze!(language_slug, exercise_slug, solution_slug)
|
||||
# env_base = "/tmp/analyzer-env/1e9c733fd7502974c2a3fdd85da9c844"
|
||||
# environment = Runtime::RuntimeEnvironment.new(env_base)
|
||||
# analysis_run = environment.new_analysis(language_slug, exercise_slug, solution_slug)
|
||||
# analysis_run.prepare_iteration do |iteration_folder|
|
||||
# yield(iteration_folder)
|
||||
# end
|
||||
# begin
|
||||
# analysis_run.analyze!
|
||||
# rescue => e
|
||||
# puts e
|
||||
# ensure
|
||||
# # puts "---"
|
||||
# # puts analysis_run.stdout
|
||||
# # puts "==="
|
||||
# # puts analysis_run.stderr
|
||||
# # puts "---"
|
||||
# # puts analysis_run.success?
|
||||
# # puts analysis_run.exit_status
|
||||
# # puts analysis_run.result
|
||||
# puts "DONE"
|
||||
# end
|
||||
# end
|
||||
end
|
||||
|
||||
# require "pipeline/rpc/router"
|
||||
|
||||
@@ -4,13 +4,8 @@ class Pipeline::AnalyzerRepo
|
||||
|
||||
attr_reader :repo_url
|
||||
|
||||
def self.for_track(track_slug)
|
||||
repo_url = "https://github.com/exercism/#{track_slug}-analyzer"
|
||||
Pipeline::AnalyzerRepo.new(repo_url)
|
||||
end
|
||||
|
||||
def self.test_runner_for_track(track_slug)
|
||||
repo_url = "https://github.com/exercism/#{track_slug}-test-runner"
|
||||
def self.for_track(track_slug, suffix)
|
||||
repo_url = "https://github.com/exercism/#{track_slug}-#{suffix}"
|
||||
Pipeline::AnalyzerRepo.new(repo_url)
|
||||
end
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
class Pipeline::ContainerRepo
|
||||
|
||||
def self.instance_for(image_name, credentials)
|
||||
def self.instance_for(container_slug, credentials)
|
||||
Pipeline::ContainerRepo.new(container_slug, credentials)
|
||||
end
|
||||
|
||||
|
||||
@@ -65,10 +65,12 @@ module Pipeline::Rpc::Worker
|
||||
msg = []
|
||||
|
||||
@poller.listen_for_messages do |action_task|
|
||||
puts "ACTION #{action_task}"
|
||||
unless action_task.nil?
|
||||
action_task.environment = environment
|
||||
result = action_task.invoke
|
||||
if result && result["return_address"]
|
||||
puts "RESULT #{result}"
|
||||
if result && result[:return_address]
|
||||
outgoing.send_string(result.to_json)
|
||||
end
|
||||
end
|
||||
|
||||
@@ -27,7 +27,7 @@ module Pipeline::Build
|
||||
end
|
||||
|
||||
def test_check_tag_permits_master_branch
|
||||
@analyzer_repo = Pipeline::AnalyzerRepo.for_track("demotrack")
|
||||
@analyzer_repo = Pipeline::AnalyzerRepo.for_track("demotrack", "analyzer")
|
||||
@cmd = AnalyzerBuild.new("master", "demotrack", @analyzer_repo, nil)
|
||||
@cmd.expects(:repo).never
|
||||
@cmd.check_tag_exists
|
||||
|
||||
Reference in New Issue
Block a user