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
|
return parsed
|
||||||
end
|
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)
|
def analyze(track_slug, exercise_slug, solution_slug, iteration_folder)
|
||||||
params = {
|
params = {
|
||||||
action: "analyze_iteration",
|
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
|
context = ZMQ::Context.new
|
||||||
router = Pipeline::Rpc::Router.new(context)
|
router = Pipeline::Rpc::Router.new(context)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
router.run
|
router.run
|
||||||
|
|||||||
@@ -28,56 +28,38 @@ module Pipeline
|
|||||||
@config
|
@config
|
||||||
end
|
end
|
||||||
|
|
||||||
def self.build_analyzer(track_slug)
|
# def self.release(language_slug)
|
||||||
repo = Pipeline::AnalyzerRepo.for_track(track_slug)
|
# puts "Releasing #{language_slug}"
|
||||||
latest_tag = repo.tags.keys.last
|
# env_base = "/tmp/analyzer-env/#{SecureRandom.hex}"
|
||||||
if (latest_tag.nil?)
|
# env_base = "/tmp/analyzer-env/1e9c733fd7502974c2a3fdd85da9c844"
|
||||||
latest_tag = "master"
|
# environment = Runtime::RuntimeEnvironment.new(env_base)
|
||||||
end
|
# environment.prepare
|
||||||
Pipeline::Build::AnalyzerBuild.(latest_tag, track_slug, repo)
|
# environment.release_analyzer(language_slug)
|
||||||
end
|
# end
|
||||||
|
#
|
||||||
def self.build_test_runner(track_slug)
|
# def self.analyze!(language_slug, exercise_slug, solution_slug)
|
||||||
repo = Pipeline::AnalyzerRepo.test_runner_for_track(track_slug)
|
# env_base = "/tmp/analyzer-env/1e9c733fd7502974c2a3fdd85da9c844"
|
||||||
latest_tag = repo.tags.keys.last
|
# environment = Runtime::RuntimeEnvironment.new(env_base)
|
||||||
if (latest_tag.nil?)
|
# analysis_run = environment.new_analysis(language_slug, exercise_slug, solution_slug)
|
||||||
latest_tag = "master"
|
# analysis_run.prepare_iteration do |iteration_folder|
|
||||||
end
|
# yield(iteration_folder)
|
||||||
Pipeline::Build::TestRunnerBuild.(latest_tag, track_slug, repo)
|
# end
|
||||||
end
|
# begin
|
||||||
|
# analysis_run.analyze!
|
||||||
def self.release(language_slug)
|
# rescue => e
|
||||||
puts "Releasing #{language_slug}"
|
# puts e
|
||||||
env_base = "/tmp/analyzer-env/#{SecureRandom.hex}"
|
# ensure
|
||||||
env_base = "/tmp/analyzer-env/1e9c733fd7502974c2a3fdd85da9c844"
|
# # puts "---"
|
||||||
environment = Runtime::RuntimeEnvironment.new(env_base)
|
# # puts analysis_run.stdout
|
||||||
environment.prepare
|
# # puts "==="
|
||||||
environment.release_analyzer(language_slug)
|
# # puts analysis_run.stderr
|
||||||
end
|
# # puts "---"
|
||||||
|
# # puts analysis_run.success?
|
||||||
def self.analyze!(language_slug, exercise_slug, solution_slug)
|
# # puts analysis_run.exit_status
|
||||||
env_base = "/tmp/analyzer-env/1e9c733fd7502974c2a3fdd85da9c844"
|
# # puts analysis_run.result
|
||||||
environment = Runtime::RuntimeEnvironment.new(env_base)
|
# puts "DONE"
|
||||||
analysis_run = environment.new_analysis(language_slug, exercise_slug, solution_slug)
|
# end
|
||||||
analysis_run.prepare_iteration do |iteration_folder|
|
# end
|
||||||
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
|
end
|
||||||
|
|
||||||
# require "pipeline/rpc/router"
|
# require "pipeline/rpc/router"
|
||||||
|
|||||||
@@ -4,13 +4,8 @@ class Pipeline::AnalyzerRepo
|
|||||||
|
|
||||||
attr_reader :repo_url
|
attr_reader :repo_url
|
||||||
|
|
||||||
def self.for_track(track_slug)
|
def self.for_track(track_slug, suffix)
|
||||||
repo_url = "https://github.com/exercism/#{track_slug}-analyzer"
|
repo_url = "https://github.com/exercism/#{track_slug}-#{suffix}"
|
||||||
Pipeline::AnalyzerRepo.new(repo_url)
|
|
||||||
end
|
|
||||||
|
|
||||||
def self.test_runner_for_track(track_slug)
|
|
||||||
repo_url = "https://github.com/exercism/#{track_slug}-test-runner"
|
|
||||||
Pipeline::AnalyzerRepo.new(repo_url)
|
Pipeline::AnalyzerRepo.new(repo_url)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
class Pipeline::ContainerRepo
|
class Pipeline::ContainerRepo
|
||||||
|
|
||||||
def self.instance_for(image_name, credentials)
|
def self.instance_for(container_slug, credentials)
|
||||||
Pipeline::ContainerRepo.new(container_slug, credentials)
|
Pipeline::ContainerRepo.new(container_slug, credentials)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
@@ -65,10 +65,12 @@ module Pipeline::Rpc::Worker
|
|||||||
msg = []
|
msg = []
|
||||||
|
|
||||||
@poller.listen_for_messages do |action_task|
|
@poller.listen_for_messages do |action_task|
|
||||||
|
puts "ACTION #{action_task}"
|
||||||
unless action_task.nil?
|
unless action_task.nil?
|
||||||
action_task.environment = environment
|
action_task.environment = environment
|
||||||
result = action_task.invoke
|
result = action_task.invoke
|
||||||
if result && result["return_address"]
|
puts "RESULT #{result}"
|
||||||
|
if result && result[:return_address]
|
||||||
outgoing.send_string(result.to_json)
|
outgoing.send_string(result.to_json)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -27,7 +27,7 @@ module Pipeline::Build
|
|||||||
end
|
end
|
||||||
|
|
||||||
def test_check_tag_permits_master_branch
|
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 = AnalyzerBuild.new("master", "demotrack", @analyzer_repo, nil)
|
||||||
@cmd.expects(:repo).never
|
@cmd.expects(:repo).never
|
||||||
@cmd.check_tag_exists
|
@cmd.check_tag_exists
|
||||||
|
|||||||
Reference in New Issue
Block a user