mirror of
https://github.com/arcan1s/ahriman.git
synced 2025-06-28 06:41:43 +00:00
web server support
This commit is contained in:
@ -14,14 +14,17 @@ optdepends=('aws-cli: sync to s3'
|
||||
'darcs: -darcs packages support'
|
||||
'gnupg: package and repository sign'
|
||||
'mercurial: -hg packages support'
|
||||
'python-aiohttp: web server'
|
||||
'python-aiohttp-jinja2: web server'
|
||||
'python-jinja: html report generation'
|
||||
'python-requests: web server'
|
||||
'rsync: sync by using rsync'
|
||||
'subversion: -svn packages support')
|
||||
source=("https://github.com/arcan1s/ahriman/releases/download/$pkgver/$pkgname-$pkgver-src.tar.xz"
|
||||
'ahriman.sudoers'
|
||||
'ahriman.sysusers'
|
||||
'ahriman.tmpfiles')
|
||||
sha512sums=('82a8208554956f009db0334b0cb20891889d96617b4c9b9d2af7a007d668f6cbc6d46d0be8b5ee11ffb2b69d124b5d5d6db1a6f7d5a0a2c719c0d8e07dca24d8'
|
||||
sha512sums=('bc4880fc2f4196dc959f14a199135bbf09c75fbaad722709c1ca7c1fdae0475b3cfcdff5bf33bc9bcdf4f17a0e29b42bd26de7b3d551356dd63a705ec496e111'
|
||||
'8c9b5b63ac3f7b4d9debaf801a1e9c060877c33d3ecafe18010fcca778e5fa2f2e46909d3d0ff1b229ff8aa978445d8243fd36e1fc104117ed678d5e21901167'
|
||||
'13718afec2c6786a18f0b223ef8e58dccf0688bca4cdbe203f14071f5031ed20120eb0ce38b52c76cfd6e8b6581a9c9eaa2743eb11abbaca637451a84c33f075'
|
||||
'55b20f6da3d66e7bbf2add5d95a3b60632df121717d25a993e56e737d14f51fe063eb6f1b38bd81cc32e05db01c0c1d80aaa720c45cde87f238d8b46cdb8cbc4')
|
||||
|
@ -27,13 +27,18 @@ target =
|
||||
path =
|
||||
homepage =
|
||||
link_path =
|
||||
template_path = /usr/share/ahriman/index.jinja2
|
||||
template_path = /usr/share/ahriman/repo-index.jinja2
|
||||
|
||||
[upload]
|
||||
target =
|
||||
|
||||
[rsync_x86_64]
|
||||
remote =
|
||||
|
||||
[s3_x86_64]
|
||||
bucket =
|
||||
|
||||
[rsync_x86_64]
|
||||
remote =
|
||||
[web]
|
||||
host =
|
||||
port =
|
||||
templates = /usr/share/ahriman
|
@ -1,8 +1,8 @@
|
||||
[loggers]
|
||||
keys = root,builder,build_details
|
||||
keys = root,builder,build_details,http
|
||||
|
||||
[handlers]
|
||||
keys = console_handler,build_file_handler,file_handler
|
||||
keys = console_handler,build_file_handler,file_handler,http_handler
|
||||
|
||||
[formatters]
|
||||
keys = generic_format
|
||||
@ -25,6 +25,12 @@ level = DEBUG
|
||||
formatter = generic_format
|
||||
args = ('/var/log/ahriman/build.log', 'a', 20971520, 20)
|
||||
|
||||
[handler_http_handler]
|
||||
class = logging.handlers.RotatingFileHandler
|
||||
level = DEBUG
|
||||
formatter = generic_format
|
||||
args = ('/var/log/ahriman/http.log', 'a', 20971520, 20)
|
||||
|
||||
[formatter_generic_format]
|
||||
format = %(asctime)s : %(levelname)s : %(funcName)s : %(message)s
|
||||
datefmt =
|
||||
@ -45,3 +51,9 @@ level = DEBUG
|
||||
handlers = build_file_handler
|
||||
qualname = build_details
|
||||
propagate = 0
|
||||
|
||||
[logger_http]
|
||||
level = DEBUG
|
||||
handlers = http_handler
|
||||
qualname = http
|
||||
propagate = 0
|
||||
|
11
package/lib/systemd/system/ahriman-web.service
Normal file
11
package/lib/systemd/system/ahriman-web.service
Normal file
@ -0,0 +1,11 @@
|
||||
[Unit]
|
||||
Description=ArcHlinux ReposItory MANager web server
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
ExecStart=/usr/bin/ahriman --architecture x86_64 web
|
||||
User=ahriman
|
||||
Group=ahriman
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
@ -2,30 +2,83 @@
|
||||
<html lang="en">
|
||||
<head>
|
||||
<title>{{ repository|e }}</title>
|
||||
|
||||
<style>
|
||||
:root {
|
||||
--color-building: 250, 255, 146;
|
||||
--color-failed: 255, 94, 94;
|
||||
--color-pending: 250, 255, 146;
|
||||
--color-success: 121, 255, 94;
|
||||
--color-unknown: 197, 197, 197;
|
||||
}
|
||||
|
||||
@keyframes blink-building {
|
||||
0% { background-color: rgba(var(--color-building), 1.0); }
|
||||
10% { background-color: rgba(var(--color-building), 0.9); }
|
||||
20% { background-color: rgba(var(--color-building), 0.8); }
|
||||
30% { background-color: rgba(var(--color-building), 0.7); }
|
||||
40% { background-color: rgba(var(--color-building), 0.6); }
|
||||
50% { background-color: rgba(var(--color-building), 0.5); }
|
||||
60% { background-color: rgba(var(--color-building), 0.4); }
|
||||
70% { background-color: rgba(var(--color-building), 0.3); }
|
||||
80% { background-color: rgba(var(--color-building), 0.2); }
|
||||
90% { background-color: rgba(var(--color-building), 0.1); }
|
||||
100% { background-color: rgba(var(--color-building), 0.0); }
|
||||
}
|
||||
|
||||
table, th, td {
|
||||
padding: 5px;
|
||||
}
|
||||
td.package {
|
||||
font-weight: bolder;
|
||||
}
|
||||
td.package-unknown {
|
||||
background-color: rgba(var(--color-unknown), 1.0);
|
||||
}
|
||||
td.package-pending {
|
||||
background-color: rgba(var(--color-pending), 1.0);
|
||||
}
|
||||
td.package-building {
|
||||
background-color: rgba(var(--color-building), 1.0);
|
||||
animation-name: blink-building;
|
||||
animation-duration: 1s;
|
||||
animation-timing-function: linear;
|
||||
animation-iteration-count: infinite;
|
||||
animation-direction: alternate;
|
||||
}
|
||||
td.package-failed {
|
||||
background-color: rgba(var(--color-failed), 1.0);
|
||||
}
|
||||
td.package-success {
|
||||
background-color: rgba(var(--color-success), 1.0);
|
||||
}
|
||||
</style>
|
||||
|
||||
<script src="https://www.kryogenix.org/code/browser/sorttable/sorttable.js"></script>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<h1>{{ repository|e }} ArchLinux custom repository</h1>
|
||||
<table class="sortable" id="builds">
|
||||
<tr>
|
||||
<th>package base</th>
|
||||
<th>packages</th>
|
||||
<th>version</th>
|
||||
<th>architecture</th>
|
||||
<th>timestamp</th>
|
||||
<th>status</th>
|
||||
</tr>
|
||||
|
||||
{% if pgp_key is not none %}
|
||||
<p>All packages are signed with <a href="http://keys.gnupg.net/pks/lookup?search=0x{{ pgp_key|e }}" title="key search">{{ pgp_key|e }}</a>.</p>
|
||||
{% endif %}
|
||||
|
||||
<code>
|
||||
$ cat /etc/pacman.conf<br>
|
||||
[{{ repository|e }}]<br>
|
||||
Server = {{ link_path|e }}
|
||||
</code>
|
||||
|
||||
<p>Packages:</p>
|
||||
<ul>
|
||||
{% for package, package_url in packages.items() %}
|
||||
<li><a href="{{ package_url|e }}" title="{{ package|e }}">{{ package|e }}</a></li>
|
||||
{% for package in packages %}
|
||||
<tr>
|
||||
<td class="package"><a href="{{ package.web_url|e }}" title="{{ package.base|e }}">{{ package.base|e }}</a></td>
|
||||
<td>{{ package.packages|join("<br>"|safe) }}</td>
|
||||
<td>{{ package.version|e }}</td>
|
||||
<td>{{ architecture|e }}</td>
|
||||
<td>{{ package.timestamp|e }}</td>
|
||||
<td class="package-{{ package.status|e }}">{{ package.status|e }}</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
|
||||
{% if homepage is not none %}
|
||||
<footer><a href="{{ homepage|e }}" title="homepage">Homepage</a></footer>
|
||||
{% endif %}
|
||||
</table>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
</html>
|
||||
|
31
package/share/ahriman/repo-index.jinja2
Normal file
31
package/share/ahriman/repo-index.jinja2
Normal file
@ -0,0 +1,31 @@
|
||||
<!doctype html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<title>{{ repository|e }}</title>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<h1>{{ repository|e }} ArchLinux custom repository</h1>
|
||||
|
||||
{% if pgp_key is not none %}
|
||||
<p>All packages are signed with <a href="http://keys.gnupg.net/pks/lookup?search=0x{{ pgp_key|e }}" title="key search">{{ pgp_key|e }}</a>.</p>
|
||||
{% endif %}
|
||||
|
||||
<code>
|
||||
$ cat /etc/pacman.conf<br>
|
||||
[{{ repository|e }}]<br>
|
||||
Server = {{ link_path|e }}
|
||||
</code>
|
||||
|
||||
<p>Packages:</p>
|
||||
<ul>
|
||||
{% for package, package_url in packages.items() %}
|
||||
<li><a href="{{ package_url|e }}" title="{{ package|e }}">{{ package|e }}</a></li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
|
||||
{% if homepage is not none %}
|
||||
<footer><a href="{{ homepage|e }}" title="homepage">Homepage</a></footer>
|
||||
{% endif %}
|
||||
</body>
|
||||
</html>
|
Reference in New Issue
Block a user