Import
This commit is contained in:
commit
899a7d35df
39
bin/buildwatcher
Normal file
39
bin/buildwatcher
Normal file
|
@ -0,0 +1,39 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
[ -e /etc/buildwatcher/watcher.conf ] && . /etc/buildwatcher/watcher.conf
|
||||||
|
|
||||||
|
TOP_DIR=${TOP_DIR:-/var/lib/build/}
|
||||||
|
WATCHED_DIR=$TOP_DIR/uploads
|
||||||
|
PLAGUE_SERVER=${PLAGUE_SERVER:-http://localhost:8887}
|
||||||
|
|
||||||
|
inotifywait -e moved_to -r -m --format %w%f $WATCHED_DIR | while read SRPM; do
|
||||||
|
echo "new file arrived: $SRPM"
|
||||||
|
NAME=$(rpm -qp $SRPM --qf %{NAME})
|
||||||
|
if [ -z $NAME ]; then
|
||||||
|
echo "Error, $SRPM is not a valid srpm file. Notifying the admin ($ADMIN_EMAIL)"
|
||||||
|
mv $SRPM $TOP_DIR/errors/
|
||||||
|
echo "An error occurred with file $SRPM which wasn't recognized as a valid srpm file. It's been moved to $TOP_DIR/errors/" | \
|
||||||
|
mail -s "Build sys error" $ADMIN_EMAIL
|
||||||
|
else
|
||||||
|
DIST=$(basename $(dirname $SRPM))
|
||||||
|
OWNER=$(stat --format %U $SRPM)
|
||||||
|
# Lookup in LDAP if we have an email for this user
|
||||||
|
echo "Looking up email of user $OWNER: ldapsearch -x -LLL -H $LDAP_URI -b $LDAP_USER_BASE uid=$OWNER mail"
|
||||||
|
EMAIL=$(ldapsearch -x -LLL -H $LDAP_URI -b $LDAP_USER_BASE uid=$OWNER mail | grep mail: | head -1 | awk '{print $2}')
|
||||||
|
[ -z $EMAIL ] && EMAIL=$ADMIN_EMAIL
|
||||||
|
PLAGUE_CONF=$(mktemp)
|
||||||
|
# TODO: make the plague client config file templated
|
||||||
|
cat <<_EOF > $PLAGUE_CONF
|
||||||
|
[Server]
|
||||||
|
use_ssl = no
|
||||||
|
address = $PLAGUE_SERVER
|
||||||
|
allow_uploads = yes
|
||||||
|
|
||||||
|
[User]
|
||||||
|
email = $EMAIL
|
||||||
|
_EOF
|
||||||
|
|
||||||
|
PLAGUE_CLIENT_CONFIG=$PLAGUE_CONF plague-client build $NAME $SRPM $DIST
|
||||||
|
rm -f $SRPM $PLAGUE_CONF
|
||||||
|
fi
|
||||||
|
done
|
12
bin/buildwatcher_ssh_setup
Normal file
12
bin/buildwatcher_ssh_setup
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
if [ ! -d ~/.ssh ]; then
|
||||||
|
mkdir ~/.ssh
|
||||||
|
chmod 700 ~/.ssh
|
||||||
|
ssh-keygen -t rsa -b 4096 -N "" -q -f ~/.ssh/id_rsa
|
||||||
|
ssh-keyscan localhost >> ~/.ssh/known_hosts
|
||||||
|
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
|
||||||
|
chmod 600 ~/.ssh/authorized_keys
|
||||||
|
fi
|
88
buildwatcher.spec
Normal file
88
buildwatcher.spec
Normal file
|
@ -0,0 +1,88 @@
|
||||||
|
Summary: Plague buildsystem helper
|
||||||
|
Name: buildwatcher
|
||||||
|
Version: 0.0.8
|
||||||
|
Release: 1.beta2
|
||||||
|
Source0: %{name}-%{version}.tar.gz
|
||||||
|
BuildArch: noarch
|
||||||
|
License: MIT
|
||||||
|
Group: System
|
||||||
|
|
||||||
|
Requires: openldap-clients
|
||||||
|
Requires: plague-client
|
||||||
|
Requires: plague
|
||||||
|
Requires: inotify-tools
|
||||||
|
%if 0%{?rhel} >= 7
|
||||||
|
BuildRequires: systemd
|
||||||
|
%{?systemd_requires}
|
||||||
|
%endif
|
||||||
|
|
||||||
|
%description
|
||||||
|
Provides a daemon which will watch a specified directory, and when an SRPM is moved
|
||||||
|
into this directory, it'll submit the build automatically to plague server
|
||||||
|
|
||||||
|
%prep
|
||||||
|
%setup -q
|
||||||
|
|
||||||
|
%build
|
||||||
|
|
||||||
|
%install
|
||||||
|
|
||||||
|
%{__rm} -rf $RPM_BUILD_ROOT
|
||||||
|
%{__install} -d -m 750 $RPM_BUILD_ROOT%{_bindir}
|
||||||
|
%{__install} -m 0755 bin/* $RPM_BUILD_ROOT%{_bindir}
|
||||||
|
%{__install} -d $RPM_BUILD_ROOT%{_sysconfdir}/%{name}
|
||||||
|
%{__install} -d $RPM_BUILD_ROOT%{_unitdir}
|
||||||
|
%{__install} -d $RPM_BUILD_ROOT%{_localstatedir}/lib/build/uploads
|
||||||
|
%{__install} -d $RPM_BUILD_ROOT%{_localstatedir}/lib/build/errors
|
||||||
|
%{__install} -d $RPM_BUILD_ROOT%{_localstatedir}/lib/build/work/srpm_upload_dir/
|
||||||
|
%{__install} -m 0644 conf/* $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/
|
||||||
|
%{__install} -m 0644 systemd/buildwatcher.service $RPM_BUILD_ROOT%{_unitdir}
|
||||||
|
|
||||||
|
%clean
|
||||||
|
%{__rm} -rf $RPM_BUILD_ROOT
|
||||||
|
|
||||||
|
%pre
|
||||||
|
# Add the "zabbix" user
|
||||||
|
/usr/sbin/useradd -c "Build watcher user" \
|
||||||
|
-s /sbin/nologin -r -d %{_localstatedir}/lib/build/home buildwatcher 2> /dev/null || :
|
||||||
|
|
||||||
|
%preun
|
||||||
|
%systemd_preun buildwatcher.service
|
||||||
|
|
||||||
|
%post
|
||||||
|
|
||||||
|
%systemd_post buildwatcher.service
|
||||||
|
|
||||||
|
%files
|
||||||
|
%defattr(-,root,root,-)
|
||||||
|
%{_bindir}/*
|
||||||
|
%{_localstatedir}/lib/build/uploads
|
||||||
|
%{_localstatedir}/lib/build/errors
|
||||||
|
%attr(0775,root,buildwatcher) %{_localstatedir}/lib/build/work/srpm_upload_dir/
|
||||||
|
%config(noreplace) %attr(0644,root,root) %{_sysconfdir}/%{name}/*
|
||||||
|
%{_unitdir}/*.service
|
||||||
|
|
||||||
|
%changelog
|
||||||
|
* Sat Nov 11 2017 Daniel Berteaud <daniel@firewall-services.com> 0.0.8-1.beta2
|
||||||
|
- FIx binary path in service unit (daniel@firewall-services.com)
|
||||||
|
|
||||||
|
* Sat Nov 11 2017 Daniel Berteaud <daniel@firewall-services.com> 0.0.7-1.beta2
|
||||||
|
- Add systemd BuildRequires
|
||||||
|
|
||||||
|
* Sat Nov 11 2017 Daniel Berteaud <daniel@firewall-services.com> 0.0.6-1.beta2
|
||||||
|
- Install systemd unit
|
||||||
|
|
||||||
|
* Sat Nov 11 2017 Daniel Berteaud <daniel@firewall-services.com> 0.0.5-1.beta2
|
||||||
|
- Requires ldap clients not servers
|
||||||
|
|
||||||
|
* Sat Nov 11 2017 Daniel Berteaud <daniel@firewall-services.com> 0.0.4-1.beta2
|
||||||
|
- Add simple systemd unit (daniel@firewall-services.com)
|
||||||
|
|
||||||
|
* Thu Nov 09 2017 Daniel Berteaud <daniel@firewall-services.com> 0.0.3-1.beta2
|
||||||
|
- Fix %files
|
||||||
|
|
||||||
|
* Sat Nov 04 2017 Daniel Berteaud <daniel@firewall-services.com> 0.0.2-1.beta1
|
||||||
|
- new package built with tito
|
||||||
|
|
||||||
|
* Sat Nov 4 2017 Daniel Berteaud <daniel@firewall-services.com> - 0.0.1-1
|
||||||
|
- Initial release
|
5
conf/watcher.conf
Normal file
5
conf/watcher.conf
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
TOP_DIR=/var/lib/build
|
||||||
|
LDAP_URI=ldap://directory.domain.com/
|
||||||
|
LDAP_USER_BASE=ou=Users,dc=domain,dc=com
|
||||||
|
ADMIN_EMAIL=admin@domain.com
|
||||||
|
PLAGUE_SERVER=http://localhost:8887
|
11
systemd/buildwatcher.service
Normal file
11
systemd/buildwatcher.service
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
[Unit]
|
||||||
|
Description=Monitor an upload dir and submit content to plague buildsys
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Type=simple
|
||||||
|
ExecStart=/usr/bin/buildwatcher
|
||||||
|
ExecStartPre=/usr/bin/buildwatcher_ssh_setup
|
||||||
|
User=buildwatcher
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
Loading…
Reference in New Issue
Block a user