MT#6259 provide docker abi-check

Change-Id: Iea8a04cc935070168ec0f63a083258ee5a2e0d07
changes/36/6436/1
Victor Seva 9 years ago
parent bb75433890
commit d7c7de0851

@ -0,0 +1,31 @@
# DOCKER_NAME=libtcap-jessie
FROM docker.mgm.sipwise.com/sipwise-jessie:latest
# Important! Update this no-op ENV variable when this Dockerfile
# is updated with the current date. It will force refresh of all
# of the base images and things like `apt-get update` won't be using
# old cached versions when the Dockerfile is built.
ENV REFRESHED_AT 2016-05-31
RUN apt-get update
RUN apt-get install --assume-yes git abi-compliance-checker
RUN echo './t/testrunner' >>/root/.bash_history
WORKDIR /code/
################################################################################
# Instructions for usage
# ----------------------
# When you want to build the base image from scratch (jump to the next section if you don't want to build yourself!):
# % docker build --tag="libtcap-jessie" .
# % docker run --rm -i -t -v $(pwd)/..:/code:rw libtcap-jessie:latest bash
#
# Use the existing docker image:
# % docker pull docker.mgm.sipwise.com/libtcap-jessie
# % docker run --rm -i -t -v $(pwd)/..:/code:rw docker.mgm.sipwise.com/libtcap-jessie:latest bash
#
# Inside docker (the command is in history, just press UP button):
# ./t/testrunner
#
################################################################################

@ -0,0 +1,87 @@
#!/bin/bash
set -e
set -x
RESULTS=${RESULTS:-.}
CHECK_DIR="${RESULTS}"/check
source_path="$(pwd)"
if [ $# -lt 2 ] ; then
echo "Wrong number of parameters" >&2
echo "Usage: $0 <old_version> <new_version> <git_source>" >&2
echo "<git_source> defaults to \$(pwd)" >&2
exit 1
fi
old_version="${1}"
new_version="${2}"
# drop "/" from branch names
old_version_norm="${old_version////_}"
new_version_norm="${new_version////_}"
rm -rf "${CHECK_DIR}"
mkdir -p "${CHECK_DIR}/source.$old_version_norm" \
"${CHECK_DIR}/source.$new_version_norm"
cp -r "${source_path}"/.git "${CHECK_DIR}/source.$old_version_norm"
cp -r "${source_path}"/.git "${CHECK_DIR}/source.$new_version_norm"
# old version
(
cd "${CHECK_DIR}/source.$old_version_norm"
git checkout "$old_version" --force
# work around for missing "lib" directory in git
mkdir -p lib
make
)
# new version
(
cd "${CHECK_DIR}/source.$new_version_norm"
git checkout -- .
# work around for missing "lib" directory in git
mkdir -p lib
make
)
# generate config files
cat > "${CHECK_DIR}/${old_version_norm}.xml" << EOF
<version>
check/source.${old_version_norm}
</version>
<headers>
check/source.${old_version_norm}/include
</headers>
<libs>
check/source.${old_version_norm}/lib/
</libs>
<include_paths>
check/source.${old_version_norm}/asn1-compiled
</include_paths>
EOF
cat > "${CHECK_DIR}/${new_version_norm}.xml" << EOF
<version>
check/source.${new_version_norm}
</version>
<headers>
check/source.${new_version_norm}/include
</headers>
<libs>
check/source.${new_version_norm}/lib/
</libs>
<include_paths>
check/source.${new_version_norm}/asn1-compiled
</include_paths>
EOF
cd "${RESULTS}"
# NOTE: with >=1.99.13 we'll get -skip-internal-symbols=... + -skip-internal-types=...
abi-compliance-checker -l tcap \
-d1 "check/${old_version_norm}.xml" -d2 "check/${new_version_norm}.xml"

@ -0,0 +1,77 @@
#!/bin/bash
# This script is used for running the tests with proper arguments
# from within Jenkins
set -e
set -u
set -x
if [ -d /results ] ; then
# Running from Jenkins (RW)
RESULTS="/results"
cd "/code"
else
# Running locally in Docker
RESULTS="./results"
mkdir -p "${RESULTS}"
fi
source_path="$(pwd)"
# jenkins environment vars
if [ -z "${release:-}" ] ; then
release="none"
fi
if [ -z "${tag:-}" ] ; then
tag="none"
fi
if [ -z "${old_version:-}" ] ; then
old_version="latest_tag"
fi
if [ -z "${new_version:-}" ] ; then
new_version="none"
fi
if [ -z "${branch:-}" ] ; then
branch="none"
fi
if [[ "${release}" =~ ^release-mr ]] ; then
echo "release detected"
short_release=${release%%-update}
short_release=${short_release##release-}
if [[ "${short_release}" =~ ^mr([0-9]+)\.([0-9]+)\.([0-9]+)$ ]] ; then
common_release="mr${BASH_REMATCH[1]}.${BASH_REMATCH[2]}\."
new_version="${tag}"
else
echo "yellow zone release detected"
common_release="${short_release}\."
fi
old_version=$(cd "${source_path}" ; git tag | grep -v jenkins-libtcap | \
grep "${common_release}" | sort -r | head -1)
if [ -z "${old_version}" ] ; then
echo "No tag found for ${common_release}. Using latest_tag"
old_version="latest_tag"
fi
else
if [ "${old_version}" = "latest_tag" ] ; then
if [[ "${branch}" =~ ^mr[0-9]+\.[0-9]+$ ]] ; then
old_version=$(cd "${source_path}" ; git tag | grep -v jenkins-libtcap | \
grep "${branch}\." | sort -r | head -1)
fi
fi
if [ "$new_version" = "none" ] ; then
echo "New version is unset, defaulting to master"
new_version=master
fi
fi
if [ "${old_version}" = "latest_tag" ] ; then
old_version=$(cd "${source_path}" ; git tag | grep -v jenkins-libtcap |\
sort -r | head -1)
fi
RESULTS=${RESULTS} ./t/abi-check.sh "$old_version" "$new_version"
Loading…
Cancel
Save