3 #==================================================================================
4 # Copyright (c) 2019 Nokia
5 # Copyright (c) 2018-2019 AT&T Intellectual Property.
7 # Licensed under the Apache License, Version 2.0 (the "License");
8 # you may not use this file except in compliance with the License.
9 # You may obtain a copy of the License at
11 # http://www.apache.org/licenses/LICENSE-2.0
13 # Unless required by applicable law or agreed to in writing, software
14 # distributed under the License is distributed on an "AS IS" BASIS,
15 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 # See the License for the specific language governing permissions and
17 # limitations under the License.
18 #==================================================================================
21 # Mnemonic: ci_build.ksh
22 # Abstract: Script builds RMr, exececutes the unit and application based
23 # tests, then generates packages. The packages are left in /tmp
24 # unless -t target-dir is given on the command line. A YAML file
25 # is created which can be used to find all of the packages which
26 # were deposited in the target directory. In an environment which
27 # is also capable of generating RPM ppackages, there should be
28 # four packages: a run-time and development package for both
29 # debian (.deb) and rh (rpm) based systems.
31 # The intent of this script is for it to be executed as a part
32 # of a docker image build process such that the resulting image
33 # contains the RMr packages, and a YAML file which provides the
34 # paths to the package(s) in the image. Docker tools can then
35 # be used to extract the packages and push them to some external
39 # We assume that this scirpt is executed at the 'root' of the
40 # RMr repo (i.e. the directory which has a subdirectory ci).
43 # --------------------------------------------------------------------------------
45 # stash a set of packages for a particular flavour ($1)
48 echo " - $1:" >>$yaml_file # add package flavour (dev, runtime, etc)
52 ls .build/*.$pkg 2>/dev/null | while read f
54 cp $f $target_dir/${f##*/}
55 echo " $pkg: $target_dir/${f##*/}" >>$yaml_file
61 # ---------------------------------------------------------------------------
69 -t) target_dir=$2; shift;;
72 *) echo "$1 is not recognised"
74 echo "usage: $0 [-t target-dir]"
82 if [[ ! -d $target_dir ]]
84 echo "[FAIL] cannot find directory: $target_dir"
88 if [[ ! -d ./ci ]] # verify we are in the root of the RMr repo filesystem, abort if not
90 echo "[FAIL] current working directory does not seem right; should be RMr repo root: $PWD"
94 set -e # fail unconditionally on first issue
95 yaml_file=$target_dir/build_packages.yml
101 rm -f *.deb *.rpm # these shouldn't be there, but take no chances
102 cmake .. -DBUILD_DOC=1 -DDEV_PKG=1 # set up dev config for unit test (requires dev stuff)
106 cd test # execute tests
107 ksh unit_test.ksh # unit tests first
109 ksh run_all.ksh # application based tests if units pass
112 # initialise the yaml file
113 cat <<-endKat >$yaml_file
115 # package types which might be listed below
123 stash_pkgs development # testing good, stash dev packages built above
126 cd .build # now build the run-time packages
127 rm -f *.deb *.rpm # reconfig should delete these, but take no chances
128 cmake .. # configure run-time build
131 stash_pkgs runtime # move packages to target and record in yaml file
133 echo "..." >>$yaml_file # terminate yaml file
138 echo "generated yaml file:"
142 ls -al $target_dir/*.deb $target_dir/*.rpm