Added fixes
This commit is contained in:
24
app.rb
24
app.rb
@@ -266,7 +266,8 @@ post "/rcpcreate" do
|
||||
session[:rcpcreate_error] = "Имя рецепта и описание не должны быть пустыми"
|
||||
redirect "/rcpcreate"
|
||||
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?
|
||||
session[:rcpcreate_error] = @error_data
|
||||
redirect "/rcpcreate"
|
||||
@@ -837,8 +838,6 @@ get "/gitpackages/:git_id" do
|
||||
@page = params["p"].to_i
|
||||
if @page < 1
|
||||
@page = 1
|
||||
else
|
||||
@page = @page + 1
|
||||
end
|
||||
end
|
||||
if rpms_lst.nil?
|
||||
@@ -846,6 +845,9 @@ get "/gitpackages/:git_id" do
|
||||
end
|
||||
items_per_page = cfg.get_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
|
||||
if (@max_pages * items_per_page) != rpms_lst.length
|
||||
@max_pages = @max_pages + 1
|
||||
@@ -886,8 +888,6 @@ get "/builds" do
|
||||
@page = params["p"].to_i
|
||||
if @page < 1
|
||||
@page = 1
|
||||
else
|
||||
@page = @page + 1
|
||||
end
|
||||
end
|
||||
if builds_lst.nil?
|
||||
@@ -895,6 +895,9 @@ get "/builds" do
|
||||
end
|
||||
items_per_page = cfg.get_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
|
||||
if (@max_pages * items_per_page) != builds_lst.length
|
||||
@max_pages = @max_pages + 1
|
||||
@@ -968,8 +971,6 @@ get "/prjbuilds/:id" do
|
||||
@page = params["p"].to_i
|
||||
if @page < 1
|
||||
@page = 1
|
||||
else
|
||||
@page = @page + 1
|
||||
end
|
||||
end
|
||||
if builds_lst.nil?
|
||||
@@ -977,6 +978,9 @@ get "/prjbuilds/:id" do
|
||||
end
|
||||
items_per_page = cfg.get_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
|
||||
if (@max_pages * items_per_page) != builds_lst.length
|
||||
@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_data = git_info
|
||||
@prj = prj_info
|
||||
@git_id = params["git_id"]
|
||||
@page_name = "Список всех сборок для проекта #{prj_info[:projname]} и репозитория #{git_info[:reponame]}"
|
||||
builds_lst = db.get_builds_for_project_git(params["id"], params["git_id"])
|
||||
if params["p"].nil?
|
||||
@@ -1167,8 +1172,6 @@ get "/prjgitbld/:id/:git_id" do
|
||||
@page = params["p"].to_i
|
||||
if @page < 1
|
||||
@page = 1
|
||||
else
|
||||
@page = @page + 1
|
||||
end
|
||||
end
|
||||
if builds_lst.nil?
|
||||
@@ -1176,6 +1179,9 @@ get "/prjgitbld/:id/:git_id" do
|
||||
end
|
||||
items_per_page = cfg.get_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
|
||||
if (@max_pages * items_per_page) != builds_lst.length
|
||||
@max_pages = @max_pages + 1
|
||||
|
||||
@@ -263,11 +263,11 @@ class DBase
|
||||
end
|
||||
|
||||
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
|
||||
|
||||
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
|
||||
|
||||
def get_rpm_info(rpm_id)
|
||||
@@ -307,7 +307,7 @@ class DBase
|
||||
end
|
||||
|
||||
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
|
||||
|
||||
def get_build_info(build_id)
|
||||
@@ -328,11 +328,11 @@ class DBase
|
||||
end
|
||||
|
||||
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
|
||||
|
||||
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
|
||||
|
||||
def delete_git_from_project(prj_id, git_id)
|
||||
|
||||
@@ -89,11 +89,12 @@ class MockManager
|
||||
@log.info("Формируем рецепт #{item[:filepath]}")
|
||||
rcp_name = "#{index}rcp_#{item[:filepath]}"
|
||||
File.open(File.join(@tmp_src, rcp_name), "w") do |f|
|
||||
f.write(item[:content])
|
||||
f.write(item[:content].gsub(/\r$/, ""))
|
||||
end
|
||||
Dir.chdir(@tmp_src) do
|
||||
spec_file = File.join(@tmp_src, @spec)
|
||||
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)
|
||||
cmd = Runner.new(cmd_args, @log)
|
||||
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>
|
||||
</li>
|
||||
<% 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 %>
|
||||
</ul>
|
||||
|
||||
@@ -55,7 +55,7 @@
|
||||
<span class="page-link"><%= item+1 %></span>
|
||||
</li>
|
||||
<% 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 %>
|
||||
</ul>
|
||||
|
||||
@@ -55,7 +55,7 @@
|
||||
<span class="page-link"><%= item+1 %></span>
|
||||
</li>
|
||||
<% 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 %>
|
||||
</ul>
|
||||
|
||||
@@ -27,7 +27,7 @@
|
||||
</div>
|
||||
<div class="mb-3">
|
||||
<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 class="mb-3">
|
||||
<label for="gitlist" class="form-label">git проекты, использующие рецепт</label>
|
||||
|
||||
@@ -37,7 +37,7 @@
|
||||
<span class="page-link"><%= item+1 %></span>
|
||||
</li>
|
||||
<% 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 %>
|
||||
</ul>
|
||||
|
||||
Reference in New Issue
Block a user