Added custom build
This commit is contained in:
@@ -16,7 +16,9 @@ BUILD_STRUCTURE = {
|
|||||||
class MockManager
|
class MockManager
|
||||||
attr :path, :config, :error, :last_status, :last_pid, :prep_dir, :db, :resultpath, :process_log, :repo_path, :git_path, :build_id, :log, :recips, :spec, :repo_lock, :git_id, :tmp_bld
|
attr :path, :config, :error, :last_status, :last_pid, :prep_dir, :db, :resultpath, :process_log, :repo_path, :git_path, :build_id, :log, :recips, :spec, :repo_lock, :git_id, :tmp_bld
|
||||||
|
|
||||||
def initialize(path, config, cfg_counter_path, db, result_path, repo_path, git_path, build_id, recips, spec_file, repo_lock, git_id, tmp_bld)
|
def initialize(path, config, cfg_counter_path, db, result_path,
|
||||||
|
repo_path, git_path, build_id, recips, spec_file, repo_lock,
|
||||||
|
git_id, tmp_bld, build_script)
|
||||||
@error = nil
|
@error = nil
|
||||||
unless File.exist? (path)
|
unless File.exist? (path)
|
||||||
Dir.mkdir(path)
|
Dir.mkdir(path)
|
||||||
@@ -34,6 +36,7 @@ class MockManager
|
|||||||
@repo_lock = repo_lock
|
@repo_lock = repo_lock
|
||||||
@git_id = git_id
|
@git_id = git_id
|
||||||
@tmp_bld = tmp_bld
|
@tmp_bld = tmp_bld
|
||||||
|
@build_script = build_script
|
||||||
|
|
||||||
File.open(cfg_counter_path, "r+") do |f|
|
File.open(cfg_counter_path, "r+") do |f|
|
||||||
f.flock(File::LOCK_EX)
|
f.flock(File::LOCK_EX)
|
||||||
@@ -178,6 +181,27 @@ class MockManager
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def build_custom()
|
||||||
|
@log.info("Начало сборки пакетов (сценарий кастомной сборки)")
|
||||||
|
result_dir = File.join(@prep_dir, BUILD_STRUCTURE[:RESULT])
|
||||||
|
|
||||||
|
|
||||||
|
@log.info("Формируем скрипт кастомной сборки #{@build_script[:script_name]}")
|
||||||
|
rcp_name = "custom_#{@build_script[:script_name]}"
|
||||||
|
File.open(File.join(@tmp_src, rcp_name), "w") do |f|
|
||||||
|
f.write(@build_script[:content].gsub(/\r$/, ""))
|
||||||
|
end
|
||||||
|
Dir.chdir(@tmp_src) do
|
||||||
|
script = File.join(@tmp_src, rcp_name)
|
||||||
|
cmd_args = %Q(/usr/bin/bash -x "#{script}" "#{result_dir}")
|
||||||
|
@log.debug(cmd_args)
|
||||||
|
cmd = Runner.new(cmd_args, @log)
|
||||||
|
cmd.run_clean
|
||||||
|
@error = true if cmd.exit_status != 0
|
||||||
|
@log.error("Ошибка операции") if @error
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
def save_logs()
|
def save_logs()
|
||||||
FileUtils.mkdir_p(File.join(@resultpath, "#{@build_id}"))
|
FileUtils.mkdir_p(File.join(@resultpath, "#{@build_id}"))
|
||||||
src_result = File.join(@prep_dir, BUILD_STRUCTURE[:RESULT_SRPM])
|
src_result = File.join(@prep_dir, BUILD_STRUCTURE[:RESULT_SRPM])
|
||||||
@@ -304,8 +328,12 @@ class MockManager
|
|||||||
prepare_structure if @error == false
|
prepare_structure if @error == false
|
||||||
prepare_src if @error == false
|
prepare_src if @error == false
|
||||||
prepare_source if @error == false
|
prepare_source if @error == false
|
||||||
|
if @build_script[:script_name].nil?
|
||||||
prepare_src_rpm if @error == false
|
prepare_src_rpm if @error == false
|
||||||
build_rpm if @error == false
|
build_rpm if @error == false
|
||||||
|
else
|
||||||
|
build_custom if @error == false
|
||||||
|
end
|
||||||
save_logs
|
save_logs
|
||||||
save_rpms if @error == false
|
save_rpms if @error == false
|
||||||
rescue => e
|
rescue => e
|
||||||
|
|||||||
@@ -324,7 +324,10 @@ class ProjectsActions
|
|||||||
proj_info = get_project(prj_id)
|
proj_info = get_project(prj_id)
|
||||||
tmp_bld = false
|
tmp_bld = false
|
||||||
tmp_bld = true if proj_info[:tmpstpbuild].to_i != 0
|
tmp_bld = true if proj_info[:tmpstpbuild].to_i != 0
|
||||||
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)
|
build_script = get_project_custom_build(prj_id, git_id)
|
||||||
|
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, build_script)
|
||||||
bld_id = build_id
|
bld_id = build_id
|
||||||
@db.update_build_task_error_log(build_id, mock.get_build_process_log)
|
@db.update_build_task_error_log(build_id, mock.get_build_process_log)
|
||||||
@db.update_build_task_status(build_id, 3)
|
@db.update_build_task_status(build_id, 3)
|
||||||
|
|||||||
@@ -39,6 +39,8 @@
|
|||||||
Так же после выполенения скрипта удалите и остановите все запущенные контейнеры, т.к скрипт сам должен контролировать это.
|
Так же после выполенения скрипта удалите и остановите все запущенные контейнеры, т.к скрипт сам должен контролировать это.
|
||||||
Так же убедитесь, что все log файлы сборки и собранные пакеты положены в каталоги:.
|
Так же убедитесь, что все log файлы сборки и собранные пакеты положены в каталоги:.
|
||||||
Скрипт выполняется из корня git проекта.
|
Скрипт выполняется из корня git проекта.
|
||||||
|
Первый параметр передаваемый в скрипт содержит каталог, куда еобходимо ложить rpm пакеты и log файлы.
|
||||||
|
У log файлов обязательно должно быть расширение .log, чтоб они попали в отчет сборки.
|
||||||
</label>
|
</label>
|
||||||
<textarea class="form-control" id="codedata" name="codedata" rows="15"><%= @old_content %></textarea>
|
<textarea class="form-control" id="codedata" name="codedata" rows="15"><%= @old_content %></textarea>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
Reference in New Issue
Block a user