Add dockerd subpackage

This commit is contained in:
2025-01-22 15:59:09 +01:00
parent 7bce917679
commit 3b2e3ec6cd
13 changed files with 260 additions and 39 deletions
+92 -33
View File
@@ -1,7 +1,9 @@
%global common_description %{expand:
A runner for Gitea based on act.}
%global rootless_docker_user docker-rootless
%global dockerd_package dockerd
%global rootless rootless
%global dockerd_package_rootless dockerd-%{rootless}
%global act_runner_bin act_runner
%global debug_package %{nil}
@@ -18,67 +20,124 @@ License: MIT
URL: https://gitea.com/gitea/act_runner
Source0: https://gitea.com/gitea/act_runner/archive/v%{version}.tar.gz
Source1: %{name}.service
Source2: %{rootless_docker_user}.service
Source3: %{rootless_docker_user}-sysusers.conf
Source4: %{rootless_docker_user}-tmpfiles.conf
Source2: %{name}-sysusers.conf
Source3: %{name}-tmpfiles.conf
Source4: %{name}-%{rootless}.service
Source5: %{name}-%{dockerd_package_rootless}.service
Source6: %{name}-%{rootless}-sysusers.conf
Source7: %{name}-%{rootless}-tmpfiles.conf
Source8: README-%{dockerd_package}.md
Source9: README-%{rootless}-%{dockerd_package}.md
BuildRequires: go >= 1.22
BuildRequires: go-rpm-macros
BuildRequires: git-core
BuildRequires: systemd-rpm-macros
BuildRequires: go >= 1.22
BuildRequires: go-rpm-macros
BuildRequires: git-core
%gometa -L -f
%description %{common_description}
%package %{rootless_docker_user}
Summary: Run gitea actions in non-root docker containers
Requires: gitea-act-runner docker-ce slirp4netns fuse-overlayfs iptables docker-ce-rootless-extras
Requires(post): shadow-utils shadow-utils-subid systemd-tmpfiles systemd-sysusers
Requires(preun): shadow-utils shadow-utils-subid systemd-tmpfiles systemd-sysusers
# act_runner with dockerd package
%package %{dockerd_package}
Summary: Enable running gitea actions in docker containers
Requires: %{name} docker-ce
Conflicts: %{name}-%{dockerd_package_rootless}
BuildRequires: systemd-rpm-macros
%{?sysusers_requires_compat}
%description %{rootless_docker_user}
%description %{dockerd_package}
%{common_description}
Run gitea actions in docker containers
%pre %{dockerd_package}
%sysusers_create_compat %{name} %{SOURCE2}
%post %{dockerd_package}
%systemd_post %{name}.service
%preun %{dockerd_package}
%systemd_preun %{name}.service
# act_runner with rootless dockerd package
%package %{dockerd_package_rootless}
Summary: Enable running gitea actions in non-root docker containers
Requires: %{name} docker-ce slirp4netns fuse-overlayfs iptables docker-ce-rootless-extras shadow-utils
Conflicts: %{name}-%{dockerd_package}
BuildRequires: systemd-rpm-macros
%{?sysusers_requires_compat}
%description %{dockerd_package_rootless}
%{common_description}
Run gitea actions in non-root docker containers
%pre %{rootless_docker_user}
%sysusers_create_package %{name} %{SOURCE3}
%tmpfiles_create_package %{name} %{SOURCE4}
%pre %{dockerd_package_rootless}
%sysusers_create_compat %{name} %{SOURCE6}
%dnl %tmpfiles_create_package %{name} %{SOURCE4}
%post %{rootless_docker_user}
%systemd_user_post %{rootless_docker_user}.service %{name}.service
loginctl enable-linger %{rootless_docker_user}
cd ~%{rootless_docker_user}/act_runner
%{act_runner_bin} register
%{act_runner_bin} generate-config > config
%post %{dockerd_package_rootless}
%systemd_user_post %{name}.service
# if ! grep -q "^$USERNAME_ESCAPED:\|^$(id -u):" /etc/subuid 2> /dev/null; then
# # Add subuid entry for ${USERNAME}
# echo "${USERNAME}:100000:65536" >> /etc/subuid
# fi
# if ! grep -q "^$USERNAME_ESCAPED:\|^$(id -u):" /etc/subgid 2> /dev/null; then
# # Add subgid entry for ${USERNAME}
# echo "${USERNAME}:100000:65536" >> /etc/subgid
# fi
loginctl enable-linger %{dockerd_package_rootless}
echo Please read README.rootless-docker.md to finish the installation
%preun %{rootless_docker_user}
%systemd_user_preun %{rootless_docker_user}.service %{name}.service
%preun %{dockerd_package_rootless}
loginctl disable-linger %{dockerd_package_rootless}
%systemd_user_preun %{dockerd_package_rootless}.service %{name}.service
%prep
%setup -q -n act_runner
%{__cp} %{SOURCE8} %{SOURCE9} .
%build
go build %{gobuild_baseflags} -o bin/%{act_runner_bin} %{goipath}
%install
install -m 0755 -vd %{buildroot}%{_bindir}
install -m 0755 -vp bin/* %{buildroot}%{_bindir}/
install -m 0755 -vd %{buildroot}%{_userunitdir}/
install -m 0644 -vp %{SOURCE1} %{SOURCE2} %{buildroot}%{_userunitdir}/
install -D %{SOURCE3} %{buildroot}%{_sysusersdir}/%{rootless_docker_user}.conf
install -D %{SOURCE4} %{buildroot}%{_tmpfilesdir}/%{rootless_docker_user}.conf
install -m 0755 -vd %{buildroot}%{_unitdir}
install -m 0755 -vd %{buildroot}%{_userunitdir}
install -m 0755 -vd %{buildroot}%{_docdir}/%{name}
# The binary
install -m 0755 -vp bin/* %{buildroot}%{_bindir}
# dockerd
install -m 0644 -vp %{SOURCE1} %{buildroot}%{_unitdir}
install -D -m 0644 %{SOURCE2} %{buildroot}%{_sysusersdir}/%{name}.conf
%dnl install -D -m 0644 %{SOURCE3} %{buildroot}%{_tmpfilesdir}/%{name}.conf
# Rootless dockerd
install -D -m 0644 -vp %{SOURCE4} %{buildroot}%{_userunitdir}/%{name}.conf
install -D -m 0644 -vp %{SOURCE5} %{buildroot}%{_userunitdir}/%{name}-%{dockerd_package}.conf
install -D -m 0644 %{SOURCE6} %{buildroot}%{_sysusersdir}/%{name}-%{rootless}.conf
%dnl install -D -m 0644 %{SOURCE7} %{buildroot}%{_tmpfilesdir}/%{name}.conf
%files
%license LICENSE
%doc README.md
%{_bindir}/*
%files %{rootless_docker_user}
%files %{dockerd_package}
%license LICENSE
%doc README-%{dockerd_package}.md
%{_unitdir}/*
%{_sysusersdir}/%{name}.conf
%files %{dockerd_package_rootless}
%license LICENSE
%doc README-%{rootless}-%{dockerd_package}.md
%{_userunitdir}/*
%{_sysusersdir}/%{rootless_docker_user}.conf
%{_tmpfilesdir}/%{rootless_docker_user}.conf
%{_sysusersdir}/%{name}-%{rootless}.conf
%dnl %{_tmpfilesdir}/%{name}.conf
%changelog
%autochangelog