aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPau Espin Pedrol <pespin@sysmocom.de>2021-03-16 14:55:27 +0100
committerPau Espin Pedrol <pespin@sysmocom.de>2021-04-12 14:00:19 +0200
commit0e6108a007deda2e4d6911c60c66452e5477ddec (patch)
tree7a13124c6b466d58b673b8a19de3006e20a585fd
parenta8d0c957107cd7c2e8f671eb7c302509e6ac88c6 (diff)
ogt: Add support to build open5gs
meson from open5gs requires debian10's version. physicial sysmocom OGT setup already migrated to debian10, do the same here. Related: SYS#4805 Change-Id: Id329726f93251b617219beeb674046065c30a436
-rw-r--r--osmo-gsm-tester/Dockerfile52
-rwxr-xr-xosmo-gsm-tester/jenkins.sh35
-rwxr-xr-xosmo-gsm-tester/osmo-gsm-tester-master.sh36
-rw-r--r--osmo-gsm-tester/resources.conf3
4 files changed, 106 insertions, 20 deletions
diff --git a/osmo-gsm-tester/Dockerfile b/osmo-gsm-tester/Dockerfile
index 8dea613..dc8ba1b 100644
--- a/osmo-gsm-tester/Dockerfile
+++ b/osmo-gsm-tester/Dockerfile
@@ -1,5 +1,6 @@
ARG USER
FROM $USER/debian-buster-jenkins
+ARG OGT_MASTER_ADDR="172.18.50.2"
MAINTAINER Pau Espin Pedrol <pespin@sysmocom.de>
@@ -37,7 +38,8 @@ RUN pip3 install \
"git+https://github.com/podshumok/python-smpplib.git@master#egg=smpplib" \
pydbus \
pyusb \
- pysispm
+ pysispm \
+ pymongo
# Intall sshd:
RUN apt-get update && apt-get install -y openssh-server
@@ -51,13 +53,10 @@ RUN mkdir -p /osmo-gsm-tester-srsue \
/osmo-gsm-tester-srsenb \
/osmo-gsm-tester-srsepc \
/osmo-gsm-tester-trx \
- /osmo-gsm-tester-grbroker
+ /osmo-gsm-tester-grbroker \
+ /osmo-gsm-tester-open5gs
RUN chown -R jenkins:jenkins \
- /osmo-gsm-tester-srsue \
- /osmo-gsm-tester-srsenb \
- /osmo-gsm-tester-srsepc \
- /osmo-gsm-tester-trx \
- /osmo-gsm-tester-grbroker
+ /osmo-gsm-tester-*
# Set a UTF-8 locale
RUN sed -i -e 's/# en_US.UTF-8 UTF-8/en_US.UTF-8 UTF-8/' /etc/locale.gen && \
@@ -112,6 +111,45 @@ RUN apt-get update && \
gnuradio && \
apt-get clean
+# install open5gs dependencies: (mongodb not available in Debian)
+# systemctl stuff: workaround for https://jira.mongodb.org/browse/SERVER-54386
+ADD https://www.mongodb.org/static/pgp/server-4.4.asc /tmp/mongodb-server-4.4.asc
+RUN apt-key add /tmp/mongodb-server-4.4.asc && \
+ echo "deb http://repo.mongodb.org/apt/debian buster/mongodb-org/4.4 main" > /etc/apt/sources.list.d/mongodb-org-4.4.list
+RUN apt-get update && \
+ systemctl_path=$(which systemctl) && \
+ mv $systemctl_path /tmp/systemctl && \
+ apt-get install -y --no-install-recommends mongodb-org && \
+ apt-get clean && \
+ mv /tmp/systemctl $systemctl_path && \
+ sed -i "s/127.0.0.1/$OGT_MASTER_ADDR/g" /etc/mongod.conf
+
+# install open5gs dependencies:
+RUN apt-get update && \
+ apt-get install -y --no-install-recommends \
+ python3-pip \
+ python3-setuptools \
+ python3-wheel \
+ ninja-build \
+ build-essential \
+ flex \
+ bison \
+ git \
+ libsctp-dev \
+ libgnutls28-dev \
+ libgcrypt-dev \
+ libssl-dev \
+ libidn11-dev \
+ libmongoc-dev \
+ libbson-dev \
+ libyaml-dev \
+ libnghttp2-dev \
+ libmicrohttpd-dev \
+ libcurl4-gnutls-dev \
+ libnghttp2-dev \
+ meson && \
+ apt-get clean
+
WORKDIR /tmp
ARG OSMO_GSM_TESTER_BRANCH="master"
diff --git a/osmo-gsm-tester/jenkins.sh b/osmo-gsm-tester/jenkins.sh
index ae645e7..05a6cde 100755
--- a/osmo-gsm-tester/jenkins.sh
+++ b/osmo-gsm-tester/jenkins.sh
@@ -28,34 +28,45 @@ TRIAL_DIR="${TRIAL_DIR:-/tmp/trial}"
SRS_LTE_BRANCH=${SRS_LTE_BRANCH:-master}
SRS_LTE_REPO_PREFIX=${SRS_LTE_REPO_PREFIX:-git@github.com:srsLTE}
SRS_LTE_REPO_NAME=${SRS_LTE_REPO_NAME:-srsLTE}
-have_repo_srslte() {
+OPEN5GS_REPO_PREFIX=${OPEN5GS_REPO_PREFIX:-git@github.com:open5gs}
+OPEN5GS_BRANCH=${OPEN5GS_BRANCH:-main}
+have_repo() {
+ repo_prefix=$1
+ repo_name=$2
+ branch=$3
echo "srsLTE inst not provided, fetching it now and it will be build in container"
- if [ -d "${TRIAL_DIR}/${SRS_LTE_REPO_NAME}" ]; then
- git fetch -C ${TRIAL_DIR}/${SRS_LTE_REPO_NAME}
+ if [ -d "${TRIAL_DIR}/${repo_name}" ]; then
+ git fetch -C ${TRIAL_DIR}/${repo_name}
else
mkdir -p ${TRIAL_DIR}
- git clone "${SRS_LTE_REPO_PREFIX}/${SRS_LTE_REPO_NAME}" "${TRIAL_DIR}/${SRS_LTE_REPO_NAME}"
+ git clone "${repo_prefix}/${repo_name}" "${TRIAL_DIR}/${repo_name}"
fi
# Figure out whether we need to prepend origin/ to find branches in upstream.
# Doing this allows using git hashes instead of a branch name.
- if git -C "${TRIAL_DIR}/${SRS_LTE_REPO_NAME}" rev-parse "origin/$SRS_LTE_BRANCH"; then
- SRS_LTE_BRANCH="origin/$SRS_LTE_BRANCH"
+ if git -C "${TRIAL_DIR}/${repo_name}" rev-parse "origin/$branch"; then
+ branch="origin/$branch"
fi
- git -C "${TRIAL_DIR}/${SRS_LTE_REPO_NAME}" checkout -B build_branch "$SRS_LTE_BRANCH"
- rm -rf "${TRIAL_DIR:?}/${SRS_LTE_REPO_NAME}/*"
- git -C "${TRIAL_DIR}/${SRS_LTE_REPO_NAME}" reset --hard "$SRS_LTE_BRANCH"
+ git -C "${TRIAL_DIR}/${repo_name}" checkout -B build_branch "$branch"
+ rm -rf "${TRIAL_DIR:?}/${repo_name}/*"
+ git -C "${TRIAL_DIR}/${repo_name}" reset --hard "$branch"
}
-
# If srsLTE trial not provided by user, fetch srsLTE git repo and let the container build it:
if [ "x$(ls ${TRIAL_DIR}/srslte.*.tgz 2>/dev/null | wc -l)" = "x0" ]; then
- have_repo_srslte
+ have_repo $SRS_LTE_REPO_PREFIX $SRS_LTE_REPO_NAME $SRS_LTE_BRANCH
+fi
+
+# If open5gs trial not provided by user, fetch srsLTE git repo and let the container build it:
+if [ "x$(ls ${TRIAL_DIR}/open5gs.*.tgz 2>/dev/null | wc -l)" = "x0" ]; then
+ have_repo $OPEN5GS_REPO_PREFIX "open5gs" $OPEN5GS_BRANCH
+ have_repo "https://github.com/open5gs" "freeDiameter" "r1.5.0"
+ mv "${TRIAL_DIR}/freeDiameter" "${TRIAL_DIR}/open5gs/subprojects"
fi
. ../jenkins-common.sh
IMAGE_SUFFIX="${IMAGE_SUFFIX:-master}"
docker_images_require \
- "debian-stretch-jenkins" \
+ "debian-buster-jenkins" \
"osmo-gsm-tester"
set_clean_up_trap
diff --git a/osmo-gsm-tester/osmo-gsm-tester-master.sh b/osmo-gsm-tester/osmo-gsm-tester-master.sh
index 4a32376..ae300c9 100755
--- a/osmo-gsm-tester/osmo-gsm-tester-master.sh
+++ b/osmo-gsm-tester/osmo-gsm-tester-master.sh
@@ -34,11 +34,47 @@ build_srslte() {
popd
}
+build_open5gs() {
+ git_repo_dir="/tmp/trial/open5gs"
+ if [ ! -d "$git_repo_dir" ]; then
+ echo "No external trial nor git repo provided for Open5GS!"
+ exit 1
+ fi
+ pushd "/tmp/trial"
+ rm -rf sysroot && mkdir sysroot
+ rm -rf build && mkdir build && cd build || exit 1
+ meson "${git_repo_dir}" --prefix="/tmp/trial/sysroot" --libdir="lib"
+ set +x; echo; echo; set -x
+ ninja "-j$(nproc)"
+ set +x; echo; echo; set -x
+ ninja install
+ find "/tmp/trial/sysroot/lib" -depth -type f -name "lib*.so.*" -exec patchelf --set-rpath '$ORIGIN/' {} \;
+ cd ..
+ this="open5gs.build-${BUILD_NUMBER-$(date +%Y-%m-%d_%H_%M_%S)}"
+ tar="${this}.tgz"
+ tar czf "/tmp/trial/$tar" -C "/tmp/trial/sysroot" .
+ rm -rf build sysroot
+ md5sum "$tar" >>checksums.md5
+ popd
+}
+
# Build srsLTE.git if not provided by host system:
if [ "x$(ls /tmp/trial/srslte.*.tgz 2>/dev/null | wc -l)" = "x0" ]; then
build_srslte
fi
+# Build open5gs.git if not provided by host system:
+if [ "x$(ls /tmp/trial/open5gs.*.tgz 2>/dev/null | wc -l)" = "x0" ]; then
+ build_open5gs
+fi
+
+# If open5gs is available, start mongodb in the background:
+if [ "x$(ls /tmp/trial/open5gs.*.tgz 2>/dev/null | wc -l)" != "x0" ]; then
+ echo "Starting mongodb in the background..."
+ /usr/bin/mongod --fork --config /etc/mongod.conf --logpath /data/mongodb.log
+ chown "${HOST_USER_ID}:${HOST_GROUP_ID}" /data/mongodb.log
+fi
+
# Make trial dir avaialable to jenkins user inside container:
chown -R jenkins /tmp/trial/
diff --git a/osmo-gsm-tester/resources.conf b/osmo-gsm-tester/resources.conf
index d10cc1e..1a8f2a7 100644
--- a/osmo-gsm-tester/resources.conf
+++ b/osmo-gsm-tester/resources.conf
@@ -56,7 +56,8 @@ modem:
rf_dev_type: zmq
imsi: '001010123456789'
ki: '00112233445566778899aabbccddeeff'
- auth_algo: 'xor'
+ opc: '63BFA50EE6523365FF14C1F45F88737D'
+ auth_algo: 'milenage'
features: ['4g']
run_node:
run_type: ssh