blob: 394567ba3fee576602e3d1eb4bccb21392138c93 [file] [log] [blame]
#!/bin/bash
set -eou pipefail
set -x
function util_ensure_available() {
local bin=$1
if ! which "${bin}"
then
echo "Please install ${bin}"
return 1
fi
return 0
}
function jenkins_get_job_config() {
local host="$1"
local job="$2"
local config
config="$(mktemp --suffix=.xml config.XXXXXX)"
local url="https://${host}/job/${job}/config.xml"
wget --output-document="${config}" "${url}"
echo "${config}"
}
function jenkins_get_job_repos() {
local config="$1"
if [ -n "${REPO}" ]
then
echo "${REPO}"
return 0
fi
# xmllint is rubbish, so we need sed(1) to separate the results
xmllint --xpath '//com.sonyericsson.hudson.plugins.gerrit.trigger.hudsontrigger.data.GerritProject/pattern' "${config}" | sed -e 's/<pattern>//g' -e 's/<\/pattern>/\n/g'
}
: "${JENKINS_HOST:=openpower.xyz}"
: "${JENKINS_JOB:=openbmc-repository-ci}"
util_ensure_available wget
util_ensure_available xmllint
util_ensure_available git
CONFIG=
REPO=
while [[ $# -gt 0 ]]
do
key="$1"
case "${key}" in
-c|--config)
CONFIG="$2"
shift 2
;;
-r|--repo|--repository)
REPO="$2"
shift 2
;;
-h|--help)
echo "USAGE: DISTRO=DOCKERBASE $0 --config config.xml"
echo
echo "DOCKERBASE is the Docker Hub tag of the base image against which to"
echo "build and test the repositories described in config.xml. Individual"
echo "repositories can be tested against DOCKERBASE with the --repository"
echo "option \(in place of --config\)."
exit 0
;;
*)
(>&2 echo Unrecognised argument \'"$1"\')
shift
;;
esac
done
if [ -z "${CONFIG}" ]
then
CONFIG="$(jenkins_get_job_config "${JENKINS_HOST}" "${JENKINS_JOB}")"
fi
export UNIT_TEST_PKG=
export WORKSPACE=
function git_clone_repo() {
local prj_package="$1"
local package
package="$(basename "${prj_package}")"
local workspace="$2"
if [ -d "${prj_package}" ]
then
git clone "${prj_package}" "${workspace}"/"${package}"
return
fi
git clone https://gerrit.openbmc.org/openbmc/"${package}" "${workspace}"/"${package}"
}
jenkins_get_job_repos "${CONFIG}" | while read -r GERRIT_PROJECT
do
UNIT_TEST_PKG=$(basename "${GERRIT_PROJECT}")
WORKSPACE="$(mktemp -d --tmpdir openbmc-build-scripts.XXXXXX)"
git clone . "${WORKSPACE}"/openbmc-build-scripts
git_clone_repo "${GERRIT_PROJECT}" "${WORKSPACE}"
./run-unit-test-docker.sh
rm -rf "${WORKSPACE}"
done