Split sysusers.conf to only require group(docker) when using dockerd

This commit is contained in:
2026-05-28 01:06:55 +02:00
parent 8debc0552b
commit 726212a931
9 changed files with 35 additions and 34 deletions
+2
View File
@@ -23,3 +23,5 @@ go.work
.idea/
RPMS/
+1 -1
View File
@@ -78,4 +78,4 @@ act_runner -c /etc/gitea-act-runner/config.yaml daemon # run with config file
You can read the latest version of the configuration file online at [config.example.yaml](internal/pkg/config/config.example.yaml).
https://gitea.com/gitea/act_runner
https://gitea.com/gitea/act_runner
+1 -1
View File
@@ -9,7 +9,7 @@ You have to start and register the docker instance with Gitea:
```bash
systemctl -M act-runner-rootless@ --user enable --now dockerd-rootless-user
sudo -u act-runner-rootless /usr/share/gitea-act-runner/rootless-act_runner-register.sh
/usr/share/gitea-act-runner/rootless-act_runner-register.sh
systemctl -M act-runner-rootless@ --user enable --now gitea-act-runner-rootless
```
+2
View File
@@ -0,0 +1,2 @@
#Type Name ID GECOS Home directory Shell
m act-runner docker
+2 -3
View File
@@ -1,3 +1,2 @@
#Type Name ID GECOS Home directory Shell
u act-runner - "act_runner user" /var/lib/act-runner -
m act-runner docker
#Type Name ID GECOS Home directory Shell
u! act-runner - "act_runner user" /var/lib/act-runner -
+2 -1
View File
@@ -1 +1,2 @@
d /var/lib/act-runner 0700 act-runner act-runner -
#Type Path Mode User Group
d /var/lib/act-runner 0700 act-runner act-runner
+1
View File
@@ -8,6 +8,7 @@ User=act-runner
ExecStart=/usr/bin/act_runner daemon -c /etc/gitea-act-runner/config.yaml
ExecReload=/bin/kill -s HUP $MAINPID
WorkingDirectory=~
Environment=DOCKER_HOST=unix:///run/docker.sock
Type=exec
TimeoutStartSec=30
TimeoutStopSec=120
+21 -26
View File
@@ -2,7 +2,7 @@
%global rootless rootless
%global dockerd_rootless %{dockerd}-%{rootless}
%global dockerd_rootless_service %{dockerd}-%{rootless}-user.service
%global act_runner_bin act_runner
%global runner_bin act_runner
%global runner_user act-runner
%global runner_user_rootless %{runner_user}-%{rootless}
%global debug_package %{nil}
@@ -36,12 +36,10 @@ Source4: README-%{dockerd}.md
Source5: README-%{rootless}-%{dockerd}.md
Source6: rootless-act_runner-register.sh
Source7: %{name}-sysusers.conf
Source8: %{name}-tmpfiles.conf
Source9: act_runner-register.sh
Source8: act_runner-register.sh
Source9: %{name}-sysusers-%{dockerd}.conf
BuildRequires: go >= 1.26
BuildRequires: go-rpm-macros
BuildRequires: git-core
BuildRequires: go >= 1.26 go-rpm-macros git-core sed systemd-rpm-macros
%gometa -L -f
@@ -51,9 +49,9 @@ BuildRequires: git-core
# act_runner with dockerd package
%package %{dockerd}
Summary: Enable running gitea actions in docker containers
Requires: %{name} docker-ce
Requires: %{name}
Requires: ( moby-engine or docker-ce )
Conflicts: %{name}-%{dockerd_rootless}
BuildRequires: systemd-rpm-macros
%{?%systemd_requires}
%description %{dockerd}
@@ -62,7 +60,7 @@ Run gitea actions in docker containers
%pre %{dockerd}
%sysusers_create_package %{name} %{SOURCE7}
%tmpfiles_create_package %{name} %{SOURCE8}
%sysusers_create_package %{name} %{SOURCE9}
%post %{dockerd}
%systemd_post %{act_runner_service}
@@ -84,9 +82,9 @@ fi
%package %{dockerd_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
Requires: %{name} iptables
Requires: ( docker-ce-rootless-extras or moby-rootless-extras ) shadow-utils
Conflicts: %{name}-%{dockerd}
BuildRequires: systemd-rpm-macros
%{?%systemd_requires}
%description %{dockerd_rootless}
@@ -94,30 +92,25 @@ BuildRequires: systemd-rpm-macros
Run gitea actions in non-root docker containers
%pre %{dockerd_rootless}
# sysusers.d doesn't handle either home directory creation or subuid/subgid configuration
if [ $1 -eq 1 ]; then
getent group '%{runner_user_rootless}' >/dev/null || groupadd -r '%{runner_user_rootless}' || :
getent passwd '%{runner_user_rootless}' >/dev/null || \
CREATE_MAIL_SPOOL=false useradd -r -m -F -g '%{runner_user_rootless}' -d '/home/%{runner_user_rootless}' -s '/sbin/nologin' -c 'Rootless act_runner docker user' '%{runner_user_rootless}' || :
CREATE_MAIL_SPOOL=false useradd -r -m -F -g '%{runner_user_rootless}' -s '/sbin/nologin' -c 'Rootless act_runner docker user' '%{runner_user_rootless}' || :
fi
%post %{dockerd_rootless}
%systemd_user_post %{act_runner_rootless_service} %{dockerd_rootless_service}
if [ $1 -eq 1 ] || [ ! -d /home/%{runner_user_rootless}/act_runner ]; then
echo ' INFO Please read README-%{rootless}-%{dockerd}.md to finish the installation'
fi
loginctl enable-linger %{runner_user_rootless}
%preun %{dockerd_rootless}
%systemd_user_preun %{dockerd_rootless_service} %{act_runner_rootless_service}
if [ $1 -eq 0 ]; then
loginctl disable-linger %{runner_user_rootless}
fi
%systemd_user_preun %{dockerd_rootless_service} %{act_runner_rootless_service}
%postun %{dockerd_rootless}
%systemd_user_postun %{dockerd_rootless_service} %{act_runner_rootless_service}
if [ $1 -eq 0 ]; then
CREATE_MAIL_SPOOL=false userdel -rf %{runner_user_rootless}
fi
# #############################################################
@@ -127,7 +120,7 @@ fi
%{__cp} %{SOURCE4} %{SOURCE5} .
%build
go build %{gobuild_baseflags} -o bin/%{act_runner_bin} %{goipath}
go build %{gobuild_baseflags} -o bin/%{runner_bin} %{goipath}
%install
# The binary
@@ -138,10 +131,10 @@ install -m 0755 -vp bin/* %{buildroot}%{_bindir}
install -m 0755 -vd %{buildroot}%{_unitdir}
install -m 0755 -vd %{buildroot}%{_sysconfdir}/%{name}
install -D -m 0644 -vp %{SOURCE1} %{buildroot}%{_unitdir}/%{act_runner_service}
install -D %{SOURCE7} %{buildroot}%{_sysusersdir}/%{name}.conf
install -D %{SOURCE8} %{buildroot}%{_tmpfilesdir}/%{name}.conf
install -D -m 0644 %{SOURCE7} %{buildroot}%{_sysusersdir}/%{name}.conf
install -D -m 0644 %{SOURCE9} %{buildroot}%{_sysusersdir}/%{name}-%{dockerd}.conf
bin/act_runner generate-config > %{buildroot}%{_sysconfdir}/%{name}/config.yaml
install -D -m 0755 -vp %{SOURCE9} %{buildroot}%{_datadir}/%{name}/act_runner-register.sh
install -D -m 0755 -vp %{SOURCE8} %{buildroot}%{_datadir}/%{name}/act_runner-register.sh
# dockerd-rootless
install -m 0755 -vd %{buildroot}%{_userunitdir}
@@ -153,23 +146,25 @@ install -D -m 0755 -vp %{SOURCE6} %{buildroot}%{_datadir}/%{name}/rootless-act_r
%files
%license LICENSE
%doc README.md
%{_bindir}/*
%{_bindir}/%{runner_bin}
%dir %{_datadir}/%{name}
%files %{dockerd}
%license LICENSE
%doc README-%{dockerd}.md
%dir %{_sysconfdir}/%{name}
%config %{_sysconfdir}/%{name}/config.yaml
%config(noreplace) %{_sysconfdir}/%{name}/config.yaml
%{_unitdir}/*
%{_sysusersdir}/%{name}.conf
%{_sysusersdir}/%{name}-%{dockerd}.conf
%{_tmpfilesdir}/%{name}.conf
%{_datadir}/%{name}/act_runner-register.sh
%files %{dockerd_rootless}
%license LICENSE
%doc README-%{rootless}-%{dockerd}.md
%{_userunitdir}/*
%{_userunitdir}/%{act_runner_rootless_service}
%{_userunitdir}/%{dockerd_rootless_service}
%{_datadir}/%{name}/rootless-act_runner-register.sh
%changelog
+3 -2
View File
@@ -1,7 +1,8 @@
#!/bin/bash
mkdir -p -m 0750 ~/act_runner
cd ~/act_runner
mkdir -p -m 0750 ~act-runner-rootless/act_runner
cd ~act-runner-rootless/act_runner
act_runner register
act_runner generate-config > config.yaml
chmod 0640 config.yaml
chown -R act-runner-rootless:act-runner-rootless ~act-runner-rootless/act_runner