Skip to content

Commit 62b4e21

Browse files
committed
Subpackage, service, timer for build-fail-reminder
This adds a build-fail-reminder subpackage, shipping the script along with a service user and unit files for daily execution via systemd, making for easier management and deployment in the openSUSE infrastructure. Signed-off-by: Georg Pfuetzenreuter <mail@georg-pfuetzenreuter.net>
1 parent d299924 commit 62b4e21

5 files changed

Lines changed: 98 additions & 2 deletions

File tree

Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ VERSION = "build-$(shell date +%F)"
1111
all:
1212

1313
install:
14-
install -d -m 755 $(DESTDIR)$(bindir) $(DESTDIR)$(pkgdatadir) $(DESTDIR)$(unitdir) $(DESTDIR)$(oscplugindir) $(DESTDIR)$(sysconfdir)/$(package_name) $(DESTDIR)$(grafana_provisioning_dir)/dashboards $(DESTDIR)$(grafana_provisioning_dir)/datasources $(DESTDIR)$(logdir)/$(package_name) $(DESTDIR)$(varlibdir)/osrt-slsa/pkglistgen $(DESTDIR)$(varlibdir)/osrt-slsa/relpkggen
14+
install -d -m 755 $(DESTDIR)$(bindir) $(DESTDIR)$(pkgdatadir) $(DESTDIR)$(unitdir) $(DESTDIR)$(oscplugindir) $(DESTDIR)$(sysconfdir)/$(package_name) $(DESTDIR)$(grafana_provisioning_dir)/dashboards $(DESTDIR)$(grafana_provisioning_dir)/datasources $(DESTDIR)$(logdir)/$(package_name) $(DESTDIR)$(sysconfdir)/$(package_name)/build-fail-reminder $(DESTDIR)$(varlibdir)/osrt-build-fail-reminder $(DESTDIR)$(varlibdir)/osrt-slsa/pkglistgen $(DESTDIR)$(varlibdir)/osrt-slsa/relpkggen
1515
for i in $(pkgdata_SCRIPTS); do install -m 755 $$i $(DESTDIR)$(pkgdatadir); done
1616
chmod 644 $(DESTDIR)$(pkgdatadir)/osc-*.py
1717
for i in $(pkgdata_DATA); do cp -a $$i $(DESTDIR)$(pkgdatadir); done
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
u osrt-build-fail-reminder - 'User for the openSUSE build fail reminder service' /var/lib/osrt-build-fail-reminder

dist/package/openSUSE-release-tools.spec

Lines changed: 34 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,16 @@ BuildArch: noarch
9595
%description announcer
9696
OBS product release announcer for generating email diffs summaries.
9797

98+
%package build-fail-reminder
99+
Summary: OBS build fail reminder service
100+
Group: Development/Tools/Other
101+
BuildArch: noarch
102+
Requires: osclib = %{version}
103+
Requires: python3-lxml
104+
105+
%description build-fail-reminder
106+
Daily email reminders for failed builds in OBS.
107+
98108
%package check-source
99109
Summary: Check source review bot
100110
Group: Development/Tools/Other
@@ -319,6 +329,7 @@ OSC plugin for the staging workflow, see `osc staging --help`.
319329
%build
320330
%make_build
321331
%sysusers_generate_pre slsa/osrt-slsa-user.conf %{name} %{name}.conf
332+
%sysusers_generate_pre build-fail-reminder/osrt-build-fail-reminder-user.conf build-fail-reminder osrt-build-fail-reminder.conf
322333

323334
%install
324335
%make_install \
@@ -327,6 +338,7 @@ OSC plugin for the staging workflow, see `osc staging --help`.
327338
VERSION="%{version}"
328339

329340
install -Dpm0644 slsa/osrt-slsa-user.conf %{buildroot}%{_sysusersdir}/%{name}.conf
341+
install -pm0644 build-fail-reminder/osrt-build-fail-reminder-user.conf %{buildroot}%{_sysusersdir}/osrt-build-fail-reminder.conf
330342

331343
%pre -f %{name}.pre
332344
%service_add_pre %{name}.service
@@ -341,6 +353,18 @@ getent passwd osrt-check-source > /dev/null || \
341353
useradd -r -m -s /sbin/nologin -c "user for openSUSE-release-tools-check-source" osrt-check-source
342354
exit 0
343355

356+
%pre -f build-fail-reminder.pre build-fail-reminder
357+
%service_add_pre osrt-build-fail-reminder.timer
358+
359+
%post build-fail-reminder
360+
%service_add_post osrt-build-fail-reminder.timer
361+
362+
%preun build-fail-reminder
363+
%service_del_preun osrt-build-fail-reminder.timer
364+
365+
%postun build-fail-reminder
366+
%service_del_postun_with_restart osrt-build-fail-reminder.timer
367+
344368
%pre docker-publisher
345369
getent passwd osrt-docker-publisher > /dev/null || \
346370
useradd -r -m -s /sbin/nologin -c "user for openSUSE-release-tools-docker-publisher" osrt-docker-publisher
@@ -394,7 +418,6 @@ exit 0
394418
%doc README.md
395419
%{_bindir}/osrt-biarchtool
396420
%{_bindir}/osrt-bugowner
397-
%{_bindir}/osrt-build-fail-reminder
398421
%{_bindir}/osrt-checknewer
399422
%{_bindir}/osrt-check_bugowner
400423
%{_bindir}/osrt-check_tags_in_requests
@@ -411,6 +434,7 @@ exit 0
411434
%{_datadir}/%{source_dir}
412435
%exclude %{_datadir}/%{source_dir}/abichecker
413436
%exclude %{_datadir}/%{source_dir}/%{announcer_filename}
437+
%exclude %{_datadir}/%{source_dir}/build-fail-reminder.py
414438
%exclude %{_datadir}/%{source_dir}/check_maintenance_incidents.py
415439
%exclude %{_datadir}/%{source_dir}/check_source.py
416440
%exclude %{_datadir}/%{source_dir}/devel-project.py
@@ -453,6 +477,15 @@ exit 0
453477
%config(noreplace) %{_sysconfdir}/openSUSE-release-tools/announcer
454478
%config(noreplace) %{_sysconfdir}/rsyslog.d/%{announcer_filename}.conf
455479

480+
%files build-fail-reminder
481+
%{_bindir}/osrt-build-fail-reminder
482+
%{_datadir}/%{source_dir}/build-fail-reminder.py
483+
%{_sysusersdir}/osrt-build-fail-reminder.conf
484+
%{_unitdir}/osrt-build-fail-reminder.service
485+
%{_unitdir}/osrt-build-fail-reminder.timer
486+
%dir %attr(0700,osrt-build-fail-reminder,osrt-build-fail-reminder) %{_sysconfdir}/%{name}/build-fail-reminder
487+
%dir %attr(0750,osrt-build-fail-reminder,osrt-build-fail-reminder) %{_sharedstatedir}/osrt-build-fail-reminder
488+
456489
%files check-source
457490
%{_bindir}/osrt-check_source
458491
%{_datadir}/%{source_dir}/check_source.py
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
[Unit]
2+
Description=openSUSE Release Tools: OBS Build Fail Reminder
3+
4+
ConditionFileIsExecutable=/usr/bin/osrt-build-fail-reminder
5+
ConditionFileNotEmpty=/etc/openSUSE-release-tools/build-fail-reminder/oscrc
6+
7+
[Service]
8+
User=%N
9+
Group=%N
10+
11+
ConfigurationDirectory=openSUSE-release-tools/build-fail-reminder
12+
ConfigurationDirectoryMode=0700
13+
StateDirectory=osrt-build-fail-reminder
14+
StateDirectoryMode=0750
15+
16+
Environment=BFR_SENDER='DimStar / Dominique Leuenberger <dimstar@opensuse.org>'
17+
Environment=BFR_PROJECT=openSUSE:Factory
18+
Environment=BFR_RELAY=ipv6-localhost
19+
20+
Environment=OSC_CONFIG=/etc/openSUSE-release-tools/build-fail-reminder/oscrc
21+
22+
ExecStart=/usr/bin/osrt-build-fail-reminder --sender=${BFR_SENDER} --project=${BFR_PROJECT} --relay=${BFR_RELAY} --json=${STATE_DIRECTORY}/reminded.json "$BFR_EXTRA"
23+
24+
SyslogIdentifier=build-fail-reminder
25+
26+
AmbientCapabilities=
27+
CapabilityBoundingSet=
28+
KeyringMode=private
29+
LockPersonality=yes
30+
MemoryDenyWriteExecute=yes
31+
MountFlags=private
32+
NoNewPrivileges=yes
33+
PrivateDevices=yes
34+
PrivateTmp=yes
35+
PrivateUsers=yes
36+
ProtectClock=yes
37+
ProtectControlGroups=yes
38+
ProtectHome=yes
39+
ProtectHostname=yes
40+
ProtectKernelLogs=yes
41+
ProtectKernelModules=yes
42+
ProtectKernelTunables=yes
43+
ProtectSystem=strict
44+
RemoveIPC=yes
45+
RestrictAddressFamilies=AF_INET6
46+
RestrictNamespaces=yes
47+
RestrictRealtime=yes
48+
RestrictSUIDSGID=yes
49+
SystemCallArchitectures=native
50+
51+
UMask=0027
52+
53+
# access to database, - to allow creation if one does not already exist
54+
ReadWritePaths=-/var/lib/osrt-build-fail-reminder/reminded.json
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
[Unit]
2+
Description=openSUSE Release Tools: OBS Build Fail Reminder Scheduler
3+
4+
[Timer]
5+
OnCalendar=daily
6+
7+
[Install]
8+
WantedBy=timers.target

0 commit comments

Comments
 (0)