diff --git a/classes/mock.rb b/classes/mock.rb index f1ece0a..eb375dc 100644 --- a/classes/mock.rb +++ b/classes/mock.rb @@ -54,7 +54,6 @@ class MockManager end def clean_build - @log.info("Удаление временной сборочной среды #{@path}") FileUtils.rm_rf(@path) end @@ -222,7 +221,7 @@ class MockManager FileUtils.mkdir_p(File.join(@resultpath, "#{@build_id}")) if File.exist?(@process_log) dst = File.join(@resultpath, "#{@build_id}") - FileUtils.cp_r(@process_log, dst, verbose: true, remove_destination: true) + FileUtils.cp_r(@process_log, dst, verbose: false, remove_destination: true) end end @@ -231,6 +230,7 @@ class MockManager @db.before_fork spock = Spork.spork(:logger => log) do @db.after_fork + old_stdout = $stdout.dup $stdout = File.open(@process_log, "w") @log = Logger.new($stdout) if @spec == "" @@ -246,11 +246,13 @@ class MockManager save_logs save_rpms if @error == false rescue => e + @error = true puts e end + $stdout = old_stdout + @log.close save_prg_log clean_build - @log.close if @error @db.update_build_task_status(@build_id, 1) else diff --git a/classes/projects.rb b/classes/projects.rb index 3f86cf6..99b4256 100644 --- a/classes/projects.rb +++ b/classes/projects.rb @@ -279,10 +279,13 @@ class ProjectsActions lockf_path = File.join(prepare_path, "lock") File.open(lockf_path, File::RDWR | File::CREAT) do |f| result = f.flock(File::LOCK_EX | File::LOCK_NB) - unless result + if result == false #Файл заблокирован считать id и вывести сведения о сборке build_ok = false - build_id = f.gets.strip.to_i + build_id = f.gets + unless build_id.nil? + build_id = build_id.strip.to_i + end if build_id > 0 build_info = @db.get_build_task_process_log(build_id) unless build_info.nil? @@ -304,17 +307,19 @@ class ProjectsActions lockf_path = File.join(prepare_path, "lock") File.open(lockf_path, File::RDWR | File::CREAT) do |f| f.flock(File::LOCK_EX) + f.rewind #Начинаем сборку build_path = File.join(proj_path, PROJECTS_STRUCTURE[:LOGS], git_name[:reponame]) repo_path = File.join(proj_path, PROJECTS_STRUCTURE[:REPO]) git_source = File.join(proj_path, PROJECTS_STRUCTURE[:SRC], git_name[:reponame]) @db.create_build_task(prj_id, git_id, build_path) build_id = @db.last_id + f.puts(build_id) + f.flush mock = MockManager.new(prepare_path, get_project_config(prj_id), counter_file, @db, build_path, repo_path, git_source, build_id, prep_script, spec_file, repo_lock, git_id) bld_id = build_id @db.update_build_task_error_log(build_id, mock.get_build_process_log) mock.build_task - f.flock(File::LOCK_UN) end end bld_id