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). Records what was kept
46 # in a yaml file for an external process to grab, and in a simple publication
47 # list for our internal publish script to gobble up.
50 mkdir -p $target_dir/exported
54 ls .build/*.$pkg 2>/dev/null | while read f
56 cp $f $target_dir/exported/${f##*/}
57 echo " - $target_dir/exported/${f##*/}" >>$yaml_file
63 # ---------------------------------------------------------------------------
71 -t) target_dir=$2; shift;;
74 *) echo "$1 is not recognised"
76 echo "usage: $0 [-t target-dir]"
77 echo " target dir defaults to /tmp and is where packages and lists are placed."
85 if [[ ! -d $target_dir ]]
87 if ! -mkdir -p $target_dir
89 echo "[FAIL] cannot find or create target directory: $target_dir"
94 if [[ ! -d ./ci ]] # verify we are in the root of the RMr repo filesystem, abort if not
96 echo "[FAIL] current working directory does not seem right; should be RMr repo root: $PWD"
100 set -e # fail unconditionally on first issue
101 yaml_file=$target_dir/build_packages.yml
107 rm -f *.deb *.rpm # these shouldn't be there, but take no chances
108 cmake .. -DBUILD_DOC=1 -DDEV_PKG=1 # set up dev config for unit test (requires dev stuff)
112 cd test # execute tests
113 ksh unit_test.ksh # unit tests first
115 ksh run_all.ksh # application based tests if units pass
118 printf "---\nfiles:\n" >$yaml_file # initialise the yaml file
120 stash_pkgs development # testing good, stash dev packages built above
123 cd .build # now build the run-time packages
124 rm -f *.deb *.rpm # reconfig should delete these, but take no chances
125 cmake .. # configure run-time build
128 stash_pkgs runtime # move packages to target and record in yaml file
130 echo "..." >>$yaml_file # terminate yaml file
135 echo "generated yaml file:"
139 ls -al $target_dir/*.deb $target_dir/*.rpm