Added fixes
This commit is contained in:
24
app.rb
24
app.rb
@@ -266,7 +266,8 @@ post "/rcpcreate" do
|
|||||||
session[:rcpcreate_error] = "Имя рецепта и описание не должны быть пустыми"
|
session[:rcpcreate_error] = "Имя рецепта и описание не должны быть пустыми"
|
||||||
redirect "/rcpcreate"
|
redirect "/rcpcreate"
|
||||||
else
|
else
|
||||||
@error_data = db.createrecip(params["filepath"], params["description"], params["codedata"], params["gitlst"])
|
codedata = params["codedata"].gsub(/\r$/, "")
|
||||||
|
@error_data = db.createrecip(params["filepath"], params["description"], codedata, params["gitlst"])
|
||||||
unless @error_data.nil?
|
unless @error_data.nil?
|
||||||
session[:rcpcreate_error] = @error_data
|
session[:rcpcreate_error] = @error_data
|
||||||
redirect "/rcpcreate"
|
redirect "/rcpcreate"
|
||||||
@@ -837,8 +838,6 @@ get "/gitpackages/:git_id" do
|
|||||||
@page = params["p"].to_i
|
@page = params["p"].to_i
|
||||||
if @page < 1
|
if @page < 1
|
||||||
@page = 1
|
@page = 1
|
||||||
else
|
|
||||||
@page = @page + 1
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
if rpms_lst.nil?
|
if rpms_lst.nil?
|
||||||
@@ -846,6 +845,9 @@ get "/gitpackages/:git_id" do
|
|||||||
end
|
end
|
||||||
items_per_page = cfg.get_items_per_page
|
items_per_page = cfg.get_items_per_page
|
||||||
@rpms_list = rpms_lst[(@page - 1) * items_per_page, items_per_page]
|
@rpms_list = rpms_lst[(@page - 1) * items_per_page, items_per_page]
|
||||||
|
if @rpms_list.nil?
|
||||||
|
@rpms_list = []
|
||||||
|
end
|
||||||
@max_pages = rpms_lst.length / items_per_page
|
@max_pages = rpms_lst.length / items_per_page
|
||||||
if (@max_pages * items_per_page) != rpms_lst.length
|
if (@max_pages * items_per_page) != rpms_lst.length
|
||||||
@max_pages = @max_pages + 1
|
@max_pages = @max_pages + 1
|
||||||
@@ -886,8 +888,6 @@ get "/builds" do
|
|||||||
@page = params["p"].to_i
|
@page = params["p"].to_i
|
||||||
if @page < 1
|
if @page < 1
|
||||||
@page = 1
|
@page = 1
|
||||||
else
|
|
||||||
@page = @page + 1
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
if builds_lst.nil?
|
if builds_lst.nil?
|
||||||
@@ -895,6 +895,9 @@ get "/builds" do
|
|||||||
end
|
end
|
||||||
items_per_page = cfg.get_items_per_page
|
items_per_page = cfg.get_items_per_page
|
||||||
@builds_list = builds_lst[(@page - 1) * items_per_page, items_per_page]
|
@builds_list = builds_lst[(@page - 1) * items_per_page, items_per_page]
|
||||||
|
if @builds_list.nil?
|
||||||
|
@builds_list = []
|
||||||
|
end
|
||||||
@max_pages = builds_lst.length / items_per_page
|
@max_pages = builds_lst.length / items_per_page
|
||||||
if (@max_pages * items_per_page) != builds_lst.length
|
if (@max_pages * items_per_page) != builds_lst.length
|
||||||
@max_pages = @max_pages + 1
|
@max_pages = @max_pages + 1
|
||||||
@@ -968,8 +971,6 @@ get "/prjbuilds/:id" do
|
|||||||
@page = params["p"].to_i
|
@page = params["p"].to_i
|
||||||
if @page < 1
|
if @page < 1
|
||||||
@page = 1
|
@page = 1
|
||||||
else
|
|
||||||
@page = @page + 1
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
if builds_lst.nil?
|
if builds_lst.nil?
|
||||||
@@ -977,6 +978,9 @@ get "/prjbuilds/:id" do
|
|||||||
end
|
end
|
||||||
items_per_page = cfg.get_items_per_page
|
items_per_page = cfg.get_items_per_page
|
||||||
@builds_list = builds_lst[(@page - 1) * items_per_page, items_per_page]
|
@builds_list = builds_lst[(@page - 1) * items_per_page, items_per_page]
|
||||||
|
if @builds_list.nil?
|
||||||
|
@builds_list = []
|
||||||
|
end
|
||||||
@max_pages = builds_lst.length / items_per_page
|
@max_pages = builds_lst.length / items_per_page
|
||||||
if (@max_pages * items_per_page) != builds_lst.length
|
if (@max_pages * items_per_page) != builds_lst.length
|
||||||
@max_pages = @max_pages + 1
|
@max_pages = @max_pages + 1
|
||||||
@@ -1159,6 +1163,7 @@ get "/prjgitbld/:id/:git_id" do
|
|||||||
git_info = repo.get_repo_short_info_by_id(params["git_id"].to_i)
|
git_info = repo.get_repo_short_info_by_id(params["git_id"].to_i)
|
||||||
@git_data = git_info
|
@git_data = git_info
|
||||||
@prj = prj_info
|
@prj = prj_info
|
||||||
|
@git_id = params["git_id"]
|
||||||
@page_name = "Список всех сборок для проекта #{prj_info[:projname]} и репозитория #{git_info[:reponame]}"
|
@page_name = "Список всех сборок для проекта #{prj_info[:projname]} и репозитория #{git_info[:reponame]}"
|
||||||
builds_lst = db.get_builds_for_project_git(params["id"], params["git_id"])
|
builds_lst = db.get_builds_for_project_git(params["id"], params["git_id"])
|
||||||
if params["p"].nil?
|
if params["p"].nil?
|
||||||
@@ -1167,8 +1172,6 @@ get "/prjgitbld/:id/:git_id" do
|
|||||||
@page = params["p"].to_i
|
@page = params["p"].to_i
|
||||||
if @page < 1
|
if @page < 1
|
||||||
@page = 1
|
@page = 1
|
||||||
else
|
|
||||||
@page = @page + 1
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
if builds_lst.nil?
|
if builds_lst.nil?
|
||||||
@@ -1176,6 +1179,9 @@ get "/prjgitbld/:id/:git_id" do
|
|||||||
end
|
end
|
||||||
items_per_page = cfg.get_items_per_page
|
items_per_page = cfg.get_items_per_page
|
||||||
@builds_list = builds_lst[(@page - 1) * items_per_page, items_per_page]
|
@builds_list = builds_lst[(@page - 1) * items_per_page, items_per_page]
|
||||||
|
if @builds_list.nil?
|
||||||
|
@builds_list = []
|
||||||
|
end
|
||||||
@max_pages = builds_lst.length / items_per_page
|
@max_pages = builds_lst.length / items_per_page
|
||||||
if (@max_pages * items_per_page) != builds_lst.length
|
if (@max_pages * items_per_page) != builds_lst.length
|
||||||
@max_pages = @max_pages + 1
|
@max_pages = @max_pages + 1
|
||||||
|
|||||||
@@ -263,11 +263,11 @@ class DBase
|
|||||||
end
|
end
|
||||||
|
|
||||||
def get_gits_rpms()
|
def get_gits_rpms()
|
||||||
$DDB["select t1.id, t1.reponame, count(*) as packages from repos as t1 join rpms as t2 on t2.repo_id = t1.id group by t1.id, t1.reponame order by t1.id"].all
|
$DDB["select t1.id, t1.reponame, count(*) as packages from repos as t1 join rpms as t2 on t2.repo_id = t1.id group by t1.id, t1.reponame order by t1.id desc"].all
|
||||||
end
|
end
|
||||||
|
|
||||||
def get_rpms_for_git(git_id)
|
def get_rpms_for_git(git_id)
|
||||||
$DDB["select t2.id as rpmid, t2.rpmname, t1.reponame as repoid, t4.id as builid, t4.proj_id as prjid, t4.create_at from repos as t1 join rpms as t2 on t2.repo_id = t1.id join build_rpm as t3 on t3.rpm_id = t2.id join buildtask as t4 on t4.id = t3.build_id where t1.id = ? and t2.savepath not like '%.src.rpm' order by t4.create_at, t2.rpmname", git_id.to_i].all
|
$DDB["select t2.id as rpmid, t2.rpmname, t1.reponame as repoid, t4.id as builid, t4.proj_id as prjid, t4.create_at from repos as t1 join rpms as t2 on t2.repo_id = t1.id join build_rpm as t3 on t3.rpm_id = t2.id join buildtask as t4 on t4.id = t3.build_id where t1.id = ? and t2.savepath not like '%.src.rpm' order by t4.id desc, t2.rpmname", git_id.to_i].all
|
||||||
end
|
end
|
||||||
|
|
||||||
def get_rpm_info(rpm_id)
|
def get_rpm_info(rpm_id)
|
||||||
@@ -307,7 +307,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"].all
|
$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
|
||||||
end
|
end
|
||||||
|
|
||||||
def get_build_info(build_id)
|
def get_build_info(build_id)
|
||||||
@@ -328,11 +328,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", prj_id.to_i].all
|
$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
|
||||||
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", prj_id.to_i, git_id.to_i].all
|
$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
|
||||||
end
|
end
|
||||||
|
|
||||||
def delete_git_from_project(prj_id, git_id)
|
def delete_git_from_project(prj_id, git_id)
|
||||||
|
|||||||
@@ -89,11 +89,12 @@ class MockManager
|
|||||||
@log.info("Формируем рецепт #{item[:filepath]}")
|
@log.info("Формируем рецепт #{item[:filepath]}")
|
||||||
rcp_name = "#{index}rcp_#{item[:filepath]}"
|
rcp_name = "#{index}rcp_#{item[:filepath]}"
|
||||||
File.open(File.join(@tmp_src, rcp_name), "w") do |f|
|
File.open(File.join(@tmp_src, rcp_name), "w") do |f|
|
||||||
f.write(item[:content])
|
f.write(item[:content].gsub(/\r$/, ""))
|
||||||
end
|
end
|
||||||
Dir.chdir(@tmp_src) do
|
Dir.chdir(@tmp_src) do
|
||||||
|
spec_file = File.join(@tmp_src, @spec)
|
||||||
script = File.join(@tmp_src, rcp_name)
|
script = File.join(@tmp_src, rcp_name)
|
||||||
cmd_args = %Q(/usr/bin/bash -x "#{script}")
|
cmd_args = %Q(/usr/bin/bash -x "#{script}" "#{spec_file}")
|
||||||
@log.debug(cmd_args)
|
@log.debug(cmd_args)
|
||||||
cmd = Runner.new(cmd_args, @log)
|
cmd = Runner.new(cmd_args, @log)
|
||||||
cmd.run_clean
|
cmd.run_clean
|
||||||
|
|||||||
39
db/migrations/202503190000000_adddata.rb
Normal file
39
db/migrations/202503190000000_adddata.rb
Normal file
@@ -0,0 +1,39 @@
|
|||||||
|
require "sequel"
|
||||||
|
|
||||||
|
Sequel.migration do
|
||||||
|
change do
|
||||||
|
script_content = <<~CODE
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
need_spec="n"
|
||||||
|
SPEC="$1"
|
||||||
|
FIND_SPEC="$SPEC"
|
||||||
|
if [ -z "$SPEC" ];then
|
||||||
|
need_spec="y"
|
||||||
|
fi
|
||||||
|
if [ -n "$SPEC" -a ! -e "$SPEC" ];then
|
||||||
|
need_spec="y"
|
||||||
|
fi
|
||||||
|
if [ "$need_spec" == "y" ];then
|
||||||
|
FIND_SPEC=$(/usr/bin/find . -iname "*.spec" -type f -print -quit)
|
||||||
|
fi
|
||||||
|
if [ -n "$FIND_SPEC" ];then
|
||||||
|
NAME=$(rpm -q --queryformat="%{NAME}\n" --specfile "$FIND_SPEC" | xargs)
|
||||||
|
VERSION=$(rpm -q --queryformat="%{VERSION}\n" --specfile "$FIND_SPEC" | xargs)
|
||||||
|
PKG_NAME="${NAME}-${VERSION}"
|
||||||
|
tar -h --exclude="${PKG_NAME}.tar.gz" --exclude=".git" --exclude="$FIND_SPEC" -cvf ${PKG_NAME}.tar.gz --transform "s,^,${PKG_NAME}/," *
|
||||||
|
exit 0
|
||||||
|
else
|
||||||
|
echo "Не найден spec файл"
|
||||||
|
exit 255
|
||||||
|
fi
|
||||||
|
CODE
|
||||||
|
|
||||||
|
description = <<~CODE
|
||||||
|
Скрипт для создания архива из исходников в гите, на основании spec файла.
|
||||||
|
В репозитории должен быть один файл spec. Остальные будут игнорироваться.
|
||||||
|
CODE
|
||||||
|
|
||||||
|
from(:recips).insert(content: script_content, filepath: "make_tar_from_git", descr: description)
|
||||||
|
end
|
||||||
|
end
|
||||||
49
gen-scripts/install-key
Executable file
49
gen-scripts/install-key
Executable file
@@ -0,0 +1,49 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
function usage(){
|
||||||
|
echo "bash install-key UserName Email TimeToExpireInSecondsFromCurrentTime PhassPhrase"
|
||||||
|
exit 0
|
||||||
|
}
|
||||||
|
|
||||||
|
if [ -z "$1" -o -z "$2" -o -z "$3" -o -z "$4" ];then
|
||||||
|
usage
|
||||||
|
fi
|
||||||
|
|
||||||
|
name="$1"
|
||||||
|
email="$2"
|
||||||
|
expdate="$3"
|
||||||
|
phassphrase="$4"
|
||||||
|
|
||||||
|
cat >gen-key-script <<EOF
|
||||||
|
%echo Generating a basic OpenPGP key
|
||||||
|
Key-Type: 1
|
||||||
|
Key-Length: 2048
|
||||||
|
Subkey-Type: 1
|
||||||
|
Subkey-Length: 2048
|
||||||
|
Name-Real: ${name}
|
||||||
|
Name-Email: ${email}
|
||||||
|
Expire-Date: seconds=${expdate}
|
||||||
|
Passphrase: ${phassphrase}
|
||||||
|
%commit
|
||||||
|
%echo done
|
||||||
|
EOF
|
||||||
|
|
||||||
|
mkdir -p ../keys/private
|
||||||
|
mkdir -p ../keys/public
|
||||||
|
chmod 700 ../keys/private
|
||||||
|
GNUPGHOME="../keys/private" gpg --batch --generate-key gen-key-script
|
||||||
|
rm -f gen-key-script
|
||||||
|
|
||||||
|
key_path=$(realpath ../keys/private)
|
||||||
|
pub_key_path=$(realpath ../keys/public)
|
||||||
|
|
||||||
|
key_id=$(GNUPGHOME="../keys/private" gpg -k | grep -P "[0123456789abcdefABCDEF]{8,}" | xargs)
|
||||||
|
GNUPGHOME="../keys/private" gpg --export --armor ${key_id} > "${pub_key_path}/mockgui-gpg-key"
|
||||||
|
|
||||||
|
cat >~/.rpmmacros <<EOF
|
||||||
|
%_signature gpg
|
||||||
|
%_gpg_path ${key_path}
|
||||||
|
%_gpg_name ${name} <${email}>
|
||||||
|
%_gpgbin /usr/bin/gpg
|
||||||
|
EOF
|
||||||
|
|
||||||
1
keys/readme
Normal file
1
keys/readme
Normal file
@@ -0,0 +1 @@
|
|||||||
|
Каталог с ключами
|
||||||
@@ -54,7 +54,7 @@
|
|||||||
<span class="page-link"><%= item+1 %></span>
|
<span class="page-link"><%= item+1 %></span>
|
||||||
</li>
|
</li>
|
||||||
<% else %>
|
<% else %>
|
||||||
<li class="page-item"><a class="page-link" href="/gitpackages/<%= ERB::Util.url_encode(@git_id) %>/?p=<%= item+1 %>"><%= item+1 %></a></li>
|
<li class="page-item"><a class="page-link" href="/builds?p=<%= item+1 %>"><%= item+1 %></a></li>
|
||||||
<% end %>
|
<% end %>
|
||||||
<% end %>
|
<% end %>
|
||||||
</ul>
|
</ul>
|
||||||
|
|||||||
@@ -55,7 +55,7 @@
|
|||||||
<span class="page-link"><%= item+1 %></span>
|
<span class="page-link"><%= item+1 %></span>
|
||||||
</li>
|
</li>
|
||||||
<% else %>
|
<% else %>
|
||||||
<li class="page-item"><a class="page-link" href="/gitpackages/<%= ERB::Util.url_encode(@git_id) %>/?p=<%= item+1 %>"><%= item+1 %></a></li>
|
<li class="page-item"><a class="page-link" href="/prjbuilds/<%= ERB::Util.url_encode(@prj[:id]) %>?p=<%= item+1 %>"><%= item+1 %></a></li>
|
||||||
<% end %>
|
<% end %>
|
||||||
<% end %>
|
<% end %>
|
||||||
</ul>
|
</ul>
|
||||||
|
|||||||
@@ -55,7 +55,7 @@
|
|||||||
<span class="page-link"><%= item+1 %></span>
|
<span class="page-link"><%= item+1 %></span>
|
||||||
</li>
|
</li>
|
||||||
<% else %>
|
<% else %>
|
||||||
<li class="page-item"><a class="page-link" href="/gitpackages/<%= ERB::Util.url_encode(@git_id) %>/?p=<%= item+1 %>"><%= item+1 %></a></li>
|
<li class="page-item"><a class="page-link" href="/prjgitbld/<%= ERB::Util.url_encode(@git_id) %>/<%= ERB::Util.url_encode(@prj[:id]) %>?p=<%= item+1 %>"><%= item+1 %></a></li>
|
||||||
<% end %>
|
<% end %>
|
||||||
<% end %>
|
<% end %>
|
||||||
</ul>
|
</ul>
|
||||||
|
|||||||
@@ -27,7 +27,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="mb-3">
|
<div class="mb-3">
|
||||||
<label for="codedata" class="form-label">Код</label>
|
<label for="codedata" class="form-label">Код</label>
|
||||||
<textarea class="form-control" id="codedata" name="codedata" rows="3"><%= @old_codedata %></textarea>
|
<textarea class="form-control" id="codedata" name="codedata" rows="15"><%= @old_codedata %></textarea>
|
||||||
</div>
|
</div>
|
||||||
<div class="mb-3">
|
<div class="mb-3">
|
||||||
<label for="gitlist" class="form-label">git проекты, использующие рецепт</label>
|
<label for="gitlist" class="form-label">git проекты, использующие рецепт</label>
|
||||||
|
|||||||
@@ -37,7 +37,7 @@
|
|||||||
<span class="page-link"><%= item+1 %></span>
|
<span class="page-link"><%= item+1 %></span>
|
||||||
</li>
|
</li>
|
||||||
<% else %>
|
<% else %>
|
||||||
<li class="page-item"><a class="page-link" href="/gitpackages/<%= ERB::Util.url_encode(@git_id) %>/?p=<%= item+1 %>"><%= item+1 %></a></li>
|
<li class="page-item"><a class="page-link" href="/gitpackages/<%= ERB::Util.url_encode(@git_id) %>?p=<%= item+1 %>"><%= item+1 %></a></li>
|
||||||
<% end %>
|
<% end %>
|
||||||
<% end %>
|
<% end %>
|
||||||
</ul>
|
</ul>
|
||||||
|
|||||||
Reference in New Issue
Block a user