Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package openQA for openSUSE:Factory checked in at 2025-09-29 16:31:55 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/openQA (Old) and /work/SRC/openSUSE:Factory/.openQA.new.11973 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "openQA" Mon Sep 29 16:31:55 2025 rev:758 rq:1307437 version:5.1758910696.7549bb98 Changes: -------- --- /work/SRC/openSUSE:Factory/openQA/openQA.changes 2025-09-26 22:25:30.740513963 +0200 +++ /work/SRC/openSUSE:Factory/.openQA.new.11973/openQA.changes 2025-09-29 16:33:39.814029035 +0200 @@ -1,0 +2,11 @@ +Fri Sep 26 21:12:56 UTC 2025 - [email protected] + +- Update to version 5.1758910696.7549bb98: + * Replace argument assignment with signatures on ObsRsync/Task + * Enable automatic dependabot updates again after improvements + * docs: Add instructions for a continuous dashboard setup + * Replace argument assignment with signatures Folders package + * Fully cover WebAPI::Plugin::ObsRsync::Controller::Folders + * script: Also use OPENQA_WEBUI_MODE for related services + +------------------------------------------------------------------- Old: ---- openQA-5.1758814503.03d923a4.obscpio New: ---- openQA-5.1758910696.7549bb98.obscpio ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ openQA-client-test.spec ++++++ --- /var/tmp/diff_new_pack.2JbGnP/_old 2025-09-29 16:33:40.746068093 +0200 +++ /var/tmp/diff_new_pack.2JbGnP/_new 2025-09-29 16:33:40.750068261 +0200 @@ -18,7 +18,7 @@ %define short_name openQA-client Name: %{short_name}-test -Version: 5.1758814503.03d923a4 +Version: 5.1758910696.7549bb98 Release: 0 Summary: Test package for %{short_name} License: GPL-2.0-or-later ++++++ openQA-devel-test.spec ++++++ --- /var/tmp/diff_new_pack.2JbGnP/_old 2025-09-29 16:33:40.786069770 +0200 +++ /var/tmp/diff_new_pack.2JbGnP/_new 2025-09-29 16:33:40.790069937 +0200 @@ -18,7 +18,7 @@ %define short_name openQA-devel Name: %{short_name}-test -Version: 5.1758814503.03d923a4 +Version: 5.1758910696.7549bb98 Release: 0 Summary: Test package for %{short_name} License: GPL-2.0-or-later ++++++ openQA-test.spec ++++++ --- /var/tmp/diff_new_pack.2JbGnP/_old 2025-09-29 16:33:40.834071782 +0200 +++ /var/tmp/diff_new_pack.2JbGnP/_new 2025-09-29 16:33:40.834071782 +0200 @@ -18,7 +18,7 @@ %define short_name openQA Name: %{short_name}-test -Version: 5.1758814503.03d923a4 +Version: 5.1758910696.7549bb98 Release: 0 Summary: Test package for openQA License: GPL-2.0-or-later ++++++ openQA-worker-test.spec ++++++ --- /var/tmp/diff_new_pack.2JbGnP/_old 2025-09-29 16:33:40.874073457 +0200 +++ /var/tmp/diff_new_pack.2JbGnP/_new 2025-09-29 16:33:40.874073457 +0200 @@ -18,7 +18,7 @@ %define short_name openQA-worker Name: %{short_name}-test -Version: 5.1758814503.03d923a4 +Version: 5.1758910696.7549bb98 Release: 0 Summary: Test package for %{short_name} License: GPL-2.0-or-later ++++++ openQA.spec ++++++ --- /var/tmp/diff_new_pack.2JbGnP/_old 2025-09-29 16:33:40.910074966 +0200 +++ /var/tmp/diff_new_pack.2JbGnP/_new 2025-09-29 16:33:40.910074966 +0200 @@ -99,7 +99,7 @@ %define devel_requires %devel_no_selenium_requires chromedriver Name: openQA -Version: 5.1758814503.03d923a4 +Version: 5.1758910696.7549bb98 Release: 0 Summary: The openQA web-frontend, scheduler and tools License: GPL-2.0-or-later ++++++ openQA-5.1758814503.03d923a4.obscpio -> openQA-5.1758910696.7549bb98.obscpio ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openQA-5.1758814503.03d923a4/.mergify.yml new/openQA-5.1758910696.7549bb98/.mergify.yml --- old/openQA-5.1758814503.03d923a4/.mergify.yml 2025-09-25 17:35:03.000000000 +0200 +++ new/openQA-5.1758910696.7549bb98/.mergify.yml 2025-09-26 20:18:16.000000000 +0200 @@ -19,7 +19,7 @@ - "#check-failure=0" - "#check-pending=0" - linear-history - - and: &manual_review + - and: - "#approved-reviews-by>=2" - "#changes-requested-reviews-by=0" # https://doc.mergify.io/examples.html#require-all-requested-reviews-to-be-approved @@ -52,7 +52,6 @@ - base=main - author=dependabot[bot] - label=waited - - and: *manual_review # temporary measure due to ongoing supply chain attacks actions: merge: method: squash diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openQA-5.1758814503.03d923a4/docs/UsersGuide.asciidoc new/openQA-5.1758910696.7549bb98/docs/UsersGuide.asciidoc --- old/openQA-5.1758814503.03d923a4/docs/UsersGuide.asciidoc 2025-09-25 17:35:03.000000000 +0200 +++ new/openQA-5.1758910696.7549bb98/docs/UsersGuide.asciidoc 2025-09-26 20:18:16.000000000 +0200 @@ -580,6 +580,50 @@ There is an optional parameter 'show_build=1' that will prefix the status with the build number. +=== Build a continuous openQA monitoring dashboard + +With just some common tools a dashboard showing the openQA index page with +continuously updated results can be setup. Example setup using the +`fullscreen=1` parameter to use the entire page for the build results: + +Content of /home/tux/.xinitrc + +[source,sh] +---- +#!/bin/bash + +unclutter & +openbox & +xset s off +xset -dpms +sleep 5 +url="https://openqa.opensuse.org?group=openSUSE Tumbleweed\$|openSUSE Leap [0-9]{2}.?[0-9]*\$|openSUSE Leap.\*JeOS\$|openSUSE Krypton|openQA|GNOME Next&limit_builds=2&time_limit_days=14&&show_tags=1&fullscreen=1#build-results" +chromium --kiosk "$url" & + +while sleep 300 ; do + xdotool windowactivate $(xdotool search --class Chromium) + xdotool key F5 + xdotool windowactivate $(xdotool getactivewindow) +done +---- + +Content of /usr/share/lightdm/lightdm.conf.d/50-suse-defaults.conf + +[source,ini] +---- +[Seat:*] +pam-service = lightdm +pam-autologin-service = lightdm-autologin +pam-greeter-service = lightdm-greeter +xserver-command=/usr/bin/X +session-wrapper=/etc/X11/xdm/Xsession +greeter-setup-script=/etc/X11/xdm/Xsetup +session-setup-script=/etc/X11/xdm/Xstartup +session-cleanup-script=/etc/X11/xdm/Xreset +autologin-user=tux +autologin-timeout=0 +---- + [id="carry-over"] === Carry over of bug references from previous jobs in same scenario diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openQA-5.1758814503.03d923a4/lib/OpenQA/WebAPI/Plugin/ObsRsync/Controller/Folders.pm new/openQA-5.1758910696.7549bb98/lib/OpenQA/WebAPI/Plugin/ObsRsync/Controller/Folders.pm --- old/openQA-5.1758814503.03d923a4/lib/OpenQA/WebAPI/Plugin/ObsRsync/Controller/Folders.pm 2025-09-25 17:35:03.000000000 +0200 +++ new/openQA-5.1758910696.7549bb98/lib/OpenQA/WebAPI/Plugin/ObsRsync/Controller/Folders.pm 2025-09-26 20:18:16.000000000 +0200 @@ -2,14 +2,13 @@ # SPDX-License-Identifier: GPL-2.0-or-later package OpenQA::WebAPI::Plugin::ObsRsync::Controller::Folders; -use Mojo::Base 'Mojolicious::Controller'; +use Mojo::Base 'Mojolicious::Controller', -signatures; use Mojo::File; use POSIX 'strftime'; my $non_project_folders = '^(t|profiles|script|xml)$'; -sub list { - my $self = shift; +sub list ($self) { my $helper = $self->obs_rsync; my $folders = Mojo::File->new($helper->home)->list({dir => 1})->grep(sub { -d $_ })->map('basename')->to_array; my @res; @@ -26,8 +25,7 @@ return $self->render(json => \@res, status => 200); } -sub index { - my ($self, $obs_project, $folders) = @_; +sub index ($self, $obs_project = undef, $folders = undef) { my $helper = $self->obs_rsync; my %folder_info_by_name; if (!$folders) { @@ -85,8 +83,7 @@ $self->render('ObsRsync_index', folder_info_by_name => \%folder_info_by_name, project => $obs_project); } -sub folder { - my $self = shift; +sub folder ($self) { my $alias = $self->param('alias'); my $helper = $self->obs_rsync; return undef if $helper->check_and_render_error($alias); @@ -113,8 +110,7 @@ openqa_sh => $files->grep(qr/print_openqa\.sh/)->join()); } -sub runs { - my $self = shift; +sub runs ($self) { my $alias = $self->param('alias'); my $helper = $self->obs_rsync; return undef if $helper->check_and_render_error($alias); @@ -126,8 +122,7 @@ $self->render('ObsRsync_logs', alias => $alias, full => $full->to_string, subfolders => $files); } -sub run { - my $self = shift; +sub run ($self) { my $alias = $self->param('alias'); my $subfolder = $self->param('subfolder'); my $helper = $self->obs_rsync; @@ -145,8 +140,7 @@ ); } -sub download_file { - my $self = shift; +sub download_file ($self) { my $alias = $self->param('alias'); my $subfolder = $self->param('subfolder'); my $filename = $self->param('filename'); @@ -159,8 +153,7 @@ $self->reply->file($full->child($filename)); } -sub get_run_last { - my $self = shift; +sub get_run_last ($self) { my $alias = $self->param('alias'); my $helper = $self->obs_rsync; return undef if $helper->check_and_render_error($alias); @@ -172,8 +165,7 @@ return $self->render(json => {message => $run_last}, status => 200); } -sub forget_run_last { - my $self = shift; +sub forget_run_last ($self) { my $alias = $self->param('alias'); my $helper = $self->obs_rsync; return undef if $helper->check_and_render_error($alias); @@ -186,14 +178,11 @@ my $project_lock = Mojo::File->new($helper->home, $project, 'rsync.lock'); -f $project_lock and return $self->render(json => {message => 'Project lock exists'}, status => 423); - if (unlink($dest)) { - return $self->render(json => {message => 'success'}, status => 200); - } - return $self->render(json => {message => "error $!"}, status => 500); + unlink($dest) or return $self->render(json => {message => "error $!"}, status => 500); + return $self->render(json => {message => 'success'}, status => 200); } -sub test_result { - my $self = shift; +sub test_result ($self) { my $alias = $self->param('alias'); my $helper = $self->obs_rsync; return undef if $helper->check_and_render_error($alias); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openQA-5.1758814503.03d923a4/lib/OpenQA/WebAPI/Plugin/ObsRsync/Task.pm new/openQA-5.1758910696.7549bb98/lib/OpenQA/WebAPI/Plugin/ObsRsync/Task.pm --- old/openQA-5.1758814503.03d923a4/lib/OpenQA/WebAPI/Plugin/ObsRsync/Task.pm 2025-09-25 17:35:03.000000000 +0200 +++ new/openQA-5.1758910696.7549bb98/lib/OpenQA/WebAPI/Plugin/ObsRsync/Task.pm 2025-09-26 20:18:16.000000000 +0200 @@ -2,20 +2,18 @@ # SPDX-License-Identifier: GPL-2.0-or-later package OpenQA::WebAPI::Plugin::ObsRsync::Task; -use Mojo::Base 'Mojolicious::Plugin'; +use Mojo::Base 'Mojolicious::Plugin', -signatures; use Mojo::File; use IPC::Run; use Feature::Compat::Try; -sub register { - my ($self, $app) = @_; +sub register ($self, $app, $conf) { $app->minion->add_task(obs_rsync_run => \&run); $app->minion->add_task(obs_rsync_update_dirty_status => \&update_dirty_status); $app->minion->add_task(obs_rsync_update_builds_text => \&update_obs_builds_text); } -sub _retry_or_finish { - my ($job, $helper, $project, $retry_interval, $retry_max_count) = @_; +sub _retry_or_finish ($job, $helper, $project = undef, $retry_interval = undef, $retry_max_count = undef) { $retry_interval ||= $helper->retry_interval; $retry_max_count ||= $helper->retry_max_count; @@ -34,9 +32,7 @@ # a retry but is otherwise not concerned with any details (such as invoking rsync or creating openQA jobs). # Jobs of this task are enqueued by the "/obs_rsync/#project/runs" route (POST request) which can be triggered via the # "Sync now" button on the web UI (e.g. on a page like "/admin/obs_rsync/openSUSE:Factory:Staging:C"). -sub run { - my ($job, $args) = @_; - +sub run ($job, $args) { my $app = $job->app; my $project = $args->{project}; my $helper = $app->obs_rsync; @@ -79,9 +75,7 @@ return $job->finish({code => $exit_code, message => $error}); } -sub update_dirty_status { - my ($job, $args) = @_; - +sub update_dirty_status ($job, $args) { my $app = $job->app; my $project = $args->{project}; my $helper = $app->obs_rsync; @@ -89,9 +83,7 @@ return $job->finish(0); } -sub update_obs_builds_text { - my ($job, $args) = @_; - +sub update_obs_builds_text ($job, $args) { my $app = $job->app; my $alias = $args->{alias}; my $helper = $app->obs_rsync; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openQA-5.1758814503.03d923a4/script/openqa-gru new/openQA-5.1758910696.7549bb98/script/openqa-gru --- old/openQA-5.1758814503.03d923a4/script/openqa-gru 2025-09-25 17:35:03.000000000 +0200 +++ new/openQA-5.1758910696.7549bb98/script/openqa-gru 2025-09-26 20:18:16.000000000 +0200 @@ -1,3 +1,4 @@ #!/bin/sh -e [ "$1" = "-h" ] || [ "$1" = "--help" ] && echo "Start openQA GRU service" && exit -exec "$(dirname "$0")"/openqa gru -m production run --reset-locks --jobs 4 --spare 2 --spare-min-priority 10 "$@" +OPENQA_WEBUI_MODE=${OPENQA_WEBUI_MODE:-"production"} +exec "$(dirname "$0")"/openqa gru -m "$OPENQA_WEBUI_MODE" run --reset-locks --jobs 4 --spare 2 --spare-min-priority 10 "$@" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openQA-5.1758814503.03d923a4/script/openqa-livehandler-daemon new/openQA-5.1758910696.7549bb98/script/openqa-livehandler-daemon --- old/openQA-5.1758814503.03d923a4/script/openqa-livehandler-daemon 2025-09-25 17:35:03.000000000 +0200 +++ new/openQA-5.1758910696.7549bb98/script/openqa-livehandler-daemon 2025-09-26 20:18:16.000000000 +0200 @@ -1,3 +1,4 @@ #!/bin/sh -e +OPENQA_WEBUI_MODE=${OPENQA_WEBUI_MODE:-"production"} # Our API commands are very expensive, so the default timeouts are too tight -exec "$(dirname "$0")"/openqa-livehandler daemon -m production --proxy -i 100 "$@" +exec "$(dirname "$0")"/openqa-livehandler daemon -m "$OPENQA_WEBUI_MODE" --proxy -i 100 "$@" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openQA-5.1758814503.03d923a4/script/openqa-scheduler-daemon new/openQA-5.1758910696.7549bb98/script/openqa-scheduler-daemon --- old/openQA-5.1758814503.03d923a4/script/openqa-scheduler-daemon 2025-09-25 17:35:03.000000000 +0200 +++ new/openQA-5.1758910696.7549bb98/script/openqa-scheduler-daemon 2025-09-26 20:18:16.000000000 +0200 @@ -1,2 +1,3 @@ #!/bin/sh -e -exec "$(dirname "$0")"/openqa-scheduler daemon -m production "$@" +OPENQA_WEBUI_MODE=${OPENQA_WEBUI_MODE:-"production"} +exec "$(dirname "$0")"/openqa-scheduler daemon -m "$OPENQA_WEBUI_MODE" "$@" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openQA-5.1758814503.03d923a4/script/openqa-websockets-daemon new/openQA-5.1758910696.7549bb98/script/openqa-websockets-daemon --- old/openQA-5.1758814503.03d923a4/script/openqa-websockets-daemon 2025-09-25 17:35:03.000000000 +0200 +++ new/openQA-5.1758910696.7549bb98/script/openqa-websockets-daemon 2025-09-26 20:18:16.000000000 +0200 @@ -1,2 +1,3 @@ #!/bin/sh -e -exec "$(dirname "$0")"/openqa-websockets daemon -m production "$@" +OPENQA_WEBUI_MODE=${OPENQA_WEBUI_MODE:-"production"} +exec "$(dirname "$0")"/openqa-websockets daemon -m "$OPENQA_WEBUI_MODE" "$@" ++++++ openQA.obsinfo ++++++ --- /var/tmp/diff_new_pack.2JbGnP/_old 2025-09-29 16:34:01.830951840 +0200 +++ /var/tmp/diff_new_pack.2JbGnP/_new 2025-09-29 16:34:01.834952009 +0200 @@ -1,5 +1,5 @@ name: openQA -version: 5.1758814503.03d923a4 -mtime: 1758814503 -commit: 03d923a4d26c56beca03bfc720974e9ea6ea978c +version: 5.1758910696.7549bb98 +mtime: 1758910696 +commit: 7549bb983f1ce008c0d2755112b15a4e98e067b6
