Setup honeycomb to build and push rpms on merge 75/1575/6
authorEd Warnicke <eaw@cisco.com>
Wed, 15 Jun 2016 16:45:51 +0000 (11:45 -0500)
committerEd Warnicke <hagbard@gmail.com>
Thu, 16 Jun 2016 20:55:36 +0000 (20:55 +0000)
This patch depends on the merging of https://gerrit.fd.io/r/#/c/1574/
which must merge before it.

Please also note, while there is a first step to getting the package
pushing scripts into a common sharable place, the vpp script
for pushing has *intentionally* not been changed to use
it yet because of the release later this week as a matter
of risk management.

Change-Id: Ifad185d35f582a62bb750ece3c022a24d2153b4e
Signed-off-by: Ed Warnicke <eaw@cisco.com>
jjb/honeycomb/honeycomb.yaml
jjb/honeycomb/include-raw-honeycomb-pkg-push.sh [new file with mode: 0644]
jjb/scripts/maven_push_functions.sh [new file with mode: 0644]

index 15b753d..1b8cc43 100644 (file)
@@ -6,10 +6,15 @@
         - 'honeycomb-integration-{stream}-{os}'
         - 'honeycomb-verify-image-{stream}-{os}'
     project: 'honeycomb'
+    os:
+        - ubuntu1404:
+            repo-os-part: 'ubuntu.trusty.main'
+        - centos7:
+            repo-os-part: 'centos7'
     stream:
         - master:
             branch: 'master'
-    os: 'ubuntu1404'
+            repo-stream-part: 'master'
 
 - job-template:
     name: 'honeycomb-verify-{stream}-{os}'
             project: '{project}'
         - os-parameter:
             os: '{os}'
+        - maven-project-parameter:
+            maven: '{mvn33}'
+        - repo-name-parameter:
+            repo-name: '{repo-stream-part}.{repo-os-part}'
 
     scm:
         - gerrit-trigger-scm:
         global-settings-type: cfp
 
     postbuilders:
+        - shell:
+            !include-raw-escape:
+                - ../scripts/maven_push_functions.sh
+                - include-raw-honeycomb-pkg-push.sh
         - shell: |
             if [ "${{OS}}" == "ubuntu1404" ];then sudo update-java-alternatives -s /usr/lib/jvm/java-1.7.0-openjdk-amd64;fi
 
diff --git a/jjb/honeycomb/include-raw-honeycomb-pkg-push.sh b/jjb/honeycomb/include-raw-honeycomb-pkg-push.sh
new file mode 100644 (file)
index 0000000..c501a08
--- /dev/null
@@ -0,0 +1,16 @@
+#!/bin/bash
+if [ "${OS}" == "centos7" ]; then
+
+    # Build the rpms
+
+    ./packaging/rpm/rpmbuild.sh
+
+    # Find the files
+    RPMS=$(find . -type f -iname '*.rpm')
+    SRPMS=$(find . -type f -iname '*.srpm')
+    SRCRPMS=$(find . -type f -name '*.src.rpm')
+    for i in $RPMS $SRPMS $SRCRPMS
+    do
+        push_rpm "$i"
+    done
+fi
\ No newline at end of file
diff --git a/jjb/scripts/maven_push_functions.sh b/jjb/scripts/maven_push_functions.sh
new file mode 100644 (file)
index 0000000..2d6ae79
--- /dev/null
@@ -0,0 +1,90 @@
+#!/bin/bash
+set -xe -o pipefail
+echo "*******************************************************************"
+echo "* STARTING PUSH OF PACKAGES TO REPOS"
+echo "* NOTHING THAT HAPPENS BELOW THIS POINT IS RELATED TO BUILD FAILURE"
+echo "*******************************************************************"
+
+# Determine the path to maven
+if [ -z "${MAVEN_SELECTOR}" ]; then
+    echo "ERROR: No Maven install detected!"
+    exit 1
+fi
+
+MVN="${HOME}/tools/hudson.tasks.Maven_MavenInstallation/${MAVEN_SELECTOR}/bin/mvn"
+GROUP_ID="io.fd.${PROJECT}"
+BASEURL="${NEXUSPROXY}/content/repositories/fd.io."
+BASEREPOID='fdio-'
+
+function push_file ()
+{
+    push_file=$1
+    repoId=$2
+    url=$3
+    version=$4
+    artifactId=$5
+    file_type=$6
+    classifier=$7
+
+    if [ "$classifier" ]; then
+        d_classifier="-Dclassifier=$7"
+    fi
+
+    # Disable checks for doublequote to prevent glob / splitting
+    # shellcheck disable=SC2086
+    $MVN org.apache.maven.plugins:maven-deploy-plugin:deploy-file \
+        -Dfile=$push_file -DrepositoryId=$repoId \
+        -Durl=$url -DgroupId=$GROUP_ID \
+        -Dversion=$version -DartifactId=$artifactId \
+        -Dtype=$file_type $d_classifier\
+        -gs $GLOBAL_SETTINGS_FILE -s $SETTINGS_FILE
+
+    # make sure the script bombs if we fail an upload
+    if [ "$?" != '0' ]; then
+        echo "ERROR: There was an error with the upload"
+        exit 1
+    fi
+}
+
+function push_jar ()
+{
+    jarfile=$1
+    repoId="${BASEREPOID}snapshot"
+    url="${BASEURL}snapshot"
+
+    basefile=$(basename -s .jar "$jarfile")
+    artifactId=$(echo "$basefile" | cut -f 1 -d '-')
+    version=$(echo "$basefile" | cut -f 2 -d '-')
+
+    push_file "$jarfile" "$repoId" "$url" "${version}-SNAPSHOT" "$artifactId" jar
+}
+
+function push_deb ()
+{
+    debfile=$1
+    repoId="fd.io.${REPO_NAME}"
+    url="${BASEURL}${REPO_NAME}"
+
+    basefile=$(basename -s .deb "$debfile")
+    artifactId=$(echo "$basefile" | cut -f 1 -d '_')
+    version=$(echo "$basefile" | cut -f 2- -d '_')
+
+    push_file "$debfile" "$repoId" "$url" "$version" "$artifactId" deb
+}
+
+function push_rpm ()
+{
+    rpmfile=$1
+    repoId="fd.io.${REPO_NAME}"
+    url="${BASEURL}${REPO_NAME}"
+
+    if grep -qE '\.s(rc\.)?rpm' <<<"$rpmfile"
+    then
+        rpmrelease=$(rpm -qp --queryformat="%{release}.src" "$rpmfile")
+    else
+        rpmrelease=$(rpm -qp --queryformat="%{release}.%{arch}" "$rpmfile")
+    fi
+    artifactId=$(rpm -qp --queryformat="%{name}" "$rpmfile")
+    version=$(rpm -qp --queryformat="%{version}" "$rpmfile")
+    push_file "$rpmfile" "$repoId" "$url" "${version}-${rpmrelease}" "$artifactId" rpm
+}