- Добавлена поддержка ожидания сборки

- Изменен порядок сортировки новых пакетов в repoview
This commit is contained in:
Alexey Berezhok
2025-11-15 22:54:56 +03:00
parent d50ee1a708
commit 89f92d265a
14 changed files with 147 additions and 51 deletions

View File

@@ -269,7 +269,7 @@ class ProjectsActions
spec_file
end
def build_projects_git(prj_id, git_id, counter_file)
def build_projects_git(prj_id, git_id, counter_file, build_lock)
bld_id = 0
build_ok = true
proj_path = get_project_path(prj_id)
@@ -283,20 +283,16 @@ class ProjectsActions
File.open(lockf_path, File::RDWR | File::CREAT) do |f|
result = f.flock(File::LOCK_EX | File::LOCK_NB)
if result == false
#Файл заблокирован считать id и вывести сведения о сборке
# Файл заблокирован считать id и вывести сведения о сборке
build_ok = false
build_id = f.gets
unless build_id.nil?
build_id = build_id.strip.to_i
end
if build_id > 0
build_id = build_id.strip.to_i unless build_id.nil?
if build_id.positive?
build_info = @db.get_build_task_process_log(build_id)
unless build_info.nil?
bld_id = build_info[:id]
end
bld_id = build_info[:id] unless build_info.nil?
end
else
#Сборка завершилась, но каталог не подчистился
# Сборка завершилась, но каталог не подчистился
FileUtils.rm_rf(prepare_path)
f.flock(File::LOCK_UN)
build_ok = true
@@ -306,17 +302,17 @@ class ProjectsActions
#Верная ситуация
if build_ok
build_path = File.join(proj_path, PROJECTS_STRUCTURE[:LOGS], git_name[:reponame])
Dir.mkdir(prepare_path)
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])
#Начинаем сборку
@db.create_build_task(prj_id, git_id, build_path)
build_id = @db.last_id
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
proj_info = get_project(prj_id)
@@ -325,7 +321,8 @@ class ProjectsActions
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, tmp_bld)
bld_id = build_id
@db.update_build_task_error_log(build_id, mock.get_build_process_log)
mock.build_task
@db.update_build_task_status(build_id, 3)
mock.build_task(build_lock)
end
end
bld_id