Files
analyzer-pipeline/lib/pipeline.rb

93 lines
2.6 KiB
Ruby
Raw Normal View History

2019-08-08 10:40:29 +01:00
require "mandate"
require "propono"
require "active_support"
require 'securerandom'
require 'rugged'
require 'aws-sdk-ecr'
require 'aws-sdk-s3'
2019-08-15 14:38:14 +01:00
require 'yaml'
2019-09-10 10:58:45 +01:00
require 'json'
require 'ffi-rzmq'
2019-08-08 10:40:29 +01:00
module Pipeline
2019-08-15 14:38:14 +01:00
def self.load_config(config_path)
config = YAML.load(File.read(config_path))
Aws.config.update({
credentials: Aws::Credentials.new(config["aws_access_key_id"], config["aws_secret_access_key"])
})
@config = config
end
def self.config
@config
end
def self.daemon
server = Pipeline::RpcServer.new
server.listen
end
2019-08-15 14:38:14 +01:00
def self.build_analyzer(track_slug)
2019-08-30 18:07:31 +01:00
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)
end
2019-09-02 09:38:22 +01:00
2019-09-03 14:45:25 +01:00
def self.release(language_slug)
2019-09-02 09:38:22 +01:00
FileUtils.rm_rf "/tmp/analyzer-env/"
env_base = "/tmp/analyzer-env/#{SecureRandom.hex}"
2019-09-02 20:23:11 +01:00
env_base = "/tmp/analyzer-env/1e9c733fd7502974c2a3fdd85da9c844"
2019-09-02 09:38:22 +01:00
environment = Runtime::RuntimeEnvironment.new(env_base)
environment.prepare
img = Pipeline::Util::ImgWrapper.new
2019-09-03 14:45:25 +01:00
environment.release_analyzer(language_slug)
2019-09-02 09:38:22 +01:00
end
def self.analyze!(language_slug, exercise_slug, solution_slug)
2019-09-02 09:38:22 +01:00
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
2019-09-03 15:03:33 +01:00
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
2019-09-03 15:03:33 +01:00
puts "DONE"
end
2019-09-02 09:38:22 +01:00
end
2019-08-08 10:40:29 +01:00
end
require "pipeline/rpc_server"
2019-08-08 10:40:29 +01:00
require "pipeline/analyzer_repo"
require "pipeline/validation/check_invokable"
require "pipeline/validation/check_environment_invariants"
require "pipeline/validation/check_fixtures"
2019-08-15 14:00:52 +01:00
require "pipeline/validation/fixture_check_error.rb"
2019-08-30 18:22:24 +01:00
require "pipeline/validation/validate_build"
require "pipeline/util/container_driver"
2019-08-14 08:36:16 +01:00
require "pipeline/util/runc_configurator"
require "pipeline/util/img_wrapper"
require "pipeline/util/runc_wrapper"
2019-09-03 14:45:25 +01:00
require "pipeline/util/external_command"
2019-09-10 10:58:45 +01:00
require "pipeline/util/log_collector"
2019-08-30 18:22:24 +01:00
require "pipeline/build/build_image"
require "pipeline/build/publish_image"
require "pipeline/build/analyzer_build"
2019-09-02 09:38:22 +01:00
require "pipeline/runtime/runtime_environment"
require "pipeline/runtime/analysis_run"