Compare commits

..

1 Commits

Author SHA1 Message Date
fdc2990d32 Remove BR to openqa-client 2022-11-07 13:43:50 +03:00
17 changed files with 82 additions and 943 deletions

4
.gitignore vendored
View File

@ -1,2 +1,2 @@
SOURCES/openQA-637609536026a0950adf5d3aa30b54f16c73e178.tar.gz
SOURCES/assetcache-637609536026a0950adf5d3aa30b54f16c73e178.tar.xz
SOURCES/assetcache-9267281b4e7ec98515f7d6e680c5b17d1944e29a.tar.xz
SOURCES/openQA-9267281b4e7ec98515f7d6e680c5b17d1944e29a.tar.gz

View File

@ -1,2 +1,2 @@
6cb0c8ca0be44ba7e9eda423fd497f8102977af2 SOURCES/openQA-637609536026a0950adf5d3aa30b54f16c73e178.tar.gz
14ff43991d8e0644245a6d474219d09163edbfc9 SOURCES/assetcache-637609536026a0950adf5d3aa30b54f16c73e178.tar.xz
ab9254c6b67e392274d9afe2043a89e97e1c97a5 SOURCES/assetcache-9267281b4e7ec98515f7d6e680c5b17d1944e29a.tar.xz
81fa866caef7e69e2d4c10ccb823fb5e2d0929cf SOURCES/openQA-9267281b4e7ec98515f7d6e680c5b17d1944e29a.tar.gz

View File

@ -1,23 +0,0 @@
--- a/templates/webapi/layouts/navbar.html.ep 2026-06-04 10:30:53.000000000 +0200
+++ b/templates/webapi/layouts/navbar.html.ep 2026-07-24 12:14:51.851179791 +0200
@@ -1,7 +1,7 @@
% my $current_user = current_user;
<nav class="navbar navbar-expand-lg navbar-light">
<div class="container-fluid">
- <a class="navbar-brand" href="/"><img src="<%= icon_url 'logo.svg'%>" alt="openQA"></a>
+ <a class="navbar-brand" href="/"><img src="/images/almalinux.svg" alt="openQA"></a>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
--- a/templates/webapi/layouts/bootstrap.html.ep 2026-06-04 10:30:53.000000000 +0200
+++ b/templates/webapi/layouts/bootstrap.html.ep 2026-07-24 12:14:51.875750357 +0200
@@ -46,7 +46,8 @@
<link id="favicon-16" rel="icon" href="<%= favicon_url '-16.png' %>" sizes="16x16" type="image/png">
<link id="favicon-svg" rel="icon" href="<%= favicon_url '.svg' %>" sizes="any" type="image/svg+xml">
- </head>
+ %= include_branding 'style'
+</head>
<body>
%= include 'layouts/navbar'
<div class="container-fluid" id="content">

View File

@ -1,49 +0,0 @@
--- a/lib/OpenQA/CacheService/Model/Cache.pm 2026-06-04 10:30:53.000000000 +0200
+++ b/lib/OpenQA/CacheService/Model/Cache.pm 2026-07-21 19:12:03.848668944 +0200
@@ -182,13 +182,13 @@
}
sub _update_metric ($self, $name, $value) {
- $self->_exclusive_query(q{INSERT INTO metrics (name, value) VALUES ($1, $2) ON CONFLICT DO UPDATE SET value = $2},
+ $self->_exclusive_query(q{INSERT INTO metrics (name, value) VALUES ($1, $2) ON CONFLICT(name) DO UPDATE SET value = $2},
$name, $value);
}
sub _increase_metric ($self, $name, $by_value) {
$self->_exclusive_query(
- q{INSERT INTO metrics (name, value) VALUES ($1, $2) ON CONFLICT DO UPDATE SET value = value + $2},
+ q{INSERT INTO metrics (name, value) VALUES ($1, $2) ON CONFLICT(name) DO UPDATE SET value = value + $2},
$name, $by_value);
}
--- a/t/24-worker-jobs.t 2026-06-04 10:30:53.000000000 +0200
+++ b/t/24-worker-jobs.t 2026-07-21 19:12:31.186410150 +0200
@@ -93,7 +93,7 @@
# Fake client and engine
# uncoverable statement count:1
package Test::FakeClient {
- use Mojo::Base -base;
+ use Mojo::Base -base, -signatures;
has worker_id => 1;
has service_port_delta => 2;
has webui_host => 'not relevant here';
@@ -139,7 +139,7 @@
} # uncoverable statement count:1
package Test::FakeEngine {
- use Mojo::Base -base;
+ use Mojo::Base -base, -signatures;
has pid => 1;
has errored => 0;
has is_running => 1;
--- a/lib/OpenQA/Schema/ResultSet/ScheduledProducts.pm 2026-06-04 10:30:53.000000000 +0200
+++ b/lib/OpenQA/Schema/ResultSet/ScheduledProducts.pm 2026-07-22 14:16:01.434881645 +0200
@@ -34,7 +34,7 @@
sub update_note ($self, $distri, $version, $flavor, $arch, $build, $note) {
my $sth = $self->result_source->schema->storage->dbh->prepare(
<<~'END_SQL'
- UPDATE scheduled_products SET results['note'] = ? where id = (
+ UPDATE scheduled_products SET results = jsonb_set(coalesce(results, '{}'::jsonb), '{note}', ?::jsonb) where id = (
SELECT id
FROM scheduled_products
WHERE distri = ? and version = ? and flavor = ? and arch = ? and build = ?

View File

@ -1,75 +0,0 @@
From a5465d3a37632a503c772f0c87f4d03f198ecdbf Mon Sep 17 00:00:00 2001
From: Adam Williamson <awilliam@redhat.com>
Date: Fri, 5 Jun 2026 16:14:57 -0700
Subject: [PATCH] fix: Support invent.kde.org and 'work_items' in bug URL
handling
https://invent.kde.org is another issue tracker we should know
about. It's Gitlab.
While we're here, also handle Gitlab URLs with 'work_items' in
them instead of 'issues', as Gitlab rebranded that recently. We
don't need to support this in the other direction (ref to URL)
yet, fortunately - Gitlab redirects /issues/ to /work_items/.
Signed-off-by: Adam Williamson <awilliam@redhat.com>
---
lib/OpenQA/Utils.pm | 7 ++++++-
t/16-utils.t | 2 ++
2 files changed, 8 insertions(+), 1 deletion(-)
diff --git a/lib/OpenQA/Utils.pm b/lib/OpenQA/Utils.pm
index 4bb40db6e..e73617d15 100644
--- a/lib/OpenQA/Utils.pm
+++ b/lib/OpenQA/Utils.pm
@@ -49,6 +49,7 @@ BEGIN {
poo => 'https://progress.opensuse.org/issues/',
gh => 'https://github.com/',
kde => 'https://bugs.kde.org/show_bug.cgi?id=',
+ kdi => 'https://invent.kde.org/',
fdo => 'https://bugs.freedesktop.org/show_bug.cgi?id=',
jsc => 'https://jira.suse.com/browse/',
pio => 'https://pagure.io/',
@@ -66,6 +67,7 @@ BEGIN {
$BUGREFS{poo} => 'poo',
$BUGREFS{gh} => 'gh',
$BUGREFS{kde} => 'kde',
+ $BUGREFS{kdi} => 'kdi',
$BUGREFS{fdo} => 'fdo',
$BUGREFS{jsc} => 'jsc',
$BUGREFS{pio} => 'pio',
@@ -441,6 +443,8 @@ sub bugurl ($bugref) {
# same page as https://github.com/os-autoinst/openQA/pull/966 and vice
# versa for both an issue as well as pull request
# for pagure.io it has to be "issue", not "issues"
+ # gitlab rebranded "issues" to "work_items" in 2026, but so far
+ # they're keeping a redirect so we can still use "issues" for now
$bugref =~ BUGREF_REGEX or return $bugref;
my $issuetext = $+{marker} eq 'pio' ? 'issue' : 'issues';
return $BUGREFS{$+{marker}} . ($+{repo} ? "$+{repo}/$issuetext/" : '') . $+{id};
@@ -464,7 +468,8 @@ sub href_to_bugref ($text) {
# interchangeable, see comment in 'bugurl', too
# gitlab URLs have an odd /-/ after the repo name, e.g.
# https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/5244
- $regex = qr{(?<!["\(\[])(?<url_root>$regex)((?<repo>.*?)/(-/)?(issues?|pull)/)?(?<id>([A-Z]+-)?\d+)(?![\w])};
+ $regex
+ = qr{(?<!["\(\[])(?<url_root>$regex)((?<repo>.*?)/(-/)?(issues?|pull|work_items)/)?(?<id>([A-Z]+-)?\d+)(?![\w])};
$text =~ s{$regex}{@{[$BUGURLS{$+{url_root}} . ($+{repo} ? '#' . $+{repo} : '')]}#$+{id}}gi;
return $text;
}
diff --git a/t/16-utils.t b/t/16-utils.t
index 111acb6ff..fc910cb6c 100644
--- a/t/16-utils.t
+++ b/t/16-utils.t
@@ -142,6 +142,8 @@ is href_to_bugref('https://gitlab.gnome.org/GNOME/foo/-/issues/1234'), 'ggo#GNOM
is href_to_bugref('https://gitlab.com/fedora/sigs/flatpak/fedora-flatpaks/-/issues/26'),
'gfs#flatpak/fedora-flatpaks#26',
'Fedora SIGs gitlab url to bugref';
+is href_to_bugref('https://invent.kde.org/plasma/systemsettings/-/work_items/49'), 'kdi#plasma/systemsettings#49',
+ 'KDE Invent gitlab url to bugref (with newer "work_items" name)';
is find_bug_number('yast_roleconf-ntp-servers-empty-bsc1114818-20181115.png'), 'bsc1114818',
'find the bug number from the needle name';
--
2.54.0

View File

@ -1,45 +0,0 @@
From b744b8a9033260380c359b068497d264088e6a10 Mon Sep 17 00:00:00 2001
From: Adam Williamson <awilliam@redhat.com>
Date: Thu, 4 Jun 2026 16:00:11 -0700
Subject: [PATCH] t: Skip earlier in tests_dependencies.t
Skipping after the first subtest causes the test system to get
confused and fail:
Test Summary Report
-------------------
t/ui/16-tests_dependencies.t (Wstat: 0 Tests: 1 Failed: 0)
Parse errors: Bad plan. You planned 0 tests but ran 1.
So we must skip the whole thing if Selenium isn't present, even
though that first subtest doesn't really need it.
Signed-off-by: Adam Williamson <awilliam@redhat.com>
---
t/ui/16-tests_dependencies.t | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/t/ui/16-tests_dependencies.t b/t/ui/16-tests_dependencies.t
index 6dfa7e4ff..53600db26 100644
--- a/t/ui/16-tests_dependencies.t
+++ b/t/ui/16-tests_dependencies.t
@@ -19,6 +19,8 @@ use OpenQA::JobDependencies::Constants qw(CHAINED DIRECTLY_CHAINED PARALLEL);
use OpenQA::Jobs::Constants;
use OpenQA::WebAPI::Controller::Test;
+driver_missing unless my $driver = call_driver;
+
subtest 'detailed behavior of merging parallel jobs into clusters' => sub {
my (%clusters, %cluster_by_job);
my %data = (cluster => \%clusters, cluster_by_job => \%cluster_by_job);
@@ -79,7 +81,6 @@ $dependencies->create({child_job_id => 99945, parent_job_id => 99937, dependency
$dependencies->create({child_job_id => 99927, parent_job_id => 99961, dependency => DIRECTLY_CHAINED});
my $t = Test::Mojo->new('OpenQA::WebAPI');
-driver_missing unless my $driver = call_driver;
sub get_tooltip ($job_id) {
$driver->execute_script("return \$('#nodeTable$job_id').closest('.node').data('bs-original-title');");
--
2.54.0

View File

@ -76,14 +76,13 @@ EOF
my $tempdir = tempdir;
$ENV{OPENQA_CONFIG} = $tempdir;
path($ENV{OPENQA_CONFIG})->make_path->child("openqa.ini")->spew($conf);
path($ENV{OPENQA_CONFIG})->make_path->child("openqa.ini")->spurt($conf);
my $t = Test::Mojo->new('OpenQA::WebAPI');
# XXX: Test::Mojo loses its app when setting a new ua
# https://github.com/kraih/mojo/issues/598
my $app = $t->app;
$app->config->{'scm git'}->{git_auto_update} = 'no';
$t->ua(
OpenQA::Client->new(apikey => 'PERCIVALKEY02', apisecret => 'PERCIVALSECRET02')->ioloop(Mojo::IOLoop->singleton));
$t->app($app);
@ -260,6 +259,7 @@ subtest 'duplicate and pass job' => sub {
subtest 'create update job' => sub {
$plugin_mock_callcount = 0;
diag("Count: $plugin_mock_callcount");
$settings->{BUILD} = 'Update-FEDORA-2019-6bda4c81f4';
# this is intentionally not in alphabetical order
$settings->{ADVISORY_NVRS} = 'kernel-5.2.7-100.fc29 kernel-tools-5.2.7-100.fc29 kernel-headers-5.2.7-100.fc29';
@ -271,6 +271,7 @@ subtest 'create update job' => sub {
delete $settings->{SUBVARIANT};
$t->post_ok("/api/v1/jobs" => form => $settings)->status_is(200);
ok(my $updatejob = $t->tx->res->json->{id}, 'got ID of update job');
diag("Count: $plugin_mock_callcount");
ok($plugin_mock_callcount == 1, 'mock was called');
my ($body, $headerframe) = @{$published{'org.fedoraproject.stg.ci.fedora-update.test.queued'}};
$expected_artifact = {
@ -313,45 +314,4 @@ subtest 'create update job' => sub {
is_deeply($body, $expected, 'update job create triggers standardized amqp');
};
subtest 'create update job (new-style ADVISORY_NVR_N)' => sub {
$plugin_mock_callcount = 0;
delete $settings->{ADVISORY_NVRS};
# these are intentionally not in alphabetical order
$settings->{ADVISORY_NVRS_1} = 'kernel-5.2.8-100.fc29 kernel-tools-5.2.8-100.fc29';
$settings->{ADVISORY_NVRS_2} = 'kernel-headers-5.2.8-100.fc29';
$t->post_ok("/api/v1/jobs" => form => $settings)->status_is(200);
ok(my $newupdatejob = $t->tx->res->json->{id}, 'got ID of new-style update job');
ok($plugin_mock_callcount == 1, 'mock was called');
my ($body, $headerframe) = @{$published{'org.fedoraproject.stg.ci.fedora-update.test.queued'}};
$expected_artifact = {
alias => 'FEDORA-2019-6bda4c81f4',
builds => [
{
nvr => 'kernel-5.2.8-100.fc29'
},
{
nvr => 'kernel-headers-5.2.8-100.fc29'
},
{
nvr => 'kernel-tools-5.2.8-100.fc29'
}
],
id => 'sha256:b85bba148cec9d9c4dafea3a49785abef1f549fbad368f3818e20d9802340b16',
type => 'fedora-update',
release => {
version => '42',
name => 'F42'
},
};
$expected_run = {
url => "https://openqa.stg.fedoraproject.org/tests/$newupdatejob",
log => "https://openqa.stg.fedoraproject.org/tests/$newupdatejob/file/autoinst-log.txt",
id => $newupdatejob,
};
my $expected = get_expected;
# no image for update message
delete $expected->{'image'};
is_deeply($body, $expected, 'update job create triggers standardized amqp');
};
done_testing();

View File

@ -24,7 +24,7 @@ package OpenQA::WebAPI::Plugin::FedoraMessaging;
use Digest::SHA qw(sha256_hex);
use POSIX qw(strftime);
use Mojo::Base 'OpenQA::WebAPI::Plugin::AMQP', -signatures;
use Mojo::Base 'OpenQA::WebAPI::Plugin::AMQP';
use OpenQA::Jobs::Constants;
use OpenQA::Log qw(log_debug log_error);
use OpenQA::Utils;
@ -36,14 +36,8 @@ sub _iso8601_now {
return $now;
}
sub publish_amqp ($self, $topic, $event_data, $headerframe = {}, $remaining_attempts = undef, $retry_delay = undef) {
# note: the parent method has a retry mechanism which means that
# if publication fails, *this* method will be re-run with
# $headerframe populated, $remaining_attempts decremented and
# $retry_delay increased
# re-doing the wrap in this case is harmless as we ultimately
# merge the newly-created frame with the passed-in one and give
# the passed-in one priority
sub publish_amqp {
my ($self, $topic, $event_data, $headerframe) = @_;
my $sentat = _iso8601_now;
my $messageid = create_uuid_string;
# default fedora-messaging compliant header frame. Ridiculous
@ -65,10 +59,10 @@ sub publish_amqp ($self, $topic, $event_data, $headerframe = {}, $remaining_atte
message_id => $messageid,
);
# merge in the passed header frame values to allow overriding
$headerframe //= {};
%fullheaderframe = (%fullheaderframe, %$headerframe);
# call parent method. it's vital that we pass through $remaining_attempts
# to avoid an eternal loop
$self->SUPER::publish_amqp($topic, $event_data, \%fullheaderframe, $remaining_attempts, $retry_delay);
# call parent method
$self->SUPER::publish_amqp($topic, $event_data, \%fullheaderframe);
}
sub log_event_fedora_ci_messages {
@ -155,24 +149,10 @@ sub log_event_fedora_ci_messages {
version => $job->VERSION,
name => "F" . $job->VERSION
};
# handle old-style single ADVISORY_NVRS with all NVRs
my @nvrs = split(/ /, $job->settings_hash->{ADVISORY_NVRS} || '');
unless (@nvrs) {
# handle new-style chunked ADVISORY_NVRS_N settings
my $count = 1;
while ($count) {
if ($job->settings_hash->{"ADVISORY_NVRS_$count"}) {
push @nvrs, split(/ /, $job->settings_hash->{"ADVISORY_NVRS_$count"});
$count++;
}
else {
$count = 0;
}
}
unless (@nvrs) {
log_error "ADVISORY_NVRS(_N) not found for update test $job_id! Cannot publish!";
return;
}
log_error "ADVISORY_NVRS not found for update test $job_id! Cannot publish!";
return;
}
@nvrs = sort(@nvrs);
my @builds;

View File

@ -1,86 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Generator: Adobe Illustrator 21.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg
version="1.1"
id="Слой_1"
x="0px"
y="0px"
viewBox="0 0 128 128"
xml:space="preserve"
width="128"
height="128"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns:i="&amp;ns_ai;"><defs
id="defs33" />
<style
type="text/css"
id="style2">
.st0{fill:#86DA2F;}
.st1{fill:#24C2FF;}
.st2{fill:#FFCB12;}
.st3{fill:#0069DA;}
.st4{fill:#FF4649;}
</style>
<switch
id="switch28"
transform="matrix(1.4411343,0,0,1.4411343,-8.3201853,-8.5200283)">
<foreignObject
requiredExtensions="http://ns.adobe.com/AdobeIllustrator/10.0/"
x="0"
y="0"
width="1"
height="1">
</foreignObject>
<g
i:extraneous="self"
id="g26">
<g
id="g24">
<path
class="st0"
d="m 86,55.9 c 3.6,-0.3 6.5,2.1 6.8,5.7 0.3,3.8 -2.4,6.8 -6,7.1 -3.5,0.3 -6.5,-2.4 -6.8,-5.8 -0.3,-3.8 2.2,-6.6 6,-7 z"
id="path4" />
<path
class="st1"
d="m 42.1,85.5 c 0,-3.6 2.8,-6.4 6.1,-6.4 3.3,0 6.5,3.1 6.5,6.5 0,3.3 -2.8,6.3 -6,6.4 -4,0 -6.6,-2.5 -6.6,-6.5 z"
id="path6" />
<path
class="st2"
d="m 51.9,44.9 c -0.6,0.3 -0.8,-0.1 -1,-0.6 -5.1,-9.6 -3.6,-21.7 5.4,-28.9 2.4,-1.9 6.8,-2.4 8.8,-0.4 0.8,0.7 1,1.5 1.1,2.5 0.3,2.1 0.7,4.2 2.1,5.8 1.5,1.8 3.5,2.5 5.7,2.4 1.9,0 3.9,-0.3 5.1,1.9 0.7,1.3 0.4,6.1 -0.7,7.1 -0.6,0.4 -1,0.1 -1.4,0 -3.2,-1.3 -6.5,-1.3 -9.9,-0.7 -1.1,0.1 -1.7,-0.1 -1.7,-1.4 -0.1,-2.1 -0.6,-4 -1.7,-5.8 -2.1,-3.8 -6,-3.9 -8.5,-0.4 -2.1,2.8 -2.6,6.1 -3.2,9.4 -0.4,3 -0.2,6.1 -0.1,9.1 0,0 -0.1,0 0,0 z"
id="path8" />
<path
class="st0"
d="m 55.4,47 c -0.3,-0.4 -0.1,-0.8 0.3,-1.1 7.9,-7.2 19.7,-8.6 28.9,-1.5 2.4,1.9 3.9,6 2.6,8.3 -0.6,1 -1.3,1.4 -2.1,1.7 -1.9,0.8 -3.8,1.7 -5,3.5 -1.3,1.8 -1.5,3.9 -1,6.1 0.4,1.8 1.1,3.8 -0.7,5.4 -1,1 -5.7,1.8 -6.9,1 -0.6,-0.4 -0.4,-0.8 -0.3,-1.4 0.4,-3.5 -0.4,-6.7 -1.7,-9.7 -0.4,-1.1 -0.3,-1.7 0.8,-1.9 1.9,-0.6 3.8,-1.5 5.1,-2.9 3.1,-2.9 2.4,-6.7 -1.7,-8.3 -3.2,-1.4 -6.5,-1.1 -9.7,-0.8 -2.9,-0.1 -5.8,0.8 -8.6,1.6 z"
id="path10" />
<path
class="st1"
d="m 53.6,50.6 c 0.4,-0.4 0.7,-0.3 1.1,0 9.2,5.6 13.9,16.5 9.7,27.2 -1.1,2.8 -4.7,5.6 -7.4,4.9 C 55.9,82.4 55.3,81.9 54.8,81.2 53.5,79.5 52.2,78 50.1,77.3 47.9,76.6 45.9,77 44,78.1 c -1.7,1 -3.3,2.2 -5.4,1 -1.3,-0.7 -3.3,-5 -2.9,-6.4 0.3,-0.6 0.8,-0.6 1.4,-0.6 3.5,-0.6 6.3,-2.2 8.9,-4.4 0.8,-0.7 1.5,-0.7 2.2,0.3 1.1,1.7 2.5,3.1 4.3,4 3.6,2.1 7.1,0.3 7.5,-3.9 0.4,-3.5 -0.8,-6.5 -1.9,-9.6 -1.3,-2.8 -2.8,-5.4 -4.5,-7.9 z"
id="path12" />
<path
class="st3"
d="m 49.1,51.4 c -0.6,2.8 -1.8,5.4 -3.5,7.8 -5,7.5 -12.2,10.6 -21.1,9.7 -3.2,-0.3 -5.8,-2.9 -6.1,-5.6 -0.1,-1.1 0.1,-1.9 0.8,-2.8 1,-1.3 1.8,-2.4 2.2,-3.9 0.8,-3.1 -0.3,-5.6 -2.5,-7.8 -3.1,-3.1 -2.6,-5.8 1,-8.1 0.4,-0.3 1,-0.6 1.5,-0.8 0.8,-0.4 1.5,-0.4 1.8,0.6 1.3,3.2 3.8,5.6 6.5,7.5 1,0.8 1,1.4 0.1,2.4 -1.7,1.8 -2.6,4 -2.8,6.5 -0.3,3.1 1.5,5 4.6,5 1.9,0 3.8,-0.7 5.4,-1.5 4.3,-2.2 7.6,-5.4 10.8,-8.8 0.6,0 0.8,-0.3 1.3,-0.2 z"
id="path14" />
<path
class="st4"
d="m 26.3,22.3 c 0.3,0 1,0.1 1.7,0.3 5.1,1 8.3,-0.8 10,-5.7 1.1,-3.2 3.5,-4.2 6.5,-2.5 0.1,0 0.1,0.1 0.3,0.1 3.1,1.8 3.1,2.1 1,4.9 -1.7,2.2 -2.5,4.7 -2.9,7.4 -0.3,1.5 -0.8,1.8 -2.2,1.3 -2.2,-0.8 -4.6,-0.8 -6.9,0 -2.6,0.8 -3.8,3.2 -2.9,5.8 1.1,3.5 4.2,5 6.8,6.8 2.6,1.8 5.7,2.8 8.6,4 0.4,0.1 1.1,0.1 1,0.8 -0.1,0.4 -0.7,0.4 -1.3,0.4 C 39.7,46.2 33.8,45.2 28.9,41 24.3,37.2 21,32.7 21.5,26.3 c 0.7,-2.1 2.2,-3.6 4.8,-4 z"
id="path16" />
<path
class="st3"
d="m 15,61.3 c -3.3,0.4 -6.7,-2.4 -6.9,-5.8 -0.3,-3.3 2.5,-6.7 5.7,-6.9 3.6,-0.4 6.9,2.1 7.2,5.4 0.1,3.1 -2,7 -6,7.3 z"
id="path18" />
<path
class="st2"
d="m 73.3,11.8 c 3.5,-0.3 6.8,2.5 7.1,6 0.3,3.3 -2.5,6.5 -5.8,6.8 -3.6,0.3 -6.8,-2.4 -7.1,-5.8 -0.3,-3.5 2.2,-6.7 5.8,-7 z"
id="path20" />
<path
class="st4"
d="m 37,14.5 c 0.4,3.6 -2.1,6.7 -5.8,7.2 -3.2,0.4 -6.5,-2.2 -6.9,-5.3 -0.4,-4 1.8,-6.9 5.6,-7.4 3.4,-0.4 6.7,2.3 7.1,5.5 z"
id="path22" />
</g>
</g>
</switch>
</svg>

Before

Width:  |  Height:  |  Size: 4.0 KiB

View File

@ -1,3 +0,0 @@
<h1>Welcome to <%= $appname %></h1>
<p>Life is too short for manual testing!</p>
<p><a class="btn btn-primary btn-lg" href="http://open.qa" role="button">Learn more »</a></p>

View File

@ -1,19 +0,0 @@
%# AlmaLinux external issue reporting: link the failing job to the AlmaLinux
%# Bug Tracker (https://bugs.almalinux.org, MantisBT). Self-contained - unlike
%# the openSUSE branding it does not need a report_external_issue helper/plugin,
%# so no extra Perl plugin has to be packaged. MantisBT cannot prefill the bug
%# form via GET, so we preselect the matching AlmaLinux-N project and carry the
%# failing scenario/module in the link tooltip.
% my $job = stash('job');
% if ($job) {
% my ($major) = ($job->VERSION // '') =~ /^(\d+)/;
% my %project_ids = (8 => 2, 9 => 3, 10 => 4);
% my $pid = $major ? $project_ids{$major} : undef;
% my $url = 'https://bugs.almalinux.org/bug_report_page.php';
% $url .= "?project_id=$pid" if $pid;
% my $module = stash('moduleid') // '';
% my $scenario = $job->scenario_name // '';
% my $label = 'Report bug in the AlmaLinux Bug Tracker';
% $label .= " (scenario '$scenario'" . ($module ? ", module '$module'" : '') . ')' if $scenario;
%= stepaction_for($label => $url, 'fa-bug', 'report almalinux_bugtracker')
% }

View File

@ -1,6 +0,0 @@
<div class="text-right" id="sponsorbox">
<a href="https://almalinux.org" title="AlmaLinux">
<img alt="AlmaLinux" class="icons-sponsor_suse" src="/images/almalinux.svg" />
</a>
</div>

View File

@ -1,103 +0,0 @@
<style>
.navbar {
background-color: #082336;
}
.navbar-light .navbar-nav .nav-link {
color: #ffffff;
}
.navbar-nav .nav-link:hover,.navbar-nav .nav-link:focus {
background-color: transparent;
}
.navbar-light .navbar-nav .nav-link:hover, .navbar-light .navbar-nav .nav-link:focus {
color: #0069DA;
}
.navbar-nav {
font-size: 15px;
font-weight: 500;
}
.navbar-light .navbar-toggler-icon {
background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='30' height='30' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255,255,255,0.9%33' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")
}
body h1 {
font-size: 1.8rem!important;
}
body h2 {
font-size: 1.5rem!important;
}
body {
font-family: -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji" !important;
}
.jumbotron {
background-color: #dcd7d740;
}
.btn-primary {
color: #ffffff;
background-color: #0069DA;
}
a.btn.btn-primary:hover {
background: #004bbc;
}
.col-md-9 h1 {
color: #2c3e50;
}
.card {
border: 1px solid rgba(48,75,94,0.30);
}
.card-header {
color: #ffffff;
background-color: #304b5e;
}
.card-header strong {
color: #ffffff!important;
}
.card-header span {
color: #ffffff!important;
}
.build-results a {
color: #017698;
}
.build-dashboard .progress-bar-passed {
background-color: #68bc11;
}
.build-dashboard .progress-bar-failed {
background-color: #e1282b;
}
.build-dashboard .progress-bar-unfinished {
background-color: #2891ff;
}
.table thead {
background-image: linear-gradient(to bottom, transparent 0%, rgba(48,75,94,0.2525))!important;
}
.footer {
background-color: #dcd7d740;
}
/* openQA 5's bootstrap sets .navbar-brand>img{padding-top:0}, which makes the
logo taller and top-aligned. Restore symmetric padding so the navbar logo
matches the openqa.almalinux.org (openQA 4.6) rendering. */
.navbar-brand > img {
padding: 8px;
}
</style>

View File

@ -1,3 +1,3 @@
# Type Name ID GECOS [HOME] Shell
u geekotest - "openQA user" /var/lib/openqa /bin/bash
m geekotest nobody
m geekotest nogroup

View File

@ -1,4 +1,4 @@
# Type Name ID GECOS [HOME] Shell
u _openqa-worker - "openQA worker" /var/lib/empty /bin/bash
m _openqa-worker qemu
m _openqa-worker nogroup
m _openqa-worker kvm

View File

@ -1,7 +0,0 @@
# AlmaLinux openQA web UI branding.
# Selects the branding template set shipped in
# /usr/share/openqa/templates/webapi/branding/AlmaLinux/.
# Drop-in override: to disable, set 'branding = plain' (or openSUSE) in a
# higher-numbered file under /etc/openqa/openqa.ini.d/.
[global]
branding = AlmaLinux

View File

@ -1,4 +1,3 @@
# AlmaLinux spec, tracked from the Fedora openQA package.
# Fedora spec initially based on upstream spec file from OBS:
# https://build.opensuse.org/package/view_file/devel:openQA/openQA/openQA.spec
# License: GPLv2+
@ -23,18 +22,15 @@
%global github_owner os-autoinst
%global github_name openQA
%global github_version 5
%global github_commit 637609536026a0950adf5d3aa30b54f16c73e178
%global github_version 4.6
%global github_commit 9267281b4e7ec98515f7d6e680c5b17d1944e29a
# if set, will be a post-release snapshot build, otherwise a 'normal' build
%global github_date 20260604
%global github_date 20220201
%global shortcommit %(c=%{github_commit}; echo ${c:0:7})
# can't use linebreaks here!
%global openqa_main_service openqa-webui.service
%global openqa_extra_services openqa-gru.service openqa-websockets.service openqa-scheduler.service openqa-enqueue-audit-event-cleanup.service openqa-enqueue-audit-event-cleanup.timer openqa-enqueue-asset-cleanup.service openqa-enqueue-git-auto-update.service openqa-enqueue-asset-cleanup.timer openqa-enqueue-result-cleanup.service openqa-enqueue-result-cleanup.timer openqa-enqueue-bug-cleanup.service openqa-enqueue-bug-cleanup.timer openqa-enqueue-git-auto-update.timer openqa-enqueue-needle-ref-cleanup.service openqa-enqueue-needle-ref-cleanup.timer openqa-enqueue-scheduled-product-cleanup.service openqa-enqueue-scheduled-product-cleanup.timer
%global openqa_services %{openqa_main_service} %{openqa_extra_services}
%global openqa_services openqa-webui.service openqa-gru.service openqa-websockets.service openqa-scheduler.service openqa-enqueue-audit-event-cleanup.service openqa-enqueue-audit-event-cleanup.timer openqa-enqueue-asset-cleanup.service openqa-enqueue-asset-cleanup.timer openqa-enqueue-result-cleanup.service openqa-enqueue-result-cleanup.timer openqa-enqueue-bug-cleanup.service openqa-enqueue-bug-cleanup.timer
%global openqa_worker_services openqa-worker.target openqa-slirpvde.service openqa-vde_switch.service openqa-worker-cacheservice.service openqa-worker-cacheservice-minion.service
%global openqa_localdb_services openqa-setup-db.service openqa-dump-db.service openqa-dump-db.timer
%if %{undefined tmpfiles_create}
%global tmpfiles_create() \
@ -43,36 +39,23 @@
%endif
# diff from SUSE: we have 'openqa-client', they have 'openQA-client'
%define python_scripts_requires python3-requests openqa-client
%define python_scripts_requires python3-requests python3-future
# The following line is generated from dependencies.yaml (upstream)
%define assetpack_requires perl(CSS::Minifier::XS) >= 0.01 perl(JavaScript::Minifier::XS) >= 0.11 perl(Mojolicious) perl(Mojolicious::Plugin::AssetPack) >= 1.36 perl(YAML::PP) >= 0.026
%define assetpack_requires perl(CSS::Minifier::XS) >= 0.01 perl(JavaScript::Minifier::XS) >= 0.11 perl(Mojolicious::Plugin::AssetPack) >= 1.36
# Diff from SUSE: we use 'perl-interpreter' where they use 'perl',
# our 'perl' is a metapackage and we don't want all of it
# we use 'chrony' where they use 'ntp-daemon'
# their versioning of mojolicious is different due to
# https://github.com/openSUSE/cpanspec/issues/47
# The following line is generated from dependencies.yaml (upstream)
%define common_requires chrony perl-interpreter >= 5.20.0 perl(Carp::Always) >= 0.14.02 perl(Config::IniFiles) perl(Cpanel::JSON::XS) >= 4.09 perl(Cwd) perl(Data::Dump) perl(Data::Dumper) perl(Digest::MD5) perl(Feature::Compat::Try) perl(Filesys::Df) perl(Getopt::Long) perl(HTTP::Status) perl(Minion) >= 10.25 perl(Mojolicious) >= 9.34 perl(Regexp::Common) perl(Storable) perl(Text::Glob) perl(Time::Moment)
# Diff from SUSE: we package bsdcat and bsdtar separately
# AlmaLinux/EL9: bsdcat is not shipped in the stock repos, but OpenQA::Downloader
# invokes it to decompress raw assets, so it is required; provide it by rebuilding
# the libarchive bsdcat subpackage (RHEL builds but does not ship it).
%define common_requires perl-interpreter >= 5.20.0 perl(Archive::Extract) > 0.7 perl(Carp::Always) >= 0.14.02 perl(Config::IniFiles) perl(Config::Tiny) perl(Cpanel::JSON::XS) >= 4.09 perl(Cwd) perl(Data::Dump) perl(Data::Dumper) perl(Digest::MD5) perl(Filesys::Df) perl(Getopt::Long) perl(Minion) >= 10.22 perl(Mojolicious) >= 9.20 perl(Regexp::Common) perl(Storable) perl(Time::Moment) perl(Try::Tiny)
# runtime requirements for the main package that are not required by other sub-packages
# The following line is generated from dependencies.yaml (upstream)
%define main_requires %assetpack_requires bsdcat bsdtar git-core hostname openssh-clients perl(BSD::Resource) perl(Carp) perl(CommonMark) perl(DBD::Pg) >= 3.7.4 perl(DBI) >= 1.632 perl(DBIx::Class) >= 0.082801 perl(DBIx::Class::DeploymentHandler) perl(DBIx::Class::DynamicDefault) perl(DBIx::Class::OptimisticLocking) perl(DBIx::Class::ResultClass::HashRefInflator) perl(DBIx::Class::Schema::Config) perl(DBIx::Class::Storage::Statistics) perl(Date::Format) perl(DateTime) perl(DateTime::Duration) perl(DateTime::Format::Pg) perl(Exporter) perl(Fcntl) perl(File::Basename) perl(File::Copy) perl(File::Copy::Recursive) perl(File::Path) perl(File::Spec) perl(FindBin) perl(Getopt::Long::Descriptive) perl(IO::Handle) perl(IPC::Run) perl(JSON::Validator) perl(LWP::UserAgent) perl(Module::Load::Conditional) perl(Module::Pluggable) perl(Mojo::Base) perl(Mojo::ByteStream) perl(Mojo::IOLoop) perl(Mojo::JSON) perl(Mojo::Pg) perl(Mojo::RabbitMQ::Client) >= 0.2 perl(Mojo::URL) perl(Mojo::Util) perl(Mojolicious::Commands) perl(Mojolicious::Plugin) perl(Mojolicious::Plugin::OAuth2) perl(Mojolicious::Static) perl(Net::OpenID::Consumer) perl(POSIX) perl(Pod::POM) perl(SQL::Translator) perl(Scalar::Util) perl(Sort::Versions) perl(Text::Diff) perl(Time::HiRes) perl(Time::ParseDate) perl(Time::Piece) perl(Time::Seconds) perl(URI::Escape) perl(YAML::PP) >= 0.026 perl(YAML::XS) perl(aliased) perl(base) perl(constant) perl(diagnostics) perl(strict) perl(warnings)
%define main_requires %assetpack_requires git-core hostname perl(BSD::Resource) perl(Carp) perl(CommonMark) perl(Config::Tiny) perl(DBD::Pg) >= 3.7.4 perl(DBI) >= 1.632 perl(DBIx::Class) >= 0.082801 perl(DBIx::Class::DeploymentHandler) perl(DBIx::Class::DynamicDefault) perl(DBIx::Class::OptimisticLocking) perl(DBIx::Class::ResultClass::HashRefInflator) perl(DBIx::Class::Schema::Config) perl(DBIx::Class::Storage::Statistics) perl(Date::Format) perl(DateTime) perl(DateTime::Duration) perl(DateTime::Format::Pg) perl(Exporter) perl(Fcntl) perl(File::Basename) perl(File::Copy) perl(File::Copy::Recursive) perl(File::Path) perl(File::Spec) perl(FindBin) perl(Getopt::Long::Descriptive) perl(IO::Handle) perl(IPC::Run) perl(JSON::Validator) perl(LWP::UserAgent) perl(Module::Load::Conditional) perl(Module::Pluggable) perl(Mojo::Base) perl(Mojo::ByteStream) perl(Mojo::IOLoop) perl(Mojo::JSON) perl(Mojo::Pg) perl(Mojo::RabbitMQ::Client) >= 0.2 perl(Mojo::URL) perl(Mojo::Util) perl(Mojolicious::Commands) perl(Mojolicious::Plugin) perl(Mojolicious::Static) perl(Net::OpenID::Consumer) perl(POSIX) perl(Pod::POM) perl(SQL::Translator) perl(Scalar::Util) perl(Sort::Versions) perl(Text::Diff) perl(Time::HiRes) perl(Time::ParseDate) perl(Time::Piece) perl(Time::Seconds) perl(URI::Escape) perl(YAML::PP) >= 0.026 perl(YAML::XS) perl(aliased) perl(base) perl(constant) perl(diagnostics) perl(strict) perl(warnings)
# The following line is generated from dependencies.yaml (upstream)
%define client_requires curl git-core jq perl(Getopt::Long::Descriptive) perl(IO::Socket::SSL) >= 2.009 perl(IPC::Run) perl(JSON::Validator) perl(LWP::Protocol::https) perl(LWP::UserAgent) perl(Test::More) perl(YAML::PP) >= 0.020 perl(YAML::XS)
# Diff from SUSE 1: case (they have openQA-client, we have openqa-client)
# Diff from SUSE 2: we have 'sqlite' not 'sqlite3'
# Diff from SUSE 3: we package bsdcat and bsdtar separately
# The following line is generated from dependencies.yaml (upstream)
%define worker_requires bsdcat bsdtar openqa-client optipng os-autoinst perl(Capture::Tiny) perl(File::Map) perl(Minion::Backend::SQLite) >= 5.0.7 perl(Mojo::IOLoop::ReadWriteProcess) >= 0.26 perl(Mojo::SQLite) psmisc sqlite >= 3.24.0
# Diff from SUSE: we don't have perl(MCP) packaged currently
# The following line is generated from dependencies.yaml (upstream)
%define mcp_requires %{nil}
# Diff from SUSE: they have npm as they run npm install in the spec,
# we do it in update-cache.sh
%define worker_requires optipng os-autoinst < 5 perl(Capture::Tiny) perl(File::Map) perl(Minion::Backend::SQLite) >= 5.0.1 perl(Mojo::IOLoop::ReadWriteProcess) >= 0.26 perl(Mojo::SQLite) psmisc sqlite >= 3.24.0
# The following line is generated from dependencies.yaml (upstream)
%define build_requires %assetpack_requires rubygem(sass)
@ -81,35 +64,24 @@
# package.
# Diff from SUSE: Selenium requirements dropped as not available in Fedora,
# critic and (python) yamllint requirements dropped as we don't run those
# checks in our package build, ssh-keygen is in openssh in Fedora
# (openssh-common in SUSE), Syntax::Keyword::Try::Deparse seems to be
# missing upstream
# checks in our package build (except Perl::Critic itself as the
# compile-check-all test fails on the in-tree critic module if we leave
# that out)
# The following line is generated from dependencies.yaml (upstream)
%define test_requires %common_requires %main_requires %mcp_requires %python_scripts_requires %worker_requires curl file jq openssh os-autoinst perl(App::cpanminus) perl(Test::Compile) perl(Test::Exception) perl(Test::Fatal) perl(Test::Mock::Time) perl(Test::MockModule) perl(Test::MockObject) perl(Test::Mojo) perl(Test::Most) perl(Test::Output) perl(Test::Pod) perl(Test::Strict) perl(Test::Warnings) >= 0.029 perl(Syntax::Keyword::Try::Deparse) postgresql-server
%define test_requires %common_requires %main_requires %python_scripts_requires %worker_requires ShellCheck curl jq os-autoinst-devel perl(App::cpanminus) perl(Mojolicious::Plugin::OAuth2) perl(Perl::Critic) perl(Test::Exception) perl(Test::Fatal) perl(Test::MockModule) perl(Test::MockObject) perl(Test::Mojo) perl(Test::Most) perl(Test::Output) perl(Test::Pod) perl(Test::Strict) perl(Test::Warnings) >= 0.029 postgresql-server
%ifarch x86_64
%define qemu qemu qemu-kvm
%else
%define qemu qemu
%endif
# Diff from SUSE: perl::Critic::Community is omitted as we do not package it,
# SUSE has python3-yamllint but we just have yamllint,
# SUSE has python3-gitlint and python3-ruff but we just have gitlint and ruff
# shfmt is omitted as our package for it was orphaned and retired
# Perl::Critic doesn't have a third version component on Fedora
# AlmaLinux/EL9: gitlint, ruff and perl(Code::TidyAll) are not packaged for
# EL9, so they are dropped from the style-check (author-test) requirements.
# The following line is generated from dependencies.yaml (upstream)
%define style_check_requires ShellCheck perl(Perl::Critic) >= 1.156 perl(Pod::Markdown) perl(Test::Perl::Critic) yamllint
# diff from SUSE: perl(Devel::Cover::Report::Codecovbash) dropped because
# it's not in Fedora (this means you can't run 'make coverage-codecov')
# xorg-x11-fonts dropped because that binary package doesn't exist in
# Fedora (it exists as a source package generating multiple binary
# packages) and I can't find any particular reason for it
# The following line is generated from dependencies.yaml (upstream)
%define cover_requires perl(Devel::Cover)
# diff from SUSE 1: xorg-x11-fonts dropped because that binary package
# doesn't exist in Fedora (it exists as a source package generating
# multiple binary packages) and I can't find any reason for it
# diff from SUSE 2: we don't have perl(Test::CheckGitStatus) packaged
# The following line is generated from dependencies.yaml (upstream)
%define devel_no_selenium_requires %build_requires %cover_requires %qemu %style_check_requires %test_requires curl make pandoc perl(Perl::Tidy) perl(TAP::Harness::JUnit) postgresql-devel python3-weasyprint rsync sudo tar
%define devel_requires %build_requires %qemu %test_requires curl perl(Devel::Cover) perl(Perl::Tidy) postgresql-devel rsync sudo tar
%define devel_no_selenium_requires %build_requires %qemu %test_requires curl perl(Devel::Cover) perl(Perl::Tidy) postgresql-devel rsync sudo tar
# diff from SUSE: chromedriver dropped as we don't package it
# that makes this look fairly silly, but we want to follow the SUSE
# spec as close as we can
@ -121,10 +93,8 @@
Name: openqa
Version: %{github_version}%{?github_date:^%{github_date}git%{shortcommit}}
Release: 1%{?dist}
Summary: Framework for automated system-level testing (web-frontend, scheduler and tools)
# openQA is mostly GPLv2+. some scripts and bundled Node modules are
# MIT, ace-builds is BSD-3-Clause
License: GPL-2.0-or-later AND MIT AND BSD-3-Clause
Summary: OS-level automated testing framework
License: GPLv2+
Url: http://os-autoinst.github.io/openQA/
Source0: https://github.com/%{github_owner}/%{github_name}/archive/%{github_commit}/%{github_name}-%{github_commit}.tar.gz
# pre-generated cached assets, build with update-cache.sh. We could
@ -144,35 +114,11 @@ Source3: FedoraMessaging.pm
# tests for the fedora-messaging publishing plugin
Source4: 23-fedora-messaging.t
# sysusers config files. note these are shipped in the upstream tarball
# but we need to change the groups so we have our own versions here
# but we cannot use the files from the tarball for %pre scriptlet
# generation, so we duplicate them as source files for that purpose;
# this is an ugly hack that should be removed if it becomes possible
Source5: geekotest.conf
Source6: openQA-worker.conf
# AlmaLinux web UI branding: logo asset served at /images/almalinux.svg
# (dropped into assets/ in %%prep) plus our branding template set. See the
# branding-layout patch below and 'branding = AlmaLinux' in openqa.ini.
Source7: almalinux.svg
Source8: branding-AlmaLinux-docbox.html.ep
Source9: branding-AlmaLinux-sponsorbox.html.ep
Source10: branding-AlmaLinux-style.html.ep
# openqa.ini.d drop-in that selects the AlmaLinux branding by default
Source11: openqa-branding.ini
# AlmaLinux issue-reporting: links failing jobs to bugs.almalinux.org
Source12: branding-AlmaLinux-external_reporting.html.ep
# https://github.com/os-autoinst/openQA/pull/7504
# Fix 16-tests_dependencies.t when selenium is not present
Patch: 0001-t-Skip-earlier-in-tests_dependencies.t.patch
# https://github.com/os-autoinst/openQA/pull/7509
# Support invent.kde.org as a bug tracker (for bug links)
Patch: 0001-fix-Support-invent.kde.org-and-work_items-in-bug-URL.patch
# AlmaLinux/EL9: give the cache-service metrics upsert an explicit ON CONFLICT
# target (EL9 SQLite 3.34 rejects target-less DO UPDATE), and enable -signatures
# on the fake worker packages in t/24-worker-jobs.t (EL9 Perl 5.32 warns that
# sub signatures are experimental).
Patch: 0001-EL9-sqlite-upsert-and-perl532-signatures.patch
# AlmaLinux: rebrand the web UI - swap the navbar logo for the AlmaLinux
# mark and pull our branding stylesheet into the page head. The matching
# branding templates and logo asset are installed from SOURCE7-10 in %%prep.
Patch: 0001-EL9-AlmaLinux-branding-layout.patch
BuildRequires: make
BuildRequires: %{python_scripts_requires}
@ -194,6 +140,7 @@ Requires(post): coreutils
# Standard for packages that have systemd services & sysusers
%{?systemd_requires}
%{?sysusers_requires_compat}
# the plugin is needed if the auth method is set to "oauth2"
Recommends: perl(Mojolicious::Plugin::OAuth2)
@ -201,33 +148,10 @@ Recommends: perl(Mojolicious::Plugin::OAuth2)
Recommends: perl(IO::Uncompress::UnXz)
# server needs to run an rsync server if worker caching is used
Recommends: rsync
# Optionally enabled with USE_PNGQUANT=1
Recommends: pngquant
# For the httpd subpackage split in 4.3-7, needed for updates to work right
Obsoletes: openqa < 4.3-7
# The NPM bundled dependency generator does not work as the modules
# seem to be stripped down to the minimum openQA needs - package.json
# is stripped out. So we have to list these manually
Provides: bundled(nodejs-ace-builds) = 1.43.1
Provides: bundled(nodejs-anser) = 2.3.2
Provides: bundled(nodejs-bootstrap) = 5.3.7
Provides: bundled(nodejs-chosen-js) = 1.8.7
Provides: bundled(nodejs-d3) = 7.9.0
Provides: bundled(nodejs-dagre-d3) = 0.6.4
Provides: bundled(nodejs-datatables.net) = 2.3.2
Provides: bundled(nodejs-datatables.net-bs5) = 2.3.2
Provides: bundled(nodejs-fork-awesome) = 1.2.0
Provides: bundled(nodejs-jquery) = 3.7.1
Provides: bundled(nodejs-jquery-ujs) = 1.2.3
Provides: bundled(nodejs-timeago) = 1.6.7
# Note: Fedora does not have the issue SUSE has with noarch. on Fedora
# if build for *any* arch fails, the build is considered failed for
# *all* arches, so we can never get in a situation where the
# perl-Mojolicious-Plugin-AssetPack version differs across arches as
# SUSE can
BuildArch: noarch
%description
@ -353,6 +277,7 @@ helper for interacting with the openQA REST API.
%package python-scripts
Summary: Additional scripts in python
Group: Development/Tools/Other
Requires: %python_scripts_requires
%description python-scripts
@ -360,43 +285,25 @@ Additional scripts for the use of openQA in the python programming language.
%package local-db
Summary: Helper package to ease setup of postgresql DB
Requires: %{name} = %{version}
Requires: %name
Requires: postgresql-server
BuildRequires: postgresql-server
Supplements: (%{name} and postgresql-server)
Supplements: packageand(%name:postgresql-server)
%description local-db
You only need this package if you have a local postgresql server
next to the webui.
%package single-instance
Summary: Convenience package for a single-instance setup using apache proxy
Provides: %{name}-single-instance-apache
Provides: %{name}-single-instance-apache2
Summary: Convenience package for a single-instance setup
Requires: %{name}-local-db
Requires: %{name} = %{version}
Requires: %{name}-worker = %{version}
Requires: %{name}-worker
Requires: httpd
%description single-instance
Use this package to setup a local instance with all services provided together.
%package single-instance-nginx
Summary: Convenience package for a single-instance setup using nginx proxy
Requires: %{name}-local-db
Requires: %{name} = %{version}
Requires: %{name}-worker = %{version}
Requires: nginx
%description single-instance-nginx
Use this package to setup a local instance with all services provided together.
%package bootstrap
Summary: Automated openQA setup
Requires: curl
Requires: iputils
Requires: procps
%description bootstrap
This can automatically setup openQA - either directly on your system
@ -409,44 +316,6 @@ Summary: The openQA documentation
Documentation material covering installation, configuration, basic test
writing, etc., covering both openQA and the os-autoinst test engine.
%package munin
Summary: Munin scripts
Requires: munin
Requires: munin-node
Requires: curl
Requires: perl-interpreter
%description munin
Use this package to install munin scripts that allow to monitor some openQA
statistics.
%package client-bash-completion
Summary: Bash Completion for %{name}
Group: Development/Tools/Other
Requires: bash-completion
Supplements: (%{name}-client and bash-completion)
%description client-bash-completion
The official bash completion script for openqa-cli.
%package client-zsh-completion
Summary: Zsh Completion for %{name}
Group: Development/Tools/Other
Supplements: (%{name}-client and zsh)
%description client-zsh-completion
The official zsh completion script for openqa-cli.
%package llm-server
Summary: Local LLM Server features for openQA workers
Requires: %{name}-worker = %{version}
Requires: podman
%description llm-server
openQA workers can optionally host a local llama.cpp server to provide
LLM features directly from the worker node. This package provides the
Podman Quadlet configuration to automatically manage the server.
%prep
%autosetup -p1 -n %{github_name}-%{github_commit} -a 1
sed -e 's,/bin/env python,/bin/python,' -i script/openqa-label-all
@ -455,8 +324,6 @@ sed -i -e 's,apache2\.service,httpd\.service,g' systemd/*.service
# ...Fedora keeps httpd config here, SUSE keeps it there.
sed -i -e 's,"$(DESTDIR)"/etc/apache2/vhosts.d,"$(DESTDIR)"%{_sysconfdir}/httpd/conf.d,g' Makefile
sed -i -e 's,/etc/apache2/vhosts.d,%{_sysconfdir}/httpd/conf.d,g' etc/apache2/vhosts.d/*
# ...Fedora keeps nginx config here, SUSE keeps it there.
sed -i -e 's,"$(DESTDIR)"/etc/nginx/vhosts.d,"$(DESTDIR)"%{_sysconfdir}/nginx/conf.d,g' Makefile
# These are the Fedora-y standard TLS cert/key locations.
sed -i -e 's,/etc/apache2/ssl.crt,%{_sysconfdir}/pki/tls/certs,g' etc/apache2/vhosts.d/*
sed -i -e 's,/etc/apache2/ssl.key,%{_sysconfdir}/pki/tls/private,g' etc/apache2/vhosts.d/*
@ -465,55 +332,34 @@ cp %{SOURCE2} lib/OpenQA/WebAPI/Plugin/
cp %{SOURCE3} lib/OpenQA/WebAPI/Plugin/
# we don't really need the tidy test
rm -f t/00-tidy.t
# we don't have the deps for the MCP feature yet
rm -f lib/OpenQA/WebAPI/Plugin/MCP.pm
rm -f t/api/17-mcp.t
# add the fedora-messaging publishing plugin test to the sources
cp %{SOURCE4} t/
# AlmaLinux branding: drop our branding template set and logo into the
# source tree. 'make install' ships templates/ and assets/ wholesale, so
# these get picked up by the existing %%{_datadir}/openqa/{templates,assets}
# file globs. The branding-layout patch wires them into the page; setting
# 'branding = AlmaLinux' in openqa.ini activates them.
install -d templates/webapi/branding/AlmaLinux
install -p -m 0644 %{SOURCE8} templates/webapi/branding/AlmaLinux/docbox.html.ep
install -p -m 0644 %{SOURCE9} templates/webapi/branding/AlmaLinux/sponsorbox.html.ep
install -p -m 0644 %{SOURCE10} templates/webapi/branding/AlmaLinux/style.html.ep
install -p -m 0644 %{SOURCE12} templates/webapi/branding/AlmaLinux/external_reporting.html.ep
install -p -m 0644 %{SOURCE7} assets/images/almalinux.svg
%build
# this does nothing, but it's harmless, so just in case it turns up...
make %{?_smp_mflags}
%install
export LC_ALL=en_US.UTF-8
export LANG=en_US.UTF-8
%make_install
mkdir -p %{buildroot}%{_datadir}/openqa/etc/openqa
ln -s %{_sysconfdir}/openqa/openqa.ini %{buildroot}%{_datadir}/openqa/etc/openqa/openqa.ini
ln -s %{_sysconfdir}/openqa/database.ini %{buildroot}%{_datadir}/openqa/etc/openqa/database.ini
mkdir -p %{buildroot}%{_bindir}
ln -s %{_datadir}/openqa/script/client %{buildroot}%{_bindir}/openqa-client
ln -s %{_datadir}/openqa/script/openqa-cli %{buildroot}%{_bindir}/openqa-cli
ln -s %{_datadir}/openqa/script/openqa-clone-job %{buildroot}%{_bindir}/openqa-clone-job
ln -s %{_datadir}/openqa/script/openqa-dump-templates %{buildroot}%{_bindir}/openqa-dump-templates
ln -s %{_datadir}/openqa/script/openqa-load-templates %{buildroot}%{_bindir}/openqa-load-templates
ln -s %{_datadir}/openqa/script/dump_templates %{buildroot}%{_bindir}/openqa-dump-templates
ln -s %{_datadir}/openqa/script/load_templates %{buildroot}%{_bindir}/openqa-load-templates
ln -s %{_datadir}/openqa/script/openqa-clone-custom-git-refspec %{buildroot}%{_bindir}/openqa-clone-custom-git-refspec
ln -s %{_datadir}/openqa/script/openqa-validate-yaml %{buildroot}%{_bindir}/openqa-validate-yaml
ln -s %{_datadir}/openqa/script/setup-db %{buildroot}%{_bindir}/openqa-setup-db
ln -s %{_datadir}/openqa/script/dump-db %{buildroot}%{_bindir}/openqa-dump-db
ln -s %{_datadir}/openqa/script/openqa-label-all %{buildroot}%{_bindir}/openqa-label-all
install -d -m 755 %{buildroot}%{_datadir}/openqa/client
install -m 644 public/openqa-cli.yaml %{buildroot}%{_datadir}/openqa/client/openqa-cli.yaml
# munin
install -d -m 755 %{buildroot}/%{_datadir}/munin/plugins
install -m 755 contrib/munin/plugins/minion %{buildroot}/%{_datadir}/munin/plugins/openqa_minion_
install -d -m 755 %{buildroot}/%{_sysconfdir}/munin/plugin-conf.d
install -m 644 contrib/munin/config/minion.config %{buildroot}/%{_sysconfdir}/munin/plugin-conf.d/openqa-minion
install -m 755 contrib/munin/utils/munin-mail %{buildroot}/%{_datadir}/openqa/script/munin-mail
# on the whole I think it's "less bad" to install our duplicate copies
# of these over top of the ones from the tarball. if they ever go out
# of sync, at least our scriptlets will match the installed config
@ -521,23 +367,22 @@ install -m 755 contrib/munin/utils/munin-mail %{buildroot}/%{_datadir}/openqa/sc
install -p -D -m 0644 %{SOURCE5} %{buildroot}%{_sysusersdir}/geekotest.conf
install -p -D -m 0644 %{SOURCE6} %{buildroot}%{_sysusersdir}/openQA-worker.conf
# AlmaLinux: enable the AlmaLinux branding by default via an openqa.ini.d
# drop-in (admins can override in a higher-numbered file)
install -p -D -m 0644 %{SOURCE11} %{buildroot}%{_sysconfdir}/openqa/openqa.ini.d/00-almalinux-branding.ini
cd %{buildroot}
grep -rl %{_bindir}/env . | while read file; do
sed -e 's,%{_bindir}/env perl,%{_bindir}/perl,' -i $file
done
mkdir %{buildroot}%{_localstatedir}/lib/openqa/pool/1
mkdir %{buildroot}%{_localstatedir}/lib/openqa/cache
mkdir %{buildroot}%{_localstatedir}/lib/openqa/webui
mkdir %{buildroot}%{_localstatedir}/lib/openqa/webui/cache
# We don't do AppArmor
rm -rf %{buildroot}%{_sysconfdir}/apparmor.d
# these scripts are very SUSE-specific
rm -f %{buildroot}%{_datadir}/openqa/script/openqa-auto-update
rm -f %{buildroot}%{_datadir}/openqa/script/openqa-continuous-update
rm -f %{buildroot}%{_datadir}/openqa/script/openqa-rollback
rm -f %{buildroot}%{_datadir}/openqa/script/openqa-check-devel-repo
rm -f %{buildroot}%{_datadir}/openqa/script/openqa-clean-repo-cache
%check
@ -550,12 +395,17 @@ export LC_ALL=en_US.UTF-8
touch openqa-debug.log autoinst-log.txt
chmod a+w openqa-debug.log autoinst-log.txt
# we can't use 'unshare' in Fedora package build env
sed -i -e 's,unshare -r -n ,,g' t/40-script_openqa-clone-custom-git-refspec.t
sed -i -e 's,unshare -r -n ,,g' t/40-script_openqa-clone-custom-git-refspec.t t/40-openqa-clone-job.t t/32-openqa_client-script.t
# these tests expect a 'not connected' error that it gets with unshare
# but with mock we get 'Connection refused', so just wipe them
sed -i -e '/fails without network/d' t/32-openqa_client-script.t t/40-openqa-clone-job.t
# Skip tests not working currently, or flaky
rm \
t/01-test-utilities.t \
t/17-labels_carry_over.t \
t/25-cache-service.t
t/25-cache-service.t \
t/34-developer_mode-unit.t \
t/44-scripts.t
# "CI" set with longer timeouts as needed for higher performance variations
# within CI systems, e.g. OBS. See t/lib/OpenQA/Test/TimeLimit.pm
@ -565,16 +415,15 @@ export OPENQA_TEST_TIMEOUT_SCALE_CI=15
# docker-compose. Also, these tests are less relevant (or not relevant) for
# packaging
export CONTAINER_TEST=0
export HELM_TEST=0
# We don't want fatal warnings during package building
export PERL_TEST_WARNINGS_ONLY_REPORT_WARNINGS=1
# GIT_CEILING_DIRECTORIES here avoids a case where git error handling
# can differ when you run the build in mock and cause 16-utils-runcmd
# to fail
make test GIT_CEILING_DIRECTORIES="/" CHECKSTYLE=0 PROVE_ARGS='-r t' TEST_PG_PATH=%{buildroot}/DB
make test GIT_CEILING_DIRECTORIES="/" CHECKSTYLE=0 PROVE_ARGS='-l -r' TEST_PG_PATH=%{buildroot}/DB
rm -rf %{buildroot}/DB
%endif
%pre
%sysusers_create_compat %{SOURCE5}
%pre worker
%sysusers_create_compat %{SOURCE6}
@ -589,9 +438,7 @@ rm -rf %{buildroot}/DB
%post httpd
if [ $1 -eq 1 ]; then
echo "### copy and edit /etc/httpd/conf.d/openqa.conf.template if using apache!"
echo "### copy and edit /etc/nginx/conf.d/openqa.conf.template if using nginx!"
echo "### copy and edit /etc/httpd/conf.d/openqa.conf.template!"
fi
%preun
@ -610,60 +457,39 @@ fi
%systemd_postun_with_restart %{openqa_worker_services}
%post local-db
%systemd_post %{openqa_localdb_services}
%systemd_post openqa-setup-db.service
%preun local-db
%systemd_preun %{openqa_localdb_services}
%systemd_preun openqa-setup-db.service
%postun local-db
%systemd_postun_with_restart %{openqa_localdb_services}
%post llm-server
# ensure the Podman Quadlet generator is run to create the .service unit
[ -x /usr/bin/systemctl ] && /usr/bin/systemctl daemon-reload || :
%systemd_post openqa-llm-server.service
%preun llm-server
%systemd_preun openqa-llm-server.service
%postun llm-server
%systemd_postun openqa-llm-server.service
%systemd_postun_with_restart openqa-setup-db.service
%files
%doc README.md
%ghost %config(noreplace) %attr(0644,geekotest,root) %{_sysconfdir}/openqa/openqa.ini
%ghost %config(noreplace) %attr(0640,geekotest,root) %{_sysconfdir}/openqa/database.ini
%doc README.asciidoc
%dir %{_sysconfdir}/openqa
%dir %{_sysconfdir}/openqa/openqa.ini.d
%config(noreplace) %{_sysconfdir}/openqa/openqa.ini.d/00-almalinux-branding.ini
%dir %{_sysconfdir}/openqa/database.ini.d
%{_datadir}/doc/openqa/examples/openqa.ini
%{_datadir}/doc/openqa/examples/database.ini
%config(noreplace) %{_sysconfdir}/openqa/openqa.ini
%config(noreplace) %attr(-,root,geekotest) %{_sysconfdir}/openqa/database.ini
%dir %{_datadir}/openqa
%dir %{_datadir}/openqa/etc
%dir %{_datadir}/openqa/etc/openqa
%{_datadir}/openqa/etc/openqa/openqa.ini
%{_datadir}/openqa/etc/openqa/database.ini
%config %{_sysconfdir}/logrotate.d
# init
%{_unitdir}/openqa-webui.service
%{_unitdir}/openqa-livehandler.service
%{_unitdir}/openqa-gru.service
%dir %{_unitdir}/openqa-gru.service.requires
%{_unitdir}/openqa-scheduler.service
%dir %{_unitdir}/openqa-scheduler.service.requires
%{_unitdir}/openqa-websockets.service
%dir %{_unitdir}/openqa-websockets.service.requires
%{_unitdir}/openqa-enqueue-audit-event-cleanup.service
%{_unitdir}/openqa-enqueue-audit-event-cleanup.timer
%{_unitdir}/openqa-enqueue-asset-cleanup.service
%{_unitdir}/openqa-enqueue-asset-cleanup.timer
%{_unitdir}/openqa-enqueue-git-auto-update.service
%{_unitdir}/openqa-enqueue-git-auto-update.timer
%{_unitdir}/openqa-enqueue-result-cleanup.service
%{_unitdir}/openqa-enqueue-result-cleanup.timer
%{_unitdir}/openqa-enqueue-bug-cleanup.service
%{_unitdir}/openqa-enqueue-bug-cleanup.timer
%{_unitdir}/openqa-enqueue-needle-ref-cleanup.service
%{_unitdir}/openqa-enqueue-needle-ref-cleanup.timer
%{_unitdir}/openqa-enqueue-scheduled-product-cleanup.service
%{_unitdir}/openqa-enqueue-scheduled-product-cleanup.timer
%{_tmpfilesdir}/openqa-webui.conf
# web libs
%{_datadir}/openqa/lib/DBIx/
@ -672,14 +498,11 @@ fi
%{_datadir}/openqa/lib/OpenQA/Scheduler/
%{_datadir}/openqa/lib/OpenQA/Schema/
%{_datadir}/openqa/lib/OpenQA/WebAPI/
%exclude %{_datadir}/openqa/lib/OpenQA/WebAPI/Plugin/FedoraMessaging.pm
%exclude %{_datadir}/openqa/lib/OpenQA/WebAPI/Plugin/FedoraUpdateRestart.pm
%{_datadir}/openqa/lib/OpenQA/WebSockets/
%{_datadir}/openqa/templates
%{_datadir}/openqa/public
%{_datadir}/openqa/assets
%{_datadir}/openqa/dbicdh
%{_datadir}/openqa/node_modules
%{_datadir}/openqa/assets
%dir %{_datadir}/openqa/script
%{_datadir}/openqa/script/configure-web-proxy
%{_datadir}/openqa/script/create_admin
@ -695,10 +518,7 @@ fi
%{_datadir}/openqa/script/openqa-enqueue-asset-cleanup
%{_datadir}/openqa/script/openqa-enqueue-audit-event-cleanup
%{_datadir}/openqa/script/openqa-enqueue-bug-cleanup
%{_datadir}/openqa/script/openqa-enqueue-git-auto-update
%{_datadir}/openqa/script/openqa-enqueue-needle-ref-cleanup
%{_datadir}/openqa/script/openqa-enqueue-result-cleanup
%{_datadir}/openqa/script/openqa-enqueue-scheduled-product-cleanup
%{_datadir}/openqa/script/openqa-gru
%{_datadir}/openqa/script/openqa-webui-daemon
%{_datadir}/openqa/script/upgradedb
@ -721,16 +541,8 @@ fi
%files devel
%files client-bash-completion
%{_datadir}/bash-completion/completions/openqa-cli
%files client-zsh-completion
%{_datadir}/zsh/site-functions/_openqa-cli
%files common
%license COPYING
%dir %{_datadir}/doc/openqa
%dir %{_datadir}/doc/openqa/examples
%dir %{_datadir}/openqa
%ghost %dir %{_datadir}/openqa/packed
%{_datadir}/openqa/lib
@ -757,25 +569,17 @@ fi
# this is a compat symlink to a directory whose contents are split
# between server and worker
%{_localstatedir}/lib/openqa/script
%{_unitdir}/openqa-minion-restart.service
%{_unitdir}/openqa-minion-restart.path
%files worker
%{_datadir}/openqa/lib/OpenQA/CacheService/
%{_datadir}/openqa/lib/OpenQA/Worker/
%ghost %config(noreplace) %attr(0644,root,root) %{_sysconfdir}/openqa/workers.ini
%ghost %config(noreplace) %attr(0400,_openqa-worker,root) %{_sysconfdir}/openqa/client.conf
%dir %{_sysconfdir}/openqa/workers.ini.d
%dir %{_sysconfdir}/openqa/client.conf.d
%{_datadir}/doc/openqa/examples/workers.ini
%{_datadir}/doc/openqa/examples/client.conf
%config(noreplace) %{_sysconfdir}/openqa/workers.ini
%config(noreplace) %attr(0400,_openqa-worker,root) %{_sysconfdir}/openqa/client.conf
# init
%dir %{_unitdir}
%{_prefix}/lib/systemd/system-generators/systemd-openqa-generator
%{_unitdir}/openqa-worker.target
%{_unitdir}/openqa-worker.slice
%{_unitdir}/openqa-worker@.service
%{_unitdir}/openqa-worker-plain@.service
%{_unitdir}/openqa-worker-cacheservice-minion.service
%{_unitdir}/openqa-worker-cacheservice.service
%{_unitdir}/openqa-worker-no-cleanup@.service
@ -788,7 +592,7 @@ fi
%{_datadir}/openqa/script/openqa-vde_switch
%{_tmpfilesdir}/openqa.conf
%{_sysusersdir}/openQA-worker.conf
%ghost %dir %attr(0755,_openqa-worker,root) %{_rundir}/openqa
%ghost %dir %{_rundir}/openqa
# worker libs
%dir %{_datadir}/openqa
%dir %{_datadir}/openqa/script
@ -801,7 +605,6 @@ fi
%dir %{_localstatedir}/lib/openqa/cache
# own one pool - to create the others is task of the admin
%dir %{_localstatedir}/lib/openqa/pool/1
%{_prefix}/lib/sysctl.d/01-openqa-reload-worker-auto-restart.conf
# Note: remote workers are required to mount /var/lib/openqa/share
# shared with the server.
@ -812,27 +615,14 @@ fi
%config %{_sysconfdir}/httpd/conf.d/openqa.conf.template
%config %{_sysconfdir}/httpd/conf.d/openqa-common.inc
%config %{_sysconfdir}/httpd/conf.d/openqa-ssl.conf.template
# nginx vhost
%dir %{_sysconfdir}/nginx
%dir %{_sysconfdir}/nginx/conf.d
%config %{_sysconfdir}/nginx/conf.d/openqa.conf.template
%config %{_sysconfdir}/nginx/conf.d/openqa-llm.conf.template
%config(noreplace) %{_sysconfdir}/nginx/conf.d/openqa-assets.inc
%config(noreplace) %{_sysconfdir}/nginx/conf.d/openqa-endpoints.inc
%config(noreplace) %{_sysconfdir}/nginx/conf.d/openqa-locations.inc
%config(noreplace) %{_sysconfdir}/nginx/conf.d/openqa-upstreams.inc
%files client
%dir %{_datadir}/openqa
%dir %{_datadir}/openqa/client
%{_datadir}/openqa/client/openqa-cli.yaml
%dir %{_datadir}/openqa/script
%{_datadir}/openqa/script/client
%{_datadir}/openqa/script/clone_job.pl
%{_datadir}/openqa/script/dump_templates
%{_datadir}/openqa/script/load_templates
%{_datadir}/openqa/script/openqa-dump-templates
%{_datadir}/openqa/script/openqa-load-templates
%{_datadir}/openqa/script/openqa-cli
%{_datadir}/openqa/script/openqa-clone-job
%{_datadir}/openqa/script/openqa-clone-custom-git-refspec
@ -858,197 +648,22 @@ fi
%files local-db
%{_unitdir}/openqa-setup-db.service
%{_unitdir}/openqa-dump-db.service
%{_unitdir}/openqa-dump-db.timer
%{_unitdir}/openqa-gru.service.requires/postgresql.service
%{_unitdir}/openqa-scheduler.service.requires/postgresql.service
%{_unitdir}/openqa-websockets.service.requires/postgresql.service
%{_datadir}/openqa/script/setup-db
%{_datadir}/openqa/script/dump-db
%{_bindir}/openqa-setup-db
%{_bindir}/openqa-dump-db
%dir %attr(0755,postgres,root) %{_localstatedir}/lib/openqa/backup
%files single-instance
%files single-instance-nginx
%files bootstrap
%{_datadir}/openqa/script/openqa-bootstrap
%{_datadir}/openqa/script/openqa-bootstrap-container
%files munin
%defattr(-,root,root)
%doc contrib/munin/config/minion.config
%dir %{_datadir}/openqa/script
%dir %{_sysconfdir}/munin
%dir %{_sysconfdir}/munin/plugin-conf.d
%{_datadir}/munin/plugins/openqa_minion_
%{_datadir}/openqa/script/munin-mail
%config(noreplace) %{_sysconfdir}/munin/plugin-conf.d/openqa-minion
%files plugin-fedora-messaging
%{_datadir}/openqa/lib/OpenQA/WebAPI/Plugin/FedoraMessaging.pm
%files plugin-fedoraupdaterestart
%{_datadir}/openqa/lib/OpenQA/WebAPI/Plugin/FedoraUpdateRestart.pm
%files llm-server
%dir %{_datadir}/containers
%dir %{_datadir}/containers/systemd
%{_datadir}/containers/systemd/openqa-llm-server.container
%changelog
* Mon Jul 20 2026 Andrew Lukoshko <alukoshko@almalinux.org> - 5^20260604git6376095-1
- Update to openQA 5^20260604git6376095 to match Fedora
- Sync spec with Fedora: refresh Fedora messaging/update-restart plugins,
configs, and the pre-generated asset cache for the new snapshot
- Carry Fedora backports: skip tests_dependencies.t earlier and support
invent.kde.org/work_items in bug URLs
- Pairs with os-autoinst 5 (the worker no longer caps os-autoinst < 5)
- Add AlmaLinux web UI branding: navbar logo, sponsorbox, stylesheet and
bugs.almalinux.org issue-reporting, enabled by default via an openqa.ini.d
drop-in (00-almalinux-branding.ini)
* Thu Jun 18 2026 Adam Williamson <awilliam@redhat.com> - 5^20260604git6376095-3
- Fix a couple of incorrect -devel package deps
* Mon Jun 15 2026 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 5^20260604git6376095-2
- Drop call to %%sysusers_create_compat
* Fri Jun 05 2026 Adam Williamson <awilliam@redhat.com> - 5^20260604git6376095-1
- Bump to latest git, re-sync spec, backport a couple of patches
* Wed Mar 11 2026 Adam Williamson <awilliam@redhat.com> - 5^20260126git19189f0-3
- Drop shfmt from -devel dependencies (it was retired)
* Mon Jan 26 2026 Adam Williamson <awilliam@redhat.com> - 5^20260126git19189f0-1
- Update to latest upstream git
- Drop merged patches
* Fri Jan 16 2026 Fedora Release Engineering <releng@fedoraproject.org> - 5^20250711git28a0214-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_44_Mass_Rebuild
* Fri Sep 05 2025 Adam Williamson <awilliam@redhat.com> - 5^20250711git28a0214-3
- Backport PR #6719 to include failed modules in job.done messages
* Thu Jul 24 2025 Fedora Release Engineering <releng@fedoraproject.org> - 5^20250711git28a0214-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild
* Fri Jul 11 2025 Adam Williamson <awilliam@redhat.com> - 5^20250711git28a0214-1
- Update to latest upstream git (fix timestamps on overview page)
* Thu Jul 10 2025 Adam Williamson <awilliam@redhat.com> - 5^20250710git2f1c94d-1
- Update to latest upstream git
- Drop merged patch
* Wed Jul 09 2025 Adam Williamson <awilliam@redhat.com> - 5^20250709git371ad64-1
- Update to latest upstream git
- Drop merged patches
* Mon Jul 07 2025 Adam Williamson <awilliam@redhat.com> - 5^20250522git6deeb26-2
- Backport PR #6578 to fix tap worker dbus quota issue
* Thu May 22 2025 Adam Williamson <awilliam@redhat.com> - 5^20250522git6deeb26-1
- Update to latest upstream git
- Drop merged patches
- Backport new git config fixes (PR #6472)
* Fri May 16 2025 Adam Williamson <awilliam@redhat.com> - 5^20250430git10b1e43-4
- Update bundled dependency metadata
* Wed May 14 2025 Adam Williamson <awilliam@redhat.com> - 5^20250430git10b1e43-3
- Backport PR #6455 to fix --clean with YAML templates
- Update #6446 patches
- Fix group memberships harder
* Tue May 13 2025 Adam Williamson <awilliam@redhat.com> - 5^20250430git10b1e43-2
- Backport PR #6446 to fix template dump/load issues
- Fix group memberships
* Wed Apr 30 2025 Adam Williamson <awilliam@redhat.com> - 5^20250430git10b1e43-1
- Update to latest upstream git
- Backport PR #6414 to fix configuration of automatic git operations
* Thu Mar 27 2025 Adam Williamson <awilliam@redhat.com> - 4.6^20240729gitd5cf789-6
- Backport some OAuth2 fixes we need
* Wed Feb 12 2025 Adam Williamson <awilliam@redhat.com> - 4.6^20240729gitd5cf789-5
- Exclude our custom plugins from the main package
* Thu Jan 23 2025 Adam Williamson <awilliam@redhat.com> - 4.6^20240729gitd5cf789-4
- Fix an eternal loop issue in the Fedora messaging plugin
* Fri Jan 17 2025 Fedora Release Engineering <releng@fedoraproject.org> - 4.6^20240729gitd5cf789-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
* Mon Jul 29 2024 Adam Williamson <awilliam@redhat.com> - 4.6^20240729gitd5cf789-1
- Update to latest upstream git
- Backport #5797 to avoid retrying obsoleted jobs
* Thu Jul 18 2024 Fedora Release Engineering <releng@fedoraproject.org> - 4.6^20240712git52b44bf-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild
* Fri Jul 12 2024 Adam Williamson <awilliam@redhat.com> - 4.6^20240712git52b44bf-1
- Update to latest upstream git, resync spec, update licenses
* Thu Feb 08 2024 Adam Williamson <awilliam@redhat.com> - 4.6^20240208git46cfab2-1
- Update to latest upstream git, resync spec
* Thu Jan 25 2024 Fedora Release Engineering <releng@fedoraproject.org> - 4.6^20231222gitb96c049-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
* Sun Jan 21 2024 Fedora Release Engineering <releng@fedoraproject.org> - 4.6^20231222gitb96c049-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
* Tue Jan 02 2024 Adam Williamson <awilliam@redhat.com> - 4.6^20231222gitb96c049-1
- Update to recent upstream git, resync spec
* Mon Nov 27 2023 Adam Williamson <awilliam@redhat.com> - 4.6^20231125git872b397-1
- Update to recent upstream git, resync spec, drop merged patch
* Tue Oct 31 2023 Adam Williamson <awilliam@redhat.com> - 4.6^20231024gitc944acc-1
- Update to a recent upstream git snapshot, resync spec
- Backport PR #5349 to fix a test skipping problem
* Thu Oct 19 2023 Adam Williamson <awilliam@redhat.com> - 4.6^20230525git0864455-3
- Backport PR #5337 to add the gitlab fedora flatpak repo for bugrefs
* Thu Jul 20 2023 Fedora Release Engineering <releng@fedoraproject.org> - 4.6^20230525git0864455-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild
* Fri May 26 2023 Adam Williamson <awilliam@redhat.com> - 4.6^20230525git0864455-1
- Update to latest git, drop merged patch, re-sync spec
* Mon Apr 24 2023 Adam Williamson <awilliam@redhat.com> - 4.6^20230424gitf229f6d-1
- Update to latest git, re-sync spec, rebase patch
* Thu Jan 19 2023 Fedora Release Engineering <releng@fedoraproject.org> - 4.6^20221123gitb93eb7f-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild
* Mon Dec 19 2022 Adam Williamson <awilliam@redhat.com> - 4.6^20221123gitb93eb7f-3
- Backport #4498 (slightly rediffed) to solve a problem with retrying grouped tests
* Thu Dec 01 2022 Adam Williamson <awilliam@redhat.com> - 4.6^20221123gitb93eb7f-2
- FedoraMessaging: handle chunked ADVISORY_NVRS_N settings
* Thu Nov 24 2022 Adam Williamson <awilliam@redhat.com> - 4.6^20221123gitb93eb7f-1
- Update to latest git, re-sync spec, drop merged patches
* Sat Aug 27 2022 Adam Williamson <awilliam@redhat.com> - 4.6^20220615git8ea2059-3
- Backport PR #4784 to fix a worker startup bug
- Backport PR #4785 to add pagure.io and GNOME gitlab trackers
* Fri Jul 22 2022 Fedora Release Engineering <releng@fedoraproject.org> - 4.6^20220615git8ea2059-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild
* Mon Jun 20 2022 Adam Williamson <awilliam@redhat.com> - 4.6^20220615git8ea2059-1
- Update to latest git, re-sync spec
- Backport PR #4710 to fix perl 5.36 warnings on @_ use in signed subs
* Tue May 31 2022 Adam Williamson <awilliam@redhat.com> - 4.6^20220531git47fe286-1
- Update to latest git, re-sync spec
* Tue Feb 01 2022 Adam Williamson <awilliam@redhat.com> - 4.6^20220201git9267281-1
- Update to latest git
- Switch to newer caret-based snapshot versioning scheme