Build RMR libraries with CMake templates 64/3064/4
authorLott, Christopher (cl778h) <cl778h@att.com>
Tue, 31 Mar 2020 00:06:30 +0000 (20:06 -0400)
committerLott, Christopher (cl778h) <cl778h@att.com>
Thu, 2 Apr 2020 15:46:06 +0000 (11:46 -0400)
Use new shell script cmake-package.sh to build packages,
stop using the global-jjb cmake-build.sh with its hardcoded
invocation of "make install".

Signed-off-by: Lott, Christopher (cl778h) <cl778h@att.com>
Change-Id: Ia4ec99414e1f47ac35ba844d2f0efc5c37a8e60e

jjb/oran-templates/oran-c-cpp-jobs.yaml
jjb/ric-plt-lib-rmr/ric-plt-lib-rmr.yaml
jjb/shell/cmake-package.sh [new file with mode: 0644]

index c43e735..2291c42 100644 (file)
@@ -97,7 +97,7 @@
             - file-id: ".packagecloud"
               target: "$HOME/.packagecloud"
       - shell: "{pre-build}"
-      - shell: !include-raw-escape: ../../global-jjb/shell/cmake-build.sh
+      - shell: !include-raw-escape: ../shell/cmake-package.sh
       - oran-packagecloud-push:
           build-dir: "{build-dir}"
           packagecloud-account: "{packagecloud-account}"
index 60c2f2b..ff3fae1 100644 (file)
     # jenkins job name prefix
     project-name: ric-plt-lib-rmr-c
     # test scripts depend on this name
-    build-dir: $WORKSPACE/build
-    # use an ubuntu for its modern compiler
-    build-node: ubuntu1804-builder-2c-2g
-    # verify and sonar use cmake
-    cmake-opts: -DDEV_PKG=1
-    make-opts: install test ARGS=-V
+    build-dir: $WORKSPACE/.build
+    # Use ubuntu base for cmake v3
+    # Use docker variant for packagecloud ruby gem
+    build-node: ubuntu1804-docker-4c-4g
+    # install alien package to build RPMS on ubuntu
+    pre-build: !include-raw-escape:
+      - ../shell/install-deb-alien.sh
     # exclude irrelevant changes
     gerrit_trigger_file_paths:
       - compare-type: REG_EXP
         pattern: '^((?!src/bindings|\/COMMIT_MSG).)*$'
 
-# verify c changes on every branch
+# verify every commit
 - project:
-    name: ric-plt-lib-rmr-c-verify
     <<: *rmr_common
     <<: *rmr_c_common
+    name: ric-plt-lib-rmr-c-verify
+    project-name: ric-plt-lib-rmr-c
+    cmake-opts: -DDEV_PKG=1
+    make-opts: package test ARGS=-V
     jobs:
       - gerrit-cmake-verify
     stream:
-      - all:
-          branch: '*'
+      - master:
+          branch: master
 
-# build deb/rpm using Docker and publish to PackageCloud.io
-# on merge to master branch
+# development library - package and publish
 - project:
     <<: *rmr_common
     <<: *rmr_c_common
-    name: ric-plt-lib-rmr-c-package
-    # need docker
-    build-node: ubuntu1804-docker-4c-4g
-    # image is not pushed, use simple name and tag
-    docker-name: '{name}'
-    container-tag-method: latest
-    # use host network for network resources
-    docker-build-args: '--network=host -f ci/Dockerfile'
+    name: ric-plt-lib-rmr-c-dev
+    project-name: ric-plt-lib-rmr-c-dev
+    cmake-opts: -DDEV_PKG=1
+    make-opts: package ARGS=-V
+    install-prefix: /usr/local
+    jobs:
+      - oran-gerrit-cmake-pc-stage
+    stream:
+      - master:
+          branch: master
+
+# runtime library - package and publish
+- project:
+    <<: *rmr_common
+    <<: *rmr_c_common
+    name: ric-plt-lib-rmr-c-rt
+    project-name: ric-plt-lib-rmr-c-rt
+    cmake-opts: -DDEV_PKG=0
+    make-opts: package ARGS=-V
+    install-prefix: /usr/local
     jobs:
-      - oran-gerrit-docker-ci-pc-merge
+      - oran-gerrit-cmake-pc-stage
     stream:
       - master:
           branch: master
 
 # analyze C code and test coverage
 - project:
-    name: ric-plt-lib-rmr-c-sonar
+    name: ric-plt-lib-rmr-c-sonarqube
     <<: *rmr_common
     <<: *rmr_c_common
+    make-opts: test ARGS=-V
     sonar-project-file: ""
     sonar-properties: |
         sonar.login={sonarcloud_api_token}
diff --git a/jjb/shell/cmake-package.sh b/jjb/shell/cmake-package.sh
new file mode 100644 (file)
index 0000000..021f660
--- /dev/null
@@ -0,0 +1,51 @@
+#!/bin/bash
+# SPDX-License-Identifier: EPL-1.0
+##############################################################################
+# Copyright (c) 2020 The Linux Foundation and others.
+#
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.html
+##############################################################################
+
+# Creates a build directory then invokes cmake and make
+# from that dir with only the specified options/targets.
+# Supports projects that create DEB/RPM package files for
+# upload to PackageCloud or other repository, which must
+# use a system install prefix like /usr/local.  Calling
+# the "install" goal with a system prefix requires sudo,
+# but building a package doesn't require the install step.
+# Prereqs:
+# The build minion has cmake, make, gcc etc.
+# Environment variables:
+# WORKSPACE is a non-empty path (required)
+# CMAKE_INSTALL_PREFIX is a non-empty path (required)
+# BUILD_DIR is a path (optional; has usable default)
+# CMAKE_OPTS has options for cmake (optional, empty default)
+# MAKE_OPTS has options for make (optional, empty default)
+
+echo "---> cmake-package.sh"
+
+build_dir="${BUILD_DIR:-$WORKSPACE/build}"
+cmake_opts="${CMAKE_OPTS:-}"
+make_opts="${MAKE_OPTS:-}"
+echo "build_dir:  $build_dir"
+echo "cmake_opts: $cmake_opts"
+echo "make_opts:  $make_opts"
+
+# be careful and verbose
+set -eux -o pipefail
+
+mkdir -p "$build_dir"
+cd "$build_dir" || exit
+cmake -version
+# $cmake_opts needs to wordsplit to pass options.
+# shellcheck disable=SC2086
+eval cmake -DCMAKE_INSTALL_PREFIX="$INSTALL_PREFIX" $cmake_opts ..
+make -version
+# $make_opts needs to wordsplit to pass options.
+# shellcheck disable=SC2086
+make $make_opts
+
+echo "---> cmake-package.sh ends"