Added custom build
This commit is contained in:
@@ -16,7 +16,9 @@ BUILD_STRUCTURE = {
|
||||
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
|
||||
|
||||
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
|
||||
unless File.exist? (path)
|
||||
Dir.mkdir(path)
|
||||
@@ -34,6 +36,7 @@ class MockManager
|
||||
@repo_lock = repo_lock
|
||||
@git_id = git_id
|
||||
@tmp_bld = tmp_bld
|
||||
@build_script = build_script
|
||||
|
||||
File.open(cfg_counter_path, "r+") do |f|
|
||||
f.flock(File::LOCK_EX)
|
||||
@@ -178,6 +181,27 @@ class MockManager
|
||||
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()
|
||||
FileUtils.mkdir_p(File.join(@resultpath, "#{@build_id}"))
|
||||
src_result = File.join(@prep_dir, BUILD_STRUCTURE[:RESULT_SRPM])
|
||||
@@ -304,8 +328,12 @@ class MockManager
|
||||
prepare_structure if @error == false
|
||||
prepare_src if @error == false
|
||||
prepare_source if @error == false
|
||||
prepare_src_rpm if @error == false
|
||||
build_rpm if @error == false
|
||||
if @build_script[:script_name].nil?
|
||||
prepare_src_rpm if @error == false
|
||||
build_rpm if @error == false
|
||||
else
|
||||
build_custom if @error == false
|
||||
end
|
||||
save_logs
|
||||
save_rpms if @error == false
|
||||
rescue => e
|
||||
|
||||
@@ -324,7 +324,10 @@ class ProjectsActions
|
||||
proj_info = get_project(prj_id)
|
||||
tmp_bld = false
|
||||
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
|
||||
@db.update_build_task_error_log(build_id, mock.get_build_process_log)
|
||||
@db.update_build_task_status(build_id, 3)
|
||||
|
||||
@@ -39,6 +39,8 @@
|
||||
Так же после выполенения скрипта удалите и остановите все запущенные контейнеры, т.к скрипт сам должен контролировать это.
|
||||
Так же убедитесь, что все log файлы сборки и собранные пакеты положены в каталоги:.
|
||||
Скрипт выполняется из корня git проекта.
|
||||
Первый параметр передаваемый в скрипт содержит каталог, куда еобходимо ложить rpm пакеты и log файлы.
|
||||
У log файлов обязательно должно быть расширение .log, чтоб они попали в отчет сборки.
|
||||
</label>
|
||||
<textarea class="form-control" id="codedata" name="codedata" rows="15"><%= @old_content %></textarea>
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user