Compare commits

..

2 Commits

Author SHA1 Message Date
Alexey Berezhok 482a586b6e Added clean mock cache
6 days ago
Alexey Berezhok f2136260c9 Added build time showing
7 days ago

@ -980,8 +980,9 @@ get "/buildinfofraw" do
if params["file"].nil? || !File.exist?(params["file"]) if params["file"].nil? || !File.exist?(params["file"])
print_error_page(503, "Файл не найден") print_error_page(503, "Файл не найден")
else else
if !File.binary?(params["file"]) && params["file"].start_with?(File.join(Dir.pwd(), cfg.get_projects_path)) if File.binary?(params["file"]) && params["file"].start_with?(File.join(Dir.pwd(), cfg.get_projects_path))
send_file params["file"] f_name = File.basename(params["file"])
send_file(params["file"], :filename => f_name, :type => "application/octet-stream", :disposition => 'attachment')
else else
print_error_page(503, "Файл не может быть скачан") print_error_page(503, "Файл не может быть скачан")
end end
@ -1437,6 +1438,14 @@ get "/sanitize" do
erb :sanitize erb :sanitize
end end
get "/buildsclean" do
@page_name = "Очистка окружений сборок"
mock_cache_path = "/var/cache/mock/"
@list_cleaned = get_dirs_in_mock_cache(mock_cache_path)
MockManager.clean_mock
erb :buildsclean
end
not_found do not_found do
status 404 status 404
@page_name = "Кто-то потерялся" @page_name = "Кто-то потерялся"

@ -320,7 +320,7 @@ class DBase
end end
def get_builds() def get_builds()
$DDB["select t1.id as buildid, t1.create_at as createat, t1.result as state, t2.reponame as reponame, t2.id as gitid, t3.id as projid, t3.projname as prjname, count(*) as pkgcnt from buildtask as t1 join repos as t2 on t1.repo_id = t2.id join projects as t3 on t1.proj_id = t3.id left join build_rpm as t4 on t4.build_id = t1.id group by buildid, createat, state, reponame, projid, prjname, gitid order by t1.id desc"].all $DDB["select t1.id as buildid, t1.create_at as createat, t1.result as state, case when buildstart is null then 0 when buildstop is null then 0 else Cast((JulianDay(buildstop) - JulianDay(buildstart))*24*60*60 As Integer) end as timeproc, t2.reponame as reponame, t2.id as gitid, t3.id as projid, t3.projname as prjname, count(*) as pkgcnt from buildtask as t1 join repos as t2 on t1.repo_id = t2.id join projects as t3 on t1.proj_id = t3.id left join build_rpm as t4 on t4.build_id = t1.id group by buildid, createat, state, reponame, projid, prjname, gitid order by t1.id desc"].all
end end
def get_build_info(build_id) def get_build_info(build_id)
@ -341,11 +341,11 @@ class DBase
end end
def get_builds_for_project(prj_id) def get_builds_for_project(prj_id)
$DDB["select t1.id as buildid, t1.create_at as createat, t1.result as state, t2.reponame as reponame, t2.id as gitid, t3.id as projid, t3.projname as prjname, count(*) as pkgcnt from buildtask as t1 join repos as t2 on t1.repo_id = t2.id join projects as t3 on t1.proj_id = t3.id left join build_rpm as t4 on t4.build_id = t1.id where t1.proj_id = ? group by buildid, createat, state, reponame, projid, prjname, gitid order by t1.id desc", prj_id.to_i].all $DDB["select t1.id as buildid, t1.create_at as createat, t1.result as state, case when buildstart is null then 0 when buildstop is null then 0 else Cast((JulianDay(buildstop) - JulianDay(buildstart))*24*60*60 As Integer) end as timeproc,t2.reponame as reponame, t2.id as gitid, t3.id as projid, t3.projname as prjname, count(*) as pkgcnt from buildtask as t1 join repos as t2 on t1.repo_id = t2.id join projects as t3 on t1.proj_id = t3.id left join build_rpm as t4 on t4.build_id = t1.id where t1.proj_id = ? group by buildid, createat, state, reponame, projid, prjname, gitid order by t1.id desc", prj_id.to_i].all
end end
def get_builds_for_project_git(prj_id, git_id) def get_builds_for_project_git(prj_id, git_id)
$DDB["select t1.id as buildid, t1.create_at as createat, t1.result as state, t2.reponame as reponame, t2.id as gitid, t3.id as projid, t3.projname as prjname, count(*) as pkgcnt from buildtask as t1 join repos as t2 on t1.repo_id = t2.id join projects as t3 on t1.proj_id = t3.id left join build_rpm as t4 on t4.build_id = t1.id where t1.proj_id = ? and t1.repo_id = ? group by buildid, createat, state, reponame, projid, prjname, gitid order by t1.id desc", prj_id.to_i, git_id.to_i].all $DDB["select t1.id as buildid, t1.create_at as createat, t1.result as state, case when buildstart is null then 0 when buildstop is null then 0 else Cast((JulianDay(buildstop) - JulianDay(buildstart))*24*60*60 As Integer) end as timeproc ,t2.reponame as reponame, t2.id as gitid, t3.id as projid, t3.projname as prjname, count(*) as pkgcnt from buildtask as t1 join repos as t2 on t1.repo_id = t2.id join projects as t3 on t1.proj_id = t3.id left join build_rpm as t4 on t4.build_id = t1.id where t1.proj_id = ? and t1.repo_id = ? group by buildid, createat, state, reponame, projid, prjname, gitid order by t1.id desc", prj_id.to_i, git_id.to_i].all
end end
def delete_git_from_project(prj_id, git_id) def delete_git_from_project(prj_id, git_id)
@ -392,4 +392,12 @@ class DBase
def cancel_hang_builds() def cancel_hang_builds()
BuildTask.where(result: [0, 3]).update(result: 4) BuildTask.where(result: [0, 3]).update(result: 4)
end end
def update_build_task_begin_time(build_id)
BuildTask.where(id: build_id.to_i).update(buildstart: DateTime.now)
end
def update_build_task_end_time(build_id)
BuildTask.where(id: build_id.to_i).update(buildstop: DateTime.now)
end
end end

@ -286,6 +286,7 @@ class MockManager
end end
end end
@db.update_build_task_status(@build_id, 0) @db.update_build_task_status(@build_id, 0)
@db.update_build_task_begin_time(@build_id)
if @spec == "" if @spec == ""
@error = true @error = true
@ -312,6 +313,7 @@ class MockManager
else else
@db.update_build_task_status(@build_id, 2) @db.update_build_task_status(@build_id, 2)
end end
@db.update_build_task_end_time(@build_id)
global_lock.flock(File::LOCK_UN) global_lock.flock(File::LOCK_UN)
end end
@ -319,4 +321,10 @@ class MockManager
@db.after_fork @db.after_fork
end end
def self.clean_mock
cmd_args = %Q(/usr/bin/mock --scrub-all-chroots)
cmd = Runner.new(cmd_args)
cmd.run_clean
end
end end

@ -54,3 +54,8 @@ end
def get_rpms_list(directory) def get_rpms_list(directory)
Dir.glob(File.join(directory, "**", "*.rpm")).reject { |f| File.directory?(f) || f =~ /repodata\// }.map { |f| f.delete_prefix(directory + "/") } Dir.glob(File.join(directory, "**", "*.rpm")).reject { |f| File.directory?(f) || f =~ /repodata\// }.map { |f| f.delete_prefix(directory + "/") }
end end
def get_dirs_in_mock_cache(dir_path)
Dir.glob(File.join(dir_path, "*")).select { |f| File.directory?(f) }.map{ |f| File.basename(f) }
end

@ -0,0 +1,12 @@
require "sequel"
Sequel.migration do
change do
alter_table(:buildtask) do
add_column :buildstart, DateTime
add_column :buildstop, DateTime
set_column_allow_null :buildstart
set_column_allow_null :buildstop
end
end
end

@ -0,0 +1,23 @@
<%= erb :header %>
<div class="container">
<div class="row">
<div class="col-md-4"></div>
<div class="col-md-4">
<div class="card">
<div class="card-header">
<h5 class="mb-0">Подчистка окружений сборок произошла успешно</h5>
</div>
<div class="card-body">
<p class="card-text">Ни один проект не был очищен, очищены только окружения сборок. Это значит, что следующая сборка будет длится дольше, но некоторые ошибки накопившиеся в кэше сборки будут устранены</p>
<ul class="list-group">
<% @list_cleaned.each do |item| %>
<li class="list-group-item"><%= item %></li>
<% end %>
</ul>
</div>
</div>
</div>
<div class="col-md-4"></div>
</div>
</div>
<%= erb :footer %>

@ -8,6 +8,7 @@
<th scope="col" class="text-center">git репозиторий</th> <th scope="col" class="text-center">git репозиторий</th>
<th scope="col" class="text-center">Дата сборки</th> <th scope="col" class="text-center">Дата сборки</th>
<th scope="col" class="text-center">Число собранных пакетов</th> <th scope="col" class="text-center">Число собранных пакетов</th>
<th scope="col" class="text-center">Время сборки</th>
<th scope="col" class="text-center">Состояние</th> <th scope="col" class="text-center">Состояние</th>
<th scope="col" class="text-center">Перейти к сборке</th> <th scope="col" class="text-center">Перейти к сборке</th>
</tr> </tr>
@ -42,6 +43,7 @@
<td class="text-center"><a href="/prjgitf/<%= ERB::Util.url_encode(item[:projid]) %>/<%= ERB::Util.url_encode(item[:gitid]) %>"><%= item[:reponame] %></a></td> <td class="text-center"><a href="/prjgitf/<%= ERB::Util.url_encode(item[:projid]) %>/<%= ERB::Util.url_encode(item[:gitid]) %>"><%= item[:reponame] %></a></td>
<td class="text-center"><%= item[:createat] %></td> <td class="text-center"><%= item[:createat] %></td>
<td class="text-center"><%= item[:pkgcnt] %></td> <td class="text-center"><%= item[:pkgcnt] %></td>
<td class="text-center"><%= item[:timeproc] %> сек</td>
<td class="text-center <%= cl %>"> <td class="text-center <%= cl %>">
<%= st %> <%= st %>
</td> </td>

@ -7,6 +7,7 @@
<li class="list-inline-item me-4"><a class="link-light" href="https://brepo.ru">Документация</a></li> <li class="list-inline-item me-4"><a class="link-light" href="https://brepo.ru">Документация</a></li>
<li class="list-inline-item me-4"><a class="link-light" href="https://dev.brepo.ru">Разработка</a></li> <li class="list-inline-item me-4"><a class="link-light" href="https://dev.brepo.ru">Разработка</a></li>
<li class="list-inline-item"><a class="link-light" href="/sanitize">Подчистка</a></li> <li class="list-inline-item"><a class="link-light" href="/sanitize">Подчистка</a></li>
<li class="list-inline-item"><a class="link-light" href="/buildsclean">Сбросить buildroots</a></li>
</ul> </ul>
<ul class="list-inline"> <ul class="list-inline">
<li class="list-inline-item me-4"><a href="https://dev.brepo.ru"><svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" fill="currentColor" viewBox="0 0 16 16" class="bi bi-github text-light"> <li class="list-inline-item me-4"><a href="https://dev.brepo.ru"><svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" fill="currentColor" viewBox="0 0 16 16" class="bi bi-github text-light">

@ -9,6 +9,7 @@
<th scope="col" class="text-center">git репозиторий</th> <th scope="col" class="text-center">git репозиторий</th>
<th scope="col" class="text-center">Дата сборки</th> <th scope="col" class="text-center">Дата сборки</th>
<th scope="col" class="text-center">Число собранных пакетов</th> <th scope="col" class="text-center">Число собранных пакетов</th>
<th scope="col" class="text-center">Время сборки</th>
<th scope="col" class="text-center">Состояние</th> <th scope="col" class="text-center">Состояние</th>
<th scope="col" class="text-center">Перейти к сборке</th> <th scope="col" class="text-center">Перейти к сборке</th>
</tr> </tr>
@ -43,6 +44,7 @@
<td class="text-center"><a href="/prjgitf/<%= ERB::Util.url_encode(item[:projid]) %>/<%= ERB::Util.url_encode(item[:gitid]) %>"><%= item[:reponame] %></a></td> <td class="text-center"><a href="/prjgitf/<%= ERB::Util.url_encode(item[:projid]) %>/<%= ERB::Util.url_encode(item[:gitid]) %>"><%= item[:reponame] %></a></td>
<td class="text-center"><%= item[:createat] %></td> <td class="text-center"><%= item[:createat] %></td>
<td class="text-center"><%= item[:pkgcnt] %></td> <td class="text-center"><%= item[:pkgcnt] %></td>
<td class="text-center"><%= item[:timeproc] %> сек</td>
<td class="text-center <%= cl %>"> <td class="text-center <%= cl %>">
<%= st %> <%= st %>
</td> </td>

@ -9,6 +9,7 @@
<th scope="col" class="text-center">git репозиторий</th> <th scope="col" class="text-center">git репозиторий</th>
<th scope="col" class="text-center">Дата сборки</th> <th scope="col" class="text-center">Дата сборки</th>
<th scope="col" class="text-center">Число собранных пакетов</th> <th scope="col" class="text-center">Число собранных пакетов</th>
<th scope="col" class="text-center">Время сборки</th>
<th scope="col" class="text-center">Состояние</th> <th scope="col" class="text-center">Состояние</th>
<th scope="col" class="text-center">Перейти к сборке</th> <th scope="col" class="text-center">Перейти к сборке</th>
</tr> </tr>
@ -43,6 +44,7 @@
<td class="text-center"><a href="/prjgitf/<%= ERB::Util.url_encode(item[:projid]) %>/<%= ERB::Util.url_encode(item[:gitid]) %>"><%= item[:reponame] %></a></td> <td class="text-center"><a href="/prjgitf/<%= ERB::Util.url_encode(item[:projid]) %>/<%= ERB::Util.url_encode(item[:gitid]) %>"><%= item[:reponame] %></a></td>
<td class="text-center"><%= item[:createat] %></td> <td class="text-center"><%= item[:createat] %></td>
<td class="text-center"><%= item[:pkgcnt] %></td> <td class="text-center"><%= item[:pkgcnt] %></td>
<td class="text-center"><%= item[:timeproc] %> сек</td>
<td class="text-center <%= cl %>"> <td class="text-center <%= cl %>">
<%= st %> <%= st %>
</td> </td>

Loading…
Cancel
Save