Import
This commit is contained in:
commit
899a7d35df
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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