From 352eca000314e769771dd2a2518b7342aebcb175 Mon Sep 17 00:00:00 2001 From: Charles Care Date: Mon, 11 Nov 2019 20:27:07 +0000 Subject: [PATCH] WIP --- bin/build_test_runner.rb | 24 +++++++ bin/client.rb | 8 --- bin/invoke.rb | 23 ------ bin/invoke2.rb | 23 ------ bin/invoke3.rb | 25 ------- bin/router | 2 - lib/pipeline.rb | 82 +++++++++------------- lib/pipeline/analyzer_repo.rb | 9 +-- lib/pipeline/container_repo.rb | 2 +- lib/pipeline/rpc/worker/daemon.rb | 4 +- test/pipeline/build/analyzer_build_test.rb | 2 +- 11 files changed, 63 insertions(+), 141 deletions(-) create mode 100644 bin/build_test_runner.rb delete mode 100644 bin/invoke.rb delete mode 100644 bin/invoke2.rb delete mode 100644 bin/invoke3.rb diff --git a/bin/build_test_runner.rb b/bin/build_test_runner.rb new file mode 100644 index 0000000..3616a26 --- /dev/null +++ b/bin/build_test_runner.rb @@ -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) diff --git a/bin/client.rb b/bin/client.rb index 2549d71..3300ae0 100644 --- a/bin/client.rb +++ b/bin/client.rb @@ -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", diff --git a/bin/invoke.rb b/bin/invoke.rb deleted file mode 100644 index 2945c13..0000000 --- a/bin/invoke.rb +++ /dev/null @@ -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 diff --git a/bin/invoke2.rb b/bin/invoke2.rb deleted file mode 100644 index f4bc969..0000000 --- a/bin/invoke2.rb +++ /dev/null @@ -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 diff --git a/bin/invoke3.rb b/bin/invoke3.rb deleted file mode 100644 index f0b1611..0000000 --- a/bin/invoke3.rb +++ /dev/null @@ -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 diff --git a/bin/router b/bin/router index aa6dab7..b20e8c7 100755 --- a/bin/router +++ b/bin/router @@ -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 diff --git a/lib/pipeline.rb b/lib/pipeline.rb index 61b4607..b347db6 100644 --- a/lib/pipeline.rb +++ b/lib/pipeline.rb @@ -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" diff --git a/lib/pipeline/analyzer_repo.rb b/lib/pipeline/analyzer_repo.rb index 4e48d06..6267f87 100644 --- a/lib/pipeline/analyzer_repo.rb +++ b/lib/pipeline/analyzer_repo.rb @@ -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 diff --git a/lib/pipeline/container_repo.rb b/lib/pipeline/container_repo.rb index abb5bac..7b11bd9 100644 --- a/lib/pipeline/container_repo.rb +++ b/lib/pipeline/container_repo.rb @@ -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 diff --git a/lib/pipeline/rpc/worker/daemon.rb b/lib/pipeline/rpc/worker/daemon.rb index 8ece9c7..a148914 100644 --- a/lib/pipeline/rpc/worker/daemon.rb +++ b/lib/pipeline/rpc/worker/daemon.rb @@ -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 diff --git a/test/pipeline/build/analyzer_build_test.rb b/test/pipeline/build/analyzer_build_test.rb index b4608f5..09a422d 100644 --- a/test/pipeline/build/analyzer_build_test.rb +++ b/test/pipeline/build/analyzer_build_test.rb @@ -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