Added script installKind to fix the chicken-n-egg problem around cluster detection. Wrap call in a try/catch block until build system behavior is known
Change-Id: I874e841e6076e9f59c16213f575b14f7023388ab
diff --git a/vars/installKind.groovy b/vars/installKind.groovy
new file mode 100644
index 0000000..28d4f58
--- /dev/null
+++ b/vars/installKind.groovy
@@ -0,0 +1,97 @@
+#!/usr/bin/env groovy
+// -----------------------------------------------------------------------
+// Copyright 2023 Open Networking Foundation (ONF) and the ONF Contributors
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+// -----------------------------------------------------------------------
+
+// -----------------------------------------------------------------------
+// -----------------------------------------------------------------------
+def getIam(String func)
+{
+ // Cannot rely on a stack trace due to jenkins manipulation
+ String src = 'vars/installKind.groovy'
+ String iam = [src, func].join('::')
+ return iam
+}
+
+// -----------------------------------------------------------------------
+// -----------------------------------------------------------------------
+def process(Map args) {
+
+ String iam = getIam('process')
+ println("** ${iam}: ENTER")
+
+ // go install sigs.k8s.io/kind@v0.18.0
+ sh(
+ returnStdout: true,
+ script: """#!/bin/bash
+
+set -eu -o pipefail
+umask 0
+
+function error()
+{
+ echo "** ${FUNCNAME[1]} ERROR: $*"
+ exit 1
+}
+
+dir="$WORKSPACE/bin"
+if [ ! -f "$dir/kind" ]; then
+ mkdir -p "$dir"
+ pushd "$dir" || error "pushd $dir failed"
+ curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.11.0/kind-linux-amd64
+ chmod +x ./kind
+ popd || error "popd $dir failed"
+fi
+
+return
+""")
+
+ println("** ${iam}: LEAVE")
+}
+
+// -----------------------------------------------------------------------
+// -----------------------------------------------------------------------
+Boolean call\
+ (
+ def self, // jenkins env object for access to primitives like echo()
+ Closure body, // jenkins closure attached to the call iam() {closure}
+ )
+{
+ Map config = [:] // propogate block parameters
+ body.resolveStrategy = Closure.DELEGATE_FIRST
+ body.delegate = config // make parameters visible down below
+ body()
+
+ String iam = getIam('main')
+ println("** ${iam}: ENTER")
+ println("** ${iam}: Debug= is " + config.contains(debug))
+
+ try
+ {
+ process(config)
+ }
+ catch (Exception err)
+ {
+ println("** ${iam}: EXCEPTION ${err}")
+ throw err
+ }
+ finally
+ {
+ println("** ${iam}: LEAVE")
+ }
+ return
+}
+
+// [EOF]