build: add jenkins script

Change-Id: I787d238045a936adad6135777aa3160a77c34ce0
Refs: #2790
diff --git a/.jenkins.d/00-deps.sh b/.jenkins.d/00-deps.sh
new file mode 100755
index 0000000..7f312a3
--- /dev/null
+++ b/.jenkins.d/00-deps.sh
@@ -0,0 +1,27 @@
+#!/usr/bin/env bash
+set -x
+set -e
+
+JDIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )
+source "$JDIR"/util.sh
+
+[[ -n $NODE_LABELS ]] || exit 0
+
+if has OSX $NODE_LABELS; then
+    brew update
+    brew upgrade
+    brew install boost pkg-config cryptopp
+    brew cleanup
+fi
+
+if has Ubuntu $NODE_LABELS; then
+    sudo apt-get update -qq -y
+    sudo apt-get -qq -y install build-essential pkg-config
+    sudo apt-get -qq -y install libcrypto++-dev
+
+    if has Ubuntu-12.04 $NODE_LABELS; then
+        sudo apt-get install -qq -y libboost1.48-all-dev
+    else
+        sudo apt-get install -qq -y libboost-all-dev
+    fi
+fi
diff --git a/.jenkins.d/10-ndn-cxx.sh b/.jenkins.d/10-ndn-cxx.sh
new file mode 100755
index 0000000..2af7d6a
--- /dev/null
+++ b/.jenkins.d/10-ndn-cxx.sh
@@ -0,0 +1,31 @@
+#!/usr/bin/env bash
+set -x
+set -e
+
+pushd /tmp >/dev/null
+
+INSTALLED_VERSION=$((cd ndn-cxx && git rev-parse HEAD) 2>/dev/null || echo NONE)
+
+sudo rm -Rf ndn-cxx-latest
+git clone --depth 1 git://github.com/named-data/ndn-cxx ndn-cxx-latest
+LATEST_VERSION=$((cd ndn-cxx-latest && git rev-parse HEAD) 2>/dev/null || echo UNKNOWN)
+
+if [[ $INSTALLED_VERSION != $LATEST_VERSION ]]; then
+    sudo rm -Rf ndn-cxx
+    mv ndn-cxx-latest ndn-cxx
+else
+    sudo rm -Rf ndn-cxx-latest
+fi
+
+sudo rm -Rf /usr/local/include/ndn-cxx
+sudo rm -f /usr/local/lib/libndn-cxx*
+sudo rm -f /usr/local/lib/pkgconfig/libndn-cxx*
+
+pushd ndn-cxx >/dev/null
+
+./waf configure -j1 --color=yes --without-osx-keychain
+./waf -j1 --color=yes
+sudo ./waf install -j1 --color=yes
+
+popd >/dev/null
+popd >/dev/null
diff --git a/.jenkins.d/20-build.sh b/.jenkins.d/20-build.sh
new file mode 100755
index 0000000..5a04b56
--- /dev/null
+++ b/.jenkins.d/20-build.sh
@@ -0,0 +1,32 @@
+#!/usr/bin/env bash
+set -x
+set -e
+
+sudo rm -Rf /usr/local/include/ndn-group-encrypt
+sudo rm -f /usr/local/lib/libndn-group-encrypt*
+sudo rm -f /usr/local/lib/pkgconfig/ndn-group-encrypt*
+
+# Cleanup
+sudo ./waf -j1 --color=yes distclean
+
+# Configure/build in release mode
+./waf -j1 --color=yes configure
+./waf -j1 --color=yes build
+
+# Cleanup
+sudo ./waf -j1 --color=yes distclean
+
+# Configure/build in debug mode
+./waf -j1 --color=yes configure --debug
+./waf -j1 --color=yes build
+
+# Cleanup
+sudo ./waf -j1 --color=yes distclean
+
+# Configure/build in optimized mode with tests
+./waf -j1 --color=yes configure --with-tests
+./waf -j1 --color=yes build
+
+# Install
+sudo ./waf install -j1 --color=yes
+sudo ldconfig || true
diff --git a/.jenkins.d/30-tests.sh b/.jenkins.d/30-tests.sh
new file mode 100755
index 0000000..c04b121
--- /dev/null
+++ b/.jenkins.d/30-tests.sh
@@ -0,0 +1,13 @@
+#!/usr/bin/env bash
+set -x
+set -e
+
+# Prepare environment
+sudo rm -Rf ~/.ndn
+
+# Run unit tests
+if [[ -n "$XUNIT" ]]; then
+    ./build/unit-tests --log_format=XML --log_sink=build/xunit-report.xml --log_level=all --report_level=no
+else
+    ./build/unit-tests -l test_suite
+fi
diff --git a/.jenkins.d/util.sh b/.jenkins.d/util.sh
new file mode 100644
index 0000000..81c8931
--- /dev/null
+++ b/.jenkins.d/util.sh
@@ -0,0 +1,9 @@
+has() {
+    local p=$1
+    shift
+    local x
+    for x in "$@"; do
+        [[ "${x}" == "${p}" ]] && return 0
+    done
+    return 1
+}