243 lines
8.8 KiB
RPMSpec
243 lines
8.8 KiB
RPMSpec
# Generated by go2rpm 1.19.0
|
|
%bcond check 1
|
|
|
|
%global dockerd dockerd
|
|
%global rootless rootless
|
|
%global shim docker-group-shim
|
|
%global rootless_dockerd %{dockerd}-%{rootless}
|
|
%global rootless_dockerd_service %{dockerd}-%{rootless}-user.service
|
|
%global debug_package %{nil}
|
|
|
|
%global golicenses LICENSE
|
|
%global godocs examples README.md
|
|
%global goipath gitea.com/gitea/runner
|
|
|
|
%global common_description %{expand:
|
|
Official runner for Gitea.
|
|
}
|
|
|
|
%global major 1
|
|
%global minor 0
|
|
%global revision 4
|
|
%global tag v%{version}
|
|
Version: %{major}.%{minor}.%{revision}
|
|
%gometa -L -f
|
|
|
|
Name: gitea-runner
|
|
Release: %autorelease
|
|
Summary: A runner for Gitea
|
|
|
|
%global rootless_user %{name}-%{rootless}
|
|
%global runner_service %{name}.service
|
|
%global rootless_runner_service %{rootless_user}.service
|
|
%global obsolete_user act-runner
|
|
%global obsolete_name gitea-%{obsolete_user}
|
|
%global obsolete_user_rootless %{obsolete_user}-%{rootless}
|
|
|
|
# Generated by go-vendor-tools
|
|
License: Apache-2.0 AND BSD-2-Clause AND BSD-3-Clause AND ISC AND MIT AND MPL-2.0
|
|
URL: %{gourl}
|
|
Source: %{gosource}
|
|
Source: vendor.tar.bz2
|
|
Source: go-vendor-tools.toml
|
|
Source: %{runner_service}
|
|
Source: %{rootless_runner_service}
|
|
Source: %{rootless_dockerd_service}
|
|
Source: README-%{dockerd}.md
|
|
Source: README-%{rootless}-%{dockerd}.md
|
|
Source: register-rootless.sh
|
|
Source: %{name}-sysusers.conf
|
|
Source: register.sh
|
|
Source: %{name}-sysusers-%{dockerd}.conf
|
|
Source: sources
|
|
|
|
BuildRequires: go >= 1.26 git-core sed systemd-rpm-macros go-rpm-macros go-vendor-tools demus-packaging
|
|
Obsoletes: %{obsolete_name} < 1.0.0
|
|
Provides: %{obsolete_name} = %{version}
|
|
|
|
%description
|
|
%{common_description}
|
|
|
|
# #############################################################
|
|
|
|
|
|
# #############################################################
|
|
# gitea-runner with dockerd package
|
|
%package %{dockerd}
|
|
Summary: Enable running gitea actions in docker containers
|
|
Requires: %{name}
|
|
Requires: ( moby-engine or docker-ce )
|
|
Requires(pre): glibc-common shadow-utils
|
|
Conflicts: %{name}-%{rootless_dockerd} %{obsolete_name}-%{rootless_dockerd}
|
|
Obsoletes: %{obsolete_name}-%{dockerd} < 1.0.0
|
|
Provides: %{obsolete_name}-%{dockerd} = %{version}
|
|
%{?systemd_requires}
|
|
%{?systemd_ordering}
|
|
|
|
%description %{dockerd}
|
|
%{common_description}
|
|
Run gitea actions in docker containers
|
|
|
|
%pre %{dockerd}
|
|
# Check if we are replacing the %{obsolete_name} package
|
|
if [ $1 -eq 1 ]; then
|
|
getent group %{obsolete_user} >/dev/null || groupmod -n %{name} %{obsolete_user} || :
|
|
getent passwd %{obsolete_user} >/dev/null || usermod -l %{name} -m -d %{_sharedstatedir}/%{name} %{obsolete_user} || :
|
|
fi
|
|
%sysusers_create_package %{name} %{S:9}
|
|
%sysusers_create_package %{name} %{S:11}
|
|
|
|
%post %{dockerd}
|
|
%verify_source_checksum
|
|
%systemd_post %{runner_service}
|
|
if [ $1 -eq 1 ] || [ ! -d %{_sharedstatedir}/%{name}/runner ]; then
|
|
echo ' INFO Please read README-%{dockerd}.md to finish the installation'
|
|
fi
|
|
|
|
%preun %{dockerd}
|
|
%systemd_preun %{runner_service}
|
|
|
|
%postun %{dockerd}
|
|
%systemd_postun %{runner_service}
|
|
%systemd_postun_with_restart %{runner_service}
|
|
|
|
# #############################################################
|
|
|
|
|
|
# #############################################################
|
|
# docker-ce docker group dependency provider shim package
|
|
%package %{shim}
|
|
Summary: Provide the group(docker) requirement when using non-rootless docker-ce
|
|
|
|
Provides: group(docker)
|
|
Requires: docker-ce
|
|
|
|
%description %{shim}
|
|
The %{name}-%{dockerd} package uses sysusers.d to manage users and group
|
|
memberships. The user needs to be a member of the docker groupm that is
|
|
created by docker-ce or moby-engine. Moby engine provides a group(docker),
|
|
but docker-ce doesn't, so this shim provides that requirement to enable
|
|
using the Gitea runner with the non-rootless docker-ce.
|
|
|
|
# #############################################################
|
|
# gitea-runner with rootless dockerd package
|
|
%package %{rootless_dockerd}
|
|
Summary: Enable running gitea actions in non-root docker containers
|
|
|
|
Requires: %{name} iptables sed coreutils
|
|
Requires: ( moby-engine-rootless-extras or docker-ce-rootless-extras )
|
|
Requires(pre): glibc-common shadow-utils
|
|
Conflicts: %{name}-%{dockerd} %{obsolete_name}-%{dockerd}
|
|
Obsoletes: %{obsolete_name}-%{rootless_dockerd} < 1.0.0
|
|
Provides: %{obsolete_name}-%{rootless_dockerd} = %{version}
|
|
%{?systemd_requires}
|
|
%{?systemd_ordering}
|
|
|
|
%description %{rootless_dockerd}
|
|
%{common_description}
|
|
Run gitea actions in non-root docker containers
|
|
|
|
%pre %{rootless_dockerd}
|
|
# sysusers.d doesn't handle either home directory creation or subuid/subgid configuration
|
|
if [ $1 -eq 1 ]; then
|
|
# Modify the existing user and group if we are upgrade obsoleting the package with the old naming
|
|
if getent passwd %{obsolete_user_rootless} >/dev/null; then
|
|
loginctl disable-linger %{obsolete_user_rootless} &
|
|
systemctl --user -M %{obsolete_user_rootless}@ disable --now --no-warn %{rootless_dockerd_service} %{obsolete_name}-%{rootless}.service &
|
|
loginctl terminate-user %{obsolete_user_rootless} &
|
|
wait
|
|
getent group %{obsolete_user_rootless} >/dev/null && groupmod -n %{rootless_user} %{obsolete_user_rootless} || :
|
|
getent passwd %{obsolete_user_rootless} >/dev/null && usermod -l %{rootless_user} -m -d /home/%{rootless_user} %{obsolete_user_rootless} || :
|
|
%{__mv} /home/%{rootless_user}/act_runner /home/%{rootless_user}/runner >/dev/null
|
|
fi
|
|
getent group '%{rootless_user}' >/dev/null || groupadd -r '%{rootless_user}' || :
|
|
getent passwd '%{rootless_user}' >/dev/null || \
|
|
CREATE_MAIL_SPOOL=false useradd -r -m -F -g '%{rootless_user}' -s '/sbin/nologin' -c 'Rootless Gitea runner docker user' '%{rootless_user}' || :
|
|
fi
|
|
|
|
%post %{rootless_dockerd}
|
|
%systemd_user_post %{rootless_runner_service} %{rootless_dockerd_service}
|
|
loginctl enable-linger %{rootless_user}
|
|
|
|
%preun %{rootless_dockerd}
|
|
if [ $1 -eq 0 ]; then
|
|
loginctl disable-linger %{rootless_user}
|
|
fi
|
|
%systemd_user_preun %{rootless_dockerd_service} %{rootless_runner_service}
|
|
|
|
%postun %{rootless_dockerd}
|
|
%systemd_user_postun %{rootless_dockerd_service} %{rootless_runner_service}
|
|
%systemd_user_postun_with_restart %{rootless_dockerd_service} %{rootless_runner_service}
|
|
|
|
# #############################################################
|
|
|
|
|
|
%prep
|
|
|
|
%goprep -p1 -A
|
|
%{__tar} -xf %{S:1}
|
|
%generate_buildrequires
|
|
%go_vendor_license_buildrequires -c %{S:2}
|
|
%{__cp} %{S:6} %{S:7} .
|
|
|
|
%build
|
|
%global gomodulesmode GO111MODULE=on
|
|
%gobuild -o %{gobuilddir}/bin/%{name} %{goipath}
|
|
|
|
%check
|
|
%go_vendor_license_check -c %{S:2}
|
|
|
|
%install
|
|
%go_vendor_license_install -c %{S:2}
|
|
# The binary
|
|
%{__install} -m 0755 -d %{buildroot}%{_bindir}
|
|
%{__install} -m 0755 -p %{gobuilddir}/bin/%{name} %{buildroot}%{_bindir}/
|
|
|
|
# dockerd
|
|
%{__install} -m 0755 -d %{buildroot}%{_unitdir}
|
|
%{__install} -m 0755 -d %{buildroot}%{_sysconfdir}/%{name}
|
|
%{__install} -m 0700 -d %{buildroot}%{_sharedstatedir}/%{name}
|
|
%{__install} -D -m 0644 -p %{S:3} %{buildroot}%{_unitdir}/%{runner_service}
|
|
%{__install} -D -m 0644 %{S:9} %{buildroot}%{_sysusersdir}/%{name}.conf
|
|
%{__install} -D -m 0644 %{S:11} %{buildroot}%{_sysusersdir}/%{name}-%{dockerd}.conf
|
|
bin/%{name} generate-config | \
|
|
sed -e '/^ A_TEST_ENV/d' -e '/^ - "ubuntu-/d' -e 's:file\: .runner:file\: %{_sharedstatedir}/%{name}/.runner:' -e 's/level: info/level: debug/' \
|
|
> %{buildroot}%{_sysconfdir}/%{name}/config.yaml
|
|
%{__install} -D -m 0755 -p %{S:10} %{buildroot}%{_datadir}/%{name}/register.sh
|
|
|
|
# dockerd-rootless
|
|
%{__install} -m 0755 -d %{buildroot}%{_userunitdir}
|
|
%{__install} -m 0755 -d %{buildroot}%{_datadir}/%{name}
|
|
%{__install} -D -m 0644 -p %{S:4} %{buildroot}%{_userunitdir}/%{rootless_runner_service}
|
|
%{__install} -D -m 0644 -p %{S:5} %{buildroot}%{_userunitdir}/%{rootless_dockerd_service}
|
|
%{__install} -D -m 0755 -p %{S:8} %{buildroot}%{_datadir}/%{name}/register-rootless.sh
|
|
|
|
%files -f %{go_vendor_license_filelist}
|
|
%doc examples README.md
|
|
%{_bindir}/%{name}
|
|
%dir %{_datadir}/%{name}
|
|
|
|
%files %{dockerd}
|
|
%license LICENSE
|
|
%doc README-%{dockerd}.md
|
|
%dir %{_sysconfdir}/%{name}
|
|
%config(noreplace) %{_sysconfdir}/%{name}/config.yaml
|
|
%attr(0700, %{name}, %{name}) %dir %{_sharedstatedir}/%{name}
|
|
%ghost %config(noreplace) %{_sharedstatedir}/%{name}/.runner
|
|
%{_unitdir}/%{runner_service}
|
|
%{_sysusersdir}/%{name}.conf
|
|
%{_sysusersdir}/%{name}-%{dockerd}.conf
|
|
%{_datadir}/%{name}/register.sh
|
|
|
|
%files %{rootless_dockerd}
|
|
%license LICENSE
|
|
%doc README-%{rootless}-%{dockerd}.md
|
|
%{_userunitdir}/%{rootless_runner_service}
|
|
%{_userunitdir}/%{rootless_dockerd_service}
|
|
%{_datadir}/%{name}/register-rootless.sh
|
|
|
|
%files %{shim}
|
|
|
|
%changelog
|
|
%autochangelog
|