From 8a404e2015d9f9cb562dea7ed6e8d9a7e52ae56f Mon Sep 17 00:00:00 2001 From: "Ralf S. Engelschall" Date: Fri, 15 Nov 2019 23:26:51 +0100 Subject: [PATCH] new package --- drone-runner-exec/drone-runner-exec.sh | 12 +++ drone-runner-exec/drone-runner-exec.spec | 126 +++++++++++++++++++++++ drone-runner-exec/rc.drone-runner-exec | 68 ++++++++++++ 3 files changed, 206 insertions(+) create mode 100644 drone-runner-exec/drone-runner-exec.sh create mode 100644 drone-runner-exec/drone-runner-exec.spec create mode 100644 drone-runner-exec/rc.drone-runner-exec diff --git a/drone-runner-exec/drone-runner-exec.sh b/drone-runner-exec/drone-runner-exec.sh new file mode 100644 index 0000000000..a15fbb3b0b --- /dev/null +++ b/drone-runner-exec/drone-runner-exec.sh @@ -0,0 +1,12 @@ +## +## drone-runner-exec.sh -- drone-runner-exec(8) configuration +## + +GODEBUG=netdns=go +DRONE_DEBUG=true + +DRONE_RPC_PROTO=http +DRONE_RPC_HOST=127.0.0.1:9000 +DRONE_RPC_SECRET=the-server-secret +DRONE_LOG_FILE=@l_prefix@/var/drone-runner-exec/log/drone-runner-exec.log + diff --git a/drone-runner-exec/drone-runner-exec.spec b/drone-runner-exec/drone-runner-exec.spec new file mode 100644 index 0000000000..5370e2ed63 --- /dev/null +++ b/drone-runner-exec/drone-runner-exec.spec @@ -0,0 +1,126 @@ +## +## drone-runner-exec.spec -- OpenPKG RPM Package Specification +## Copyright (c) 2000-2019 OpenPKG Project +## +## Permission to use, copy, modify, and distribute this software for +## any purpose with or without fee is hereby granted, provided that +## the above copyright notice and this permission notice appear in all +## copies. +## +## THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED +## WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +## MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +## IN NO EVENT SHALL THE AUTHORS AND COPYRIGHT HOLDERS AND THEIR +## CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF +## USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +## ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +## OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT +## OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +## SUCH DAMAGE. +## + +# package version +%define V_opkg 1.0.0b8 +%define V_release 1.0.0-beta.8 +%define V_dist 20191115 + +# package information +Name: drone-runner-exec +Summary: Continuous Integration (CI) Service: Controller Server +URL: https://drone.io/ +Vendor: Drone.IO Inc. +Packager: OpenPKG Project +Distribution: OpenPKG Community +Class: EVAL +Group: Web +License: Apache +Version: %{V_opkg}.%{V_dist} +Release: 20191115 + +# list of sources +Source0: http://download.openpkg.org/components/versioned/drone/drone-runner-exec-%{V_dist}.tar.xz +Source1: rc.drone-runner-exec +Source2: drone-runner-exec.sh + +# build information +BuildPreReq: OpenPKG, openpkg >= 20160101, go +PreReq: OpenPKG, openpkg >= 20160101 + +%description + Drone is a Continuous Delivery system built on Docker container + technology. Drone uses a simple YAML configuration file, a superset + of docker-compose(1), to define and execute Pipelines inside Docker + containers. This is the Controller component. + +%track + prog drone-runner-exec:release = { + version = %{V_release} + url = https://github.com/drone-runners/drone-runner-exec/releases + regex = v(__VER__)\.tar\.gz + } + prog drone-runner-exec:snapshot = { + version = %{V_dist} + url = http://download.openpkg.org/components/versioned/drone/ + regex = drone-runner-exec-(__VER__)\.tar\.xz + } + +%prep + %setup -q -n drone-runner-exec + +%build + # build program + export GOPATH=`pwd` + go build -v -o drone-runner-exec github.com/drone-runners/drone-runner-exec/ + +%install + # create installation hierarchy + %{l_shtool} mkdir -f -p -m 755 \ + $RPM_BUILD_ROOT%{l_prefix}/sbin \ + $RPM_BUILD_ROOT%{l_prefix}/etc/rc.d \ + $RPM_BUILD_ROOT%{l_prefix}/etc/drone-runner-exec \ + $RPM_BUILD_ROOT%{l_prefix}/var/drone-runner-exec/log \ + $RPM_BUILD_ROOT%{l_prefix}/var/drone-runner-exec/run + + # install program + %{l_shtool} install -c -s -m 755 \ + drone-runner-exec $RPM_BUILD_ROOT%{l_prefix}/sbin/ + + # install default configuration + %{l_shtool} install -c -m 644 %{l_value -s -a} \ + %{SOURCE drone-runner-exec.sh} $RPM_BUILD_ROOT%{l_prefix}/etc/drone-runner-exec/ + + # install run-command script + %{l_shtool} install -c -m 755 %{l_value -s -a} \ + %{SOURCE rc.drone-runner-exec} $RPM_BUILD_ROOT%{l_prefix}/etc/rc.d/ + + # determine installation files + %{l_rpmtool} files -v -ofiles -r$RPM_BUILD_ROOT \ + %{l_files_std} \ + '%config %attr(-,%{l_rusr},%{l_rgrp}) %{l_prefix}/etc/drone-runner-exec' \ + '%config %attr(-,%{l_rusr},%{l_rgrp}) %{l_prefix}/etc/drone-runner-exec/*' \ + '%attr(-,%{l_rusr},%{l_rgrp}) %{l_prefix}/var/drone-runner-exec/*' \ + '%attr(-,%{l_rusr},%{l_rgrp}) %{l_prefix}/var/drone-runner-exec/*/*' + +%files -f files + +%clean + +%post + if [ $1 -eq 2 ]; then + # after upgrade, restart service + eval `%{l_rc} drone-runner-exec status 2>/dev/null` + [ ".$drone_server_active" = .yes ] && %{l_rc} drone-runner-exec restart + fi + exit 0 + +%preun + if [ $1 -eq 0 ]; then + # before erase, stop service and remove log files + %{l_rc} drone-runner-exec stop 2>/dev/null + rm -rf $RPM_INSTALL_PREFIX/var/drone-runner-exec/log/* >/dev/null 2>&1 || true + rm -rf $RPM_INSTALL_PREFIX/var/drone-runner-exec/run/* >/dev/null 2>&1 || true + fi + exit 0 + diff --git a/drone-runner-exec/rc.drone-runner-exec b/drone-runner-exec/rc.drone-runner-exec new file mode 100644 index 0000000000..08dc1c23e3 --- /dev/null +++ b/drone-runner-exec/rc.drone-runner-exec @@ -0,0 +1,68 @@ +#!@l_prefix@/bin/openpkg rc +## +## rc.drone-runner-exec -- Run-Commands +## + +%config + drone_runner_exec_enable="$openpkg_rc_def" + drone_runner_exec_flags="" + drone_runner_exec_log_prolog="true" + drone_runner_exec_log_epilog="true" + drone_runner_exec_log_numfiles="10" + drone_runner_exec_log_minsize="1M" + drone_runner_exec_log_complevel="9" + +%common + drone_runner_exec_cfgfile="@l_prefix@/etc/drone-runner-exec/drone-runner-exec.sh" + drone_runner_exec_pidfile="@l_prefix@/var/drone-runner-exec/run/drone-runner-exec.pid" + drone_runner_exec_tmpfile="@l_prefix@/var/drone-runner-exec/run/drone-runner-exec.tmp" + drone_runner_exec_logfile="@l_prefix@/var/drone-runner-exec/log/drone-runner-exec.log" + drone_runner_exec_signal () { + [ -f $drone_runner_exec_pidfile ] && kill -$1 `cat $drone_runner_exec_pidfile` + } + +%status -u @l_rusr@ -o + drone_runner_exec_usable="unknown" + drone_runner_exec_active="no" + rcService drone_runner_exec enable yes && \ + drone_runner_exec_signal 0 && drone_runner_exec_active="yes" + echo "drone_runner_exec_enable=\"$drone_runner_exec_enable\"" + echo "drone_runner_exec_usable=\"$drone_runner_exec_usable\"" + echo "drone_runner_exec_active=\"$drone_runner_exec_active\"" + +%start -u @l_rusr@ + rcService drone-runner-exec enable yes || exit 0 + rcService drone-runner-exec active yes && exit 0 + ( GOMAXPROCS=32 + export GOMAXPROCS + sed -e 's/^\([A-Z][^=]*\)=\(.*\)$/\1=\2; export \1/' \ + <@l_prefix@/etc/drone-runner-exec/drone-runner-exec.sh >$drone_runner_exec_tmpfile + . $drone_runner_exec_tmpfile + rm -f $drone_runner_exec_tmpfile + nohup @l_prefix@/sbin/drone-runner-exec \ + $drone_runner_exec_flags \ + >$drone_runner_exec_logfile 2>&1 & + echo $! >$drone_runner_exec_pidfile + ) >/dev/null 2>&1 + +%stop -u @l_rusr@ + rcService drone-runner-exec enable yes || exit 0 + rcService drone-runner-exec active no && exit 0 + drone_runner_exec_signal TERM + sleep 2 + rm -f $drone_runner_exec_pidfile >/dev/null 2>&1 || true + +%restart -u @l_rusr@ + rcService drone-runner-exec enable yes || exit 0 + rcService drone-runner-exec active no && exit 0 + rc drone_runner_exec stop start + +%daily -u @l_susr@ + rcService drone-runner-exec enable yes || exit 0 + shtool rotate -f \ + -n ${drone_runner_exec_log_numfiles} -s ${drone_runner_exec_log_minsize} -d \ + -z ${drone_runner_exec_log_complevel} -m 664 -o @l_rusr@ -g @l_rgrp@ \ + -P "${drone_runner_exec_log_prolog}" \ + -E "${drone_runner_exec_log_epilog}; rc drone-runner-exec restart" \ + $drone_runner_exec_logfile +