Packaging release and pkglistgen services (slsa-build-service)

This commit is contained in:
Gustavo Yokoyama Ribeiro 2023-12-04 09:19:02 -03:00
parent b0c4abff68
commit 33d56465c9
5 changed files with 73 additions and 0 deletions

View File

@ -10,6 +10,9 @@ VERSION = "build-$(shell date +%F)"
all: all:
build:
%sysusers_generate_pre config/sysusers $(package_name) $(package_name).conf
install: install:
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 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
for i in $(pkgdata_SCRIPTS); do install -m 755 $$i $(DESTDIR)$(pkgdatadir); done for i in $(pkgdata_SCRIPTS); do install -m 755 $$i $(DESTDIR)$(pkgdatadir); done
@ -24,6 +27,8 @@ install:
ln -s $(pkgdatadir)/metrics/access/aggregate.php $(DESTDIR)$(bindir)/osrt-metrics-access-aggregate ln -s $(pkgdatadir)/metrics/access/aggregate.php $(DESTDIR)$(bindir)/osrt-metrics-access-aggregate
ln -s $(pkgdatadir)/metrics/access/ingest.php $(DESTDIR)$(bindir)/osrt-metrics-access-ingest ln -s $(pkgdatadir)/metrics/access/ingest.php $(DESTDIR)$(bindir)/osrt-metrics-access-ingest
cp -R config/* $(DESTDIR)$(sysconfdir)/$(package_name) cp -R config/* $(DESTDIR)$(sysconfdir)/$(package_name)
install -Dpm0644 config/logrotate $(DESTDIR)$(sysconfdir)/logrotate.d/$(package_name)
install -Dpm0644 config/$(package_name).conf $(DESTDIR)$(sysusersdir)/$(package_name).conf
for dir in dashboards datasources ; do ln -s $(pkgdatadir)/metrics/grafana/provisioning/$$dir.yaml \ for dir in dashboards datasources ; do ln -s $(pkgdatadir)/metrics/grafana/provisioning/$$dir.yaml \
$(DESTDIR)$(grafana_provisioning_dir)/$$dir/$(package_name).yaml ; done $(DESTDIR)$(grafana_provisioning_dir)/$$dir/$(package_name).yaml ; done
sed -i "s|OSRT_DATA_DIR|$(pkgdatadir)|" \ sed -i "s|OSRT_DATA_DIR|$(pkgdatadir)|" \

View File

@ -11,3 +11,4 @@ apachevhostsdir=$(sysconfdir)/apache2/vhosts.d
tmpfilesdir=$(prefix)/lib/tmpfiles.d tmpfilesdir=$(prefix)/lib/tmpfiles.d
logdir=/var/log logdir=/var/log
varlibdir=/var/lib varlibdir=/var/lib
sysusersdir=$(prefixi)/lib/sysusers.d

10
config/logrotate Normal file
View File

@ -0,0 +1,10 @@
/var/log/openSUSE-release-tools/*/*.log {
compress
dateext
maxage 365
rotate 99
size=+4096k
missingok
notifempty
delaycompress
}

2
config/sysusers Normal file
View File

@ -0,0 +1,2 @@
# Type Name ID GECOS [HOME]
u osrt-slsa - "User for openSUSE SLSA release tool" /var/lib/osrt-slsa

View File

@ -19,6 +19,7 @@
%global __provides_exclude ^perl.* %global __provides_exclude ^perl.*
%define source_dir openSUSE-release-tools %define source_dir openSUSE-release-tools
%define announcer_filename factory-package-news %define announcer_filename factory-package-news
%define services osrt-slsa.target osrt-relpkggen@.timer osrt-relpkggen@.service osrt-pkglistgen@.timer osrt-pkglistgen@.service
Name: openSUSE-release-tools Name: openSUSE-release-tools
Version: 0 Version: 0
Release: 0 Release: 0
@ -49,6 +50,9 @@ BuildRequires: apache2-devel
BuildRequires: rsyslog BuildRequires: rsyslog
BuildRequires: systemd-rpm-macros BuildRequires: systemd-rpm-macros
BuildRequires: sysuser-shadow
BuildRequires: sysuser-tools
Requires: python3-PyYAML Requires: python3-PyYAML
Requires: python3-cmdln Requires: python3-cmdln
Requires: python3-colorama Requires: python3-colorama
@ -242,6 +246,19 @@ BuildArch: noarch
Generates package lists based on 000package-groups and puts them Generates package lists based on 000package-groups and puts them
in 000product, resp 000release-packages in 000product, resp 000release-packages
%package slsa-build-service
Summary: Build service
Group: Development/Tools/Other
# TODO Update requirements, but for now base deps.
Requires: %{name} = %{version}
Requires: openSUSE-release-tools-pkglistgen
%sysusers_requires
Recommends: logrotate
BuildArch: noarch
%description slsa-build-service
Service to run repo-checker and pkglistgen.
%package -n osclib %package -n osclib
Summary: Supplemental osc libraries Summary: Supplemental osc libraries
Group: Development/Tools/Other Group: Development/Tools/Other
@ -309,6 +326,9 @@ OSC plugin for the staging workflow, see `osc staging --help`.
oscplugindir="%{osc_plugin_dir}" \ oscplugindir="%{osc_plugin_dir}" \
VERSION="%{version}" VERSION="%{version}"
%pre -f %{name}.pre
%service_add_pre %{name}.service
%pre announcer %pre announcer
getent passwd osrt-announcer > /dev/null || \ getent passwd osrt-announcer > /dev/null || \
useradd -r -m -s /sbin/nologin -c "user for openSUSE-release-tools-announcer" osrt-announcer useradd -r -m -s /sbin/nologin -c "user for openSUSE-release-tools-announcer" osrt-announcer
@ -351,6 +371,18 @@ getent passwd osrt-repo-checker > /dev/null || \
useradd -r -m -s /sbin/nologin -c "user for openSUSE-release-tools-repo-checker" osrt-repo-checker useradd -r -m -s /sbin/nologin -c "user for openSUSE-release-tools-repo-checker" osrt-repo-checker
exit 0 exit 0
%pre slsa-build-service
%service_add_pre %{services}
%post slsa-build-service
%service_add_post %{services}
%preun slsa-build-service
%service_del_preun %{services}
%postun slsa-build-service
%service_del_postun_with_restart %{services}
%pre staging-bot %pre staging-bot
getent passwd osrt-staging-bot > /dev/null || \ getent passwd osrt-staging-bot > /dev/null || \
useradd -r -m -s /sbin/nologin -c "user for openSUSE-release-tools-staging-bot" osrt-staging-bot useradd -r -m -s /sbin/nologin -c "user for openSUSE-release-tools-staging-bot" osrt-staging-bot
@ -400,6 +432,9 @@ exit 0
%exclude %{_datadir}/%{source_dir}/osc-staging.py %exclude %{_datadir}/%{source_dir}/osc-staging.py
%exclude %{_datadir}/%{source_dir}/publish_distro %exclude %{_datadir}/%{source_dir}/publish_distro
%exclude %{_datadir}/%{source_dir}/findfileconflicts %exclude %{_datadir}/%{source_dir}/findfileconflicts
%exclude %{_datadir}/%{source_dir}/generate-release-packages
%exclude %{_datadir}/%{source_dir}/verify-build-and-generatelists
%exclude %{_datadir}/%{source_dir}/verify-repo-built-successful.py
%exclude %{_datadir}/%{source_dir}/write_repo_susetags_file.pl %exclude %{_datadir}/%{source_dir}/write_repo_susetags_file.pl
%dir %{_sysconfdir}/openSUSE-release-tools %dir %{_sysconfdir}/openSUSE-release-tools
@ -427,6 +462,26 @@ exit 0
%{_unitdir}/osrt-docker-publisher.service %{_unitdir}/osrt-docker-publisher.service
%{_unitdir}/osrt-docker-publisher.timer %{_unitdir}/osrt-docker-publisher.timer
%files slsa-build-service
%{_bindir}/osrt-generate-release-packages
%{_bindir}/osrt-verify-build-and-generatelists
%{_datadir}/%{source_dir}/generate-release-packages
%{_datadir}/%{source_dir}/verify-build-and-generatelists
%{_datadir}/%{source_dir}/verify-repo-built-successful.py
%{_sysconfdir}/openSUSE-release-tools/ibsapi
%{_sysusersdir}/%{name}.conf
%{_unitdir}/osrt-pkglistgen@.service
%{_unitdir}/osrt-pkglistgen@.timer
%{_unitdir}/osrt-relpkggen@.service
%{_unitdir}/osrt-relpkggen@.timer
%{_unitdir}/osrt-slsa.target
%config(noreplace) %attr(0640,osrt-slsa,osrt-slsa) %{_sysconfdir}/openSUSE-release-tools/oscrc
%config(noreplace) %{_sysconfdir}/logrotate.d/%{name}
%dir %attr(755,osrt-slsa,osrt-slsa) %{_localstatedir}/log/openSUSE-release-tools/
%dir %attr(750,osrt-slsa,osrt-slsa) %{_sharedstatedir}/osrt-slsa
%dir %attr(750,osrt-slsa,osrt-slsa) %{_sharedstatedir}/osrt-slsa/pkglistgen
%dir %attr(750,osrt-slsa,osrt-slsa) %{_sharedstatedir}/osrt-slsa/relpkggen
%files maintenance %files maintenance
%{_bindir}/osrt-check_maintenance_incidents %{_bindir}/osrt-check_maintenance_incidents
%{_datadir}/%{source_dir}/check_maintenance_incidents.py %{_datadir}/%{source_dir}/check_maintenance_incidents.py