From 7b11d4c94aea8a0b2c8f202c58e8c73c5e5a6ebf Mon Sep 17 00:00:00 2001 From: "Ralf S. Engelschall" Date: Fri, 15 Nov 2019 23:42:32 +0100 Subject: [PATCH] new package --- drone-runner-kube/drone-runner-kube.patch | 69 ++++++++++++ drone-runner-kube/drone-runner-kube.sh | 11 ++ drone-runner-kube/drone-runner-kube.spec | 129 ++++++++++++++++++++++ drone-runner-kube/rc.drone-runner-kube | 68 ++++++++++++ 4 files changed, 277 insertions(+) create mode 100644 drone-runner-kube/drone-runner-kube.patch create mode 100644 drone-runner-kube/drone-runner-kube.sh create mode 100644 drone-runner-kube/drone-runner-kube.spec create mode 100644 drone-runner-kube/rc.drone-runner-kube diff --git a/drone-runner-kube/drone-runner-kube.patch b/drone-runner-kube/drone-runner-kube.patch new file mode 100644 index 0000000000..d98d24b67e --- /dev/null +++ b/drone-runner-kube/drone-runner-kube.patch @@ -0,0 +1,69 @@ +Index: src/k8s.io/client-go/rest/request.go +--- src/k8s.io/client-go/rest/request.go.orig 2019-11-15 20:29:10.000000000 +0100 ++++ src/k8s.io/client-go/rest/request.go 2019-11-15 22:23:42.601863000 +0100 +@@ -989,11 +989,11 @@ + func truncateBody(body string) string { + max := 0 + switch { +- case bool(klog.V(10)): ++ case bool(klog.V(10).Enabled()): + return body +- case bool(klog.V(9)): ++ case bool(klog.V(9).Enabled()): + max = 10240 +- case bool(klog.V(8)): ++ case bool(klog.V(8).Enabled()): + max = 1024 + } + +@@ -1008,7 +1008,7 @@ + // allocating a new string for the body output unless necessary. Uses a simple heuristic to determine + // whether the body is printable. + func glogBody(prefix string, body []byte) { +- if klog.V(8) { ++ if klog.V(8).Enabled() { + if bytes.IndexFunc(body, func(r rune) bool { + return r < 0x0a + }) != -1 { +Index: src/k8s.io/client-go/transport/round_trippers.go +--- src/k8s.io/client-go/transport/round_trippers.go.orig 2019-11-15 20:29:10.000000000 +0100 ++++ src/k8s.io/client-go/transport/round_trippers.go 2019-11-15 22:23:42.602042000 +0100 +@@ -67,13 +67,13 @@ + // DebugWrappers wraps a round tripper and logs based on the current log level. + func DebugWrappers(rt http.RoundTripper) http.RoundTripper { + switch { +- case bool(klog.V(9)): ++ case bool(klog.V(9).Enabled()): + rt = newDebuggingRoundTripper(rt, debugCurlCommand, debugURLTiming, debugResponseHeaders) +- case bool(klog.V(8)): ++ case bool(klog.V(8).Enabled()): + rt = newDebuggingRoundTripper(rt, debugJustURL, debugRequestHeaders, debugResponseStatus, debugResponseHeaders) +- case bool(klog.V(7)): ++ case bool(klog.V(7).Enabled()): + rt = newDebuggingRoundTripper(rt, debugJustURL, debugRequestHeaders, debugResponseStatus) +- case bool(klog.V(6)): ++ case bool(klog.V(6).Enabled()): + rt = newDebuggingRoundTripper(rt, debugURLTiming) + } + +Index: src/k8s.io/utils/trace/trace.go +--- src/k8s.io/utils/trace/trace.go.orig 2019-11-15 20:29:27.000000000 +0100 ++++ src/k8s.io/utils/trace/trace.go 2019-11-15 22:23:42.602173000 +0100 +@@ -97,7 +97,7 @@ + lastStepTime := t.startTime + for _, step := range t.steps { + stepDuration := step.stepTime.Sub(lastStepTime) +- if stepThreshold == 0 || stepDuration > stepThreshold || klog.V(4) { ++ if stepThreshold == 0 || stepDuration > stepThreshold || klog.V(4).Enabled() { + buffer.WriteString(fmt.Sprintf("Trace[%d]: [%v] [%v] ", tracenum, step.stepTime.Sub(t.startTime), stepDuration)) + buffer.WriteString(step.msg) + if len(step.fields) > 0 { +@@ -109,7 +109,7 @@ + lastStepTime = step.stepTime + } + stepDuration := endTime.Sub(lastStepTime) +- if stepThreshold == 0 || stepDuration > stepThreshold || klog.V(4) { ++ if stepThreshold == 0 || stepDuration > stepThreshold || klog.V(4).Enabled() { + buffer.WriteString(fmt.Sprintf("Trace[%d]: [%v] [%v] END\n", tracenum, endTime.Sub(t.startTime), stepDuration)) + } + diff --git a/drone-runner-kube/drone-runner-kube.sh b/drone-runner-kube/drone-runner-kube.sh new file mode 100644 index 0000000000..1499e15bc7 --- /dev/null +++ b/drone-runner-kube/drone-runner-kube.sh @@ -0,0 +1,11 @@ +## +## drone-runner-kube.sh -- drone-runner-kube(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 + diff --git a/drone-runner-kube/drone-runner-kube.spec b/drone-runner-kube/drone-runner-kube.spec new file mode 100644 index 0000000000..26363cdaa3 --- /dev/null +++ b/drone-runner-kube/drone-runner-kube.spec @@ -0,0 +1,129 @@ +## +## drone-runner-kube.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.0b0 +%define V_release 1.0.0-beta.0 +%define V_dist 20191115 + +# package information +Name: drone-runner-kube +Summary: Continuous Integration (CI) Service: Kubernetes Runner +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-kube-%{V_dist}.tar.xz +Source1: rc.drone-runner-kube +Source2: drone-runner-kube.sh +Patch0: drone-runner-kube.patch + +# 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 kubeute Pipelines inside Kubernetes + containers. This is the Kubernetes runner. + +%track + prog drone-runner-kube:release = { + version = %{V_release} + url = https://github.com/drone-runners/drone-runner-kube/releases + regex = v(__VER__)\.tar\.gz + } + prog drone-runner-kube:snapshot = { + version = %{V_dist} + url = http://download.openpkg.org/components/versioned/drone/ + regex = drone-runner-kube-(__VER__)\.tar\.xz + } + +%prep + %setup -q -n drone-runner-kube + %patch -p0 + +%build + # build program + export GOPATH=`pwd` + rm -rf $GOPATH/src/github.com/kube/distribution/vendor/github.com/opencontainers/go-digest + go build -v -o drone-runner-kube github.com/drone-runners/drone-runner-kube/ + +%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-kube \ + $RPM_BUILD_ROOT%{l_prefix}/var/drone-runner-kube/log \ + $RPM_BUILD_ROOT%{l_prefix}/var/drone-runner-kube/run + + # install program + %{l_shtool} install -c -s -m 755 \ + drone-runner-kube $RPM_BUILD_ROOT%{l_prefix}/sbin/ + + # install default configuration + %{l_shtool} install -c -m 644 %{l_value -s -a} \ + %{SOURCE drone-runner-kube.sh} $RPM_BUILD_ROOT%{l_prefix}/etc/drone-runner-kube/ + + # install run-command script + %{l_shtool} install -c -m 755 %{l_value -s -a} \ + %{SOURCE rc.drone-runner-kube} $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-kube' \ + '%config %attr(-,%{l_rusr},%{l_rgrp}) %{l_prefix}/etc/drone-runner-kube/*' \ + '%attr(-,%{l_rusr},%{l_rgrp}) %{l_prefix}/var/drone-runner-kube/*' \ + '%attr(-,%{l_rusr},%{l_rgrp}) %{l_prefix}/var/drone-runner-kube/*/*' + +%files -f files + +%clean + +%post + if [ $1 -eq 2 ]; then + # after upgrade, restart service + eval `%{l_rc} drone-runner-kube status 2>/dev/null` + [ ".$drone_server_active" = .yes ] && %{l_rc} drone-runner-kube restart + fi + exit 0 + +%preun + if [ $1 -eq 0 ]; then + # before erase, stop service and remove log files + %{l_rc} drone-runner-kube stop 2>/dev/null + rm -rf $RPM_INSTALL_PREFIX/var/drone-runner-kube/log/* >/dev/null 2>&1 || true + rm -rf $RPM_INSTALL_PREFIX/var/drone-runner-kube/run/* >/dev/null 2>&1 || true + fi + exit 0 + diff --git a/drone-runner-kube/rc.drone-runner-kube b/drone-runner-kube/rc.drone-runner-kube new file mode 100644 index 0000000000..d6d1c859af --- /dev/null +++ b/drone-runner-kube/rc.drone-runner-kube @@ -0,0 +1,68 @@ +#!@l_prefix@/bin/openpkg rc +## +## rc.drone-runner-kube -- Run-Commands +## + +%config + drone_runner_kube_enable="$openpkg_rc_def" + drone_runner_kube_flags="" + drone_runner_kube_log_prolog="true" + drone_runner_kube_log_epilog="true" + drone_runner_kube_log_numfiles="10" + drone_runner_kube_log_minsize="1M" + drone_runner_kube_log_complevel="9" + +%common + drone_runner_kube_cfgfile="@l_prefix@/etc/drone-runner-kube/drone-runner-kube.sh" + drone_runner_kube_pidfile="@l_prefix@/var/drone-runner-kube/run/drone-runner-kube.pid" + drone_runner_kube_tmpfile="@l_prefix@/var/drone-runner-kube/run/drone-runner-kube.tmp" + drone_runner_kube_logfile="@l_prefix@/var/drone-runner-kube/log/drone-runner-kube.log" + drone_runner_kube_signal () { + [ -f $drone_runner_kube_pidfile ] && kill -$1 `cat $drone_runner_kube_pidfile` + } + +%status -u @l_rusr@ -o + drone_runner_kube_usable="unknown" + drone_runner_kube_active="no" + rcService drone_runner_kube enable yes && \ + drone_runner_kube_signal 0 && drone_runner_kube_active="yes" + echo "drone_runner_kube_enable=\"$drone_runner_kube_enable\"" + echo "drone_runner_kube_usable=\"$drone_runner_kube_usable\"" + echo "drone_runner_kube_active=\"$drone_runner_kube_active\"" + +%start -u @l_rusr@ + rcService drone-runner-kube enable yes || exit 0 + rcService drone-runner-kube active yes && exit 0 + ( GOMAXPROCS=32 + export GOMAXPROCS + sed -e 's/^\([A-Z][^=]*\)=\(.*\)$/\1=\2; export \1/' \ + <@l_prefix@/etc/drone-runner-kube/drone-runner-kube.sh >$drone_runner_kube_tmpfile + . $drone_runner_kube_tmpfile + rm -f $drone_runner_kube_tmpfile + nohup @l_prefix@/sbin/drone-runner-kube \ + $drone_runner_kube_flags \ + >$drone_runner_kube_logfile 2>&1 & + echo $! >$drone_runner_kube_pidfile + ) >/dev/null 2>&1 + +%stop -u @l_rusr@ + rcService drone-runner-kube enable yes || exit 0 + rcService drone-runner-kube active no && exit 0 + drone_runner_kube_signal TERM + sleep 2 + rm -f $drone_runner_kube_pidfile >/dev/null 2>&1 || true + +%restart -u @l_rusr@ + rcService drone-runner-kube enable yes || exit 0 + rcService drone-runner-kube active no && exit 0 + rc drone_runner_kube stop start + +%daily -u @l_susr@ + rcService drone-runner-kube enable yes || exit 0 + shtool rotate -f \ + -n ${drone_runner_kube_log_numfiles} -s ${drone_runner_kube_log_minsize} -d \ + -z ${drone_runner_kube_log_complevel} -m 664 -o @l_rusr@ -g @l_rgrp@ \ + -P "${drone_runner_kube_log_prolog}" \ + -E "${drone_runner_kube_log_epilog}; rc drone-runner-kube restart" \ + $drone_runner_kube_logfile +