Osmocom docker containers
Go to file
Harald Welte 8e2329e2ec redmine: We no longer need the hmac diff
The upstream redmine container/image has meanwhile upgraded to a more
recent version of the ruby base modules which don't require to be
patched anymore.

Change-Id: I0fd7684bdab55eece889a7d9e524ec2a25b30a3b
2020-02-16 10:47:10 +01:00
alpine-build Add Dockerfile for alpine:3.6 based containers with libosmocore build deps 2017-10-09 11:15:57 +08:00
alpine-lighttpd Add Dockerfile for alpine Linux with lighttpd 2017-10-15 14:37:41 +00:00
bind9 Makefile support for our production infrastructure containers 2018-06-03 16:11:26 +00:00
cgit cgit: Fix group membership to allow read of git repos 2018-08-18 17:28:54 +02:00
debian-buster-build docker-*-build: Add missign dependency to stow 2020-01-09 22:11:06 +00:00
debian-buster-erlang debian-buster-erlang: rename user to "build" 2020-01-15 09:37:46 +01:00
debian-buster-simtrace2 Add debian-buster-simtrace2 Dockerfile 2020-01-09 22:23:14 +00:00
debian-jessie-build docker-*-build: Add missign dependency to stow 2020-01-09 22:11:06 +00:00
debian-jessie-buildslave Fix "'laforge/debian-jessie-build' not found" 2018-09-06 15:17:06 +02:00
debian-jessie-buildslave-st Fix "'laforge/debian-jessie-build' not found" 2018-09-06 15:17:06 +02:00
debian-jessie-osmocom Release.key of osmocom-nightly has expired; update it in all Dockerfiles 2018-02-04 17:20:04 +01:00
debian-repo-install-test repo-install-test: disable osmo-ggsn service 2019-10-30 13:00:29 +00:00
debian-sid-build add debian-sid-build, osmo-dev-on-debian-sid 2017-12-06 01:45:42 +01:00
debian-stretch-build docker-*-build: Add missign dependency to stow 2020-01-09 22:11:06 +00:00
debian-stretch-build-dist debian-stretch-build-dist: new Dockerfile 2019-07-02 13:19:39 +02:00
debian-stretch-jenkins debian-stretch-jenkins: move from osmo-ci.git 2020-01-15 09:28:49 +01:00
debian-stretch-titan debian-stretch-titan: Install netcat-openbsd required by osmo-ttcn3-hacks 2019-10-04 15:47:54 +02:00
gerrit update gerrit to 2.16.16 2020-02-16 10:46:59 +01:00
git-daemon git-deamon: Make sure to create the git-daemon user 2018-07-21 09:38:52 +02:00
gitolite Makefile support for our production infrastructure containers 2018-06-03 16:11:26 +00:00
gr-gsm-master Revert "Simplify git checkout, allow branches and commits" 2019-05-21 17:53:11 +02:00
make make: Fix OSMO_BB_BRANCH not being passed correctly 2019-11-05 13:02:24 +01:00
nplab-m3ua-test nplab-m3ua-test: support running without jenkins 2019-04-05 08:30:28 +02:00
nplab-sua-test Switch all osmo-*-master and ttcn3-*-test from jessie to stretch 2019-03-30 09:56:36 +00:00
osmo-bsc-latest Update osmo-*/Dockerfile to log stdout+stderr of process to log file 2019-11-19 18:29:00 +00:00
osmo-bsc-master Update osmo-*/Dockerfile to log stdout+stderr of process to log file 2019-11-19 18:29:00 +00:00
osmo-bts-latest respawn.sh: Add logging and limit loop iterations 2019-11-20 17:14:54 +01:00
osmo-bts-master respawn.sh: Add logging and limit loop iterations 2019-11-20 17:14:54 +01:00
osmo-cn-latest osmo-cn-latest: Let osmo-hlr upgrade the db scheme 2019-07-24 17:35:04 +02:00
osmo-dev-on-debian-sid add debian-sid-build, osmo-dev-on-debian-sid 2017-12-06 01:45:42 +01:00
osmo-gerrit-libosmo Revert "Simplify git checkout, allow branches and commits" 2019-05-21 17:53:11 +02:00
osmo-ggsn-latest Update osmo-*/Dockerfile to log stdout+stderr of process to log file 2019-11-19 18:29:00 +00:00
osmo-ggsn-master Update osmo-*/Dockerfile to log stdout+stderr of process to log file 2019-11-19 18:29:00 +00:00
osmo-hlr-latest Update osmo-*/Dockerfile to log stdout+stderr of process to log file 2019-11-19 18:29:00 +00:00
osmo-hlr-master Update osmo-*/Dockerfile to log stdout+stderr of process to log file 2019-11-19 18:29:00 +00:00
osmo-hnbgw-latest Update osmo-*/Dockerfile to log stdout+stderr of process to log file 2019-11-19 18:29:00 +00:00
osmo-hnbgw-master Update osmo-*/Dockerfile to log stdout+stderr of process to log file 2019-11-19 18:29:00 +00:00
osmo-mgw-latest Update osmo-*/Dockerfile to log stdout+stderr of process to log file 2019-11-19 18:29:00 +00:00
osmo-mgw-master Update osmo-*/Dockerfile to log stdout+stderr of process to log file 2019-11-19 18:29:00 +00:00
osmo-msc-latest Update osmo-*/Dockerfile to log stdout+stderr of process to log file 2019-11-19 18:29:00 +00:00
osmo-msc-master Update osmo-*/Dockerfile to log stdout+stderr of process to log file 2019-11-19 18:29:00 +00:00
osmo-nitb-latest Update osmo-*/Dockerfile to log stdout+stderr of process to log file 2019-11-19 18:29:00 +00:00
osmo-nitb-master Update osmo-*/Dockerfile to log stdout+stderr of process to log file 2019-11-19 18:29:00 +00:00
osmo-pcu-latest respawn.sh: Add logging and limit loop iterations 2019-11-20 17:14:54 +01:00
osmo-pcu-master pcu-master: Remove non-existent --enable-trx configure option from Dockerfile 2019-12-17 10:38:04 +01:00
osmo-remsim-latest Update osmo-*/Dockerfile to log stdout+stderr of process to log file 2019-11-19 18:29:00 +00:00
osmo-remsim-master osmo-remsim-master: Add libosmo-simtrace2-dev to container 2019-12-18 14:01:44 +01:00
osmo-sgsn-latest Update osmo-*/Dockerfile to log stdout+stderr of process to log file 2019-11-19 18:29:00 +00:00
osmo-sgsn-master Update osmo-*/Dockerfile to log stdout+stderr of process to log file 2019-11-19 18:29:00 +00:00
osmo-sip-latest Update osmo-*/Dockerfile to log stdout+stderr of process to log file 2019-11-19 18:29:00 +00:00
osmo-sip-master Update osmo-*/Dockerfile to log stdout+stderr of process to log file 2019-11-19 18:29:00 +00:00
osmo-stp-latest Update osmo-*/Dockerfile to log stdout+stderr of process to log file 2019-11-19 18:29:00 +00:00
osmo-stp-master stp-master/Dockerfile: Install sccp_devmo_user bin instead of libtool wrapper 2020-01-21 11:24:04 +01:00
osmocom-bb-host-master osmocom-bb-host-master: install python-enum as fake_trx dependency 2019-07-11 15:37:41 +02:00
patchwork Makefile support for our production infrastructure containers 2018-06-03 16:11:26 +00:00
public-inbox add "public-inbox" Dockerfile + Makefiel 2018-10-07 16:27:31 +00:00
redmine redmine: We no longer need the hmac diff 2020-02-16 10:47:10 +01:00
scripts regen_doc: Change IP network to an unused subnet 2019-07-24 18:05:02 +02:00
sctp-test Switch all osmo-*-master and ttcn3-*-test from jessie to stretch 2019-03-30 09:56:36 +00:00
sigtran-tests Switch all osmo-*-master and ttcn3-*-test from jessie to stretch 2019-03-30 09:56:36 +00:00
tmp add non-working yml file with service/stack description 2017-05-03 20:50:12 +02:00
ttcn3-bsc-test Update ttcn3-*/jenkins.sh to log stdout+stderr of process to log file 2019-11-20 17:17:45 +01:00
ttcn3-bsc-test-sccplite symlinks: ttcn3-bsc-test-sccplite 2018-10-26 10:19:05 +02:00
ttcn3-bscnat-test Update ttcn3-*/jenkins.sh to log stdout+stderr of process to log file 2019-11-20 17:17:45 +01:00
ttcn3-bts-test ttcn3-bts-test/oml: fix osmo-bts.cfg: osmo-bts-trx has no DSP/HW MS Power Control 2019-12-19 11:15:04 +09:00
ttcn3-ggsn-test ttcn3-ggsn: Drop no longer existing m_ggsn_supports_echo_interval 2020-01-05 11:22:36 +00:00
ttcn3-hlr-test ttcn3-hlr-test: mp_hlr_supports_dgsm := false 2020-02-10 08:28:19 +01:00
ttcn3-mgw-test ttcn3-mgw: Drop not longer existing mp_enable_conn_timeout_test 2020-01-05 11:22:36 +00:00
ttcn3-msc-test Update ttcn3-*/jenkins.sh to log stdout+stderr of process to log file 2019-11-20 17:17:45 +01:00
ttcn3-nitb-sysinfo Fix git checkout for branches and commits 2019-05-22 11:18:56 +02:00
ttcn3-pcu-test ttcn3-pcu: Bind VTY to assigned IP addr 2020-01-20 14:03:27 +01:00
ttcn3-pcu-test-sns PCU: Differentiate between tests with classic and SNS Gb dialects 2019-03-14 21:38:44 +01:00
ttcn3-remsim-test remsim: Ensure non-overlapping junit-xml filenames 2019-12-01 22:13:17 +01:00
ttcn3-sccp-test sccp: Enable gsmtap log target and configure stderr logging 2020-01-20 16:08:41 +01:00
ttcn3-sgsn-test ttcn3-sgsn: Drop unneeded .cfg change for latest 2020-01-05 11:22:36 +00:00
ttcn3-sip-test ttcn3-sip: Drop unneeded SIP_Tests.cfg modifications for latest 2020-01-05 11:22:36 +00:00
ttcn3-stp-test ttcn3-stp: Set default OSMO_TTCN3_BRANCH to master 2020-01-16 14:26:35 +01:00
ubuntu-zesty-build *-build: Add libgnutls28-dev, as libosmocore requires this now 2017-11-17 10:11:30 +01:00
.gitignore gitignore: add .release 2019-04-04 10:46:14 +00:00
.gitreview add .gitreview 2018-04-12 09:20:24 +00:00
README.md README.md: Document how to get gdb backtrace from process crash 2020-01-16 14:50:15 +01:00
Release.key Release.key of osmocom-nightly has expired; update it in all Dockerfiles 2018-02-04 17:20:04 +01:00
jenkins-common.sh clean up the net and attached containers to ensure reliable test starts 2019-07-05 15:16:17 +02:00
osmo-bisect.sh Add script to bisect test failures with ttcn3 and docker 2019-04-26 12:07:15 +02:00

README.md

Osmocom docker playground

This repository contains some humble attempts at creating some Docker containers + related stacks around Osmocom. So far, the main focus is test automation.

Running a testsuite

All testsuite folders start with ttcn3 or nplab. Run the following to build/update all required containers and start a specific testsuite:

$ cd ttcn3-mgw-test
$ ./jenkins.sh

Environment variables:

  • IMAGE_SUFFIX: the version of the Osmocom stack to run the testsuite against. Default is master, set this to latest to test the last stable releases.
  • OSMO_TTCN3_BRANCH: osmo-ttcn3-hacks.git branch, which will be used when building a ttcn3-* docker image. Defaults to master.
  • NO_DOCKER_IMAGE_BUILD: when set to 1, it won't try to update the containers (see "caching" below)

Building containers manually

Most folders in this repository contain a Dockerfile. Build a docker container with the same name as the folder like this:

$ cd debian-stretch-build
$ make

Caching

All folders named osmo-*-latest and osmo-*-master build the latest stable or most recent commit from master of the corresponding Osmocom program's git repository. When you have built it already, running make will only do a small HTTP request to check if the sources are outdated and skip the build in case it is still up-to-date.

Dependencies

Folders that don't have a jenkins.sh usually only depend on the container that is specified in the FROM line of their Dockerfile. Testsuites depend on multiple containers, they are defined on top of each jenkins.sh:

. ../jenkins-common.sh
IMAGE_SUFFIX="${IMAGE_SUFFIX:-master}"
docker_images_require \
	"debian-stretch-build" \
	"osmo-stp-$IMAGE_SUFFIX" \
	"osmo-bsc-$IMAGE_SUFFIX" \
	"osmo-bts-$IMAGE_SUFFIX" \
	"debian-stretch-titan" \
	"ttcn3-bsc-test"

Reasoning for this implementation

Before having the docker_images_require lines, there used to be a top-level Makefile for resolving dependencies between the containers. But it was prone to mistakes: when new folders in the repository were added without related targets in the Makefile, make would always assume that the targets where the always existing folders and therefore never build the containers.

In order to implement testing latest in addition to master (OS#3268), it would have been necessary to add further complexity to the Makefile. Instead it was decided to scrap the file, and just keep the short list of dependencies right above where they would be needed in the jenkins.sh.

Obtaining gdb backtrace from crash

If for instance TTCN3 test is producing a crash on a program running in docker, eg. osmo-msc, it is desirable to get a full crash report. This section describes how to do so.

First, open osmo-$program/Dockerfile and add lines to install gdb plus $program dependency debug packages. For instance:

+RUN    apt-get install -y --no-install-recommends \
+               gdb \
+               libosmocore-dbg libosmo-abis-dbg libosmo-netif-dbg libosmo-sigtran-dbg osmo-msc-dbg && \
+               apt-get clean

In same Dockerfile file, modify configure to build with debug symbols enabled and other interesting options, such as --enable-sanitize:

-       ./configure --enable-smpp --enable-iu && \
+       export CPPFLAGS="-g -O0 -fno-omit-frame-pointer" && \
+       export CFLAGS="-g -O0 -fno-omit-frame-pointer" && \
+       export CXXFLAGS="-g -O0 -fno-omit-frame-pointer" && \
+       ./configure --enable-smpp --enable-iu --enable-sanitize && \

Finally open the script you use to run the program (for instance ttcn3-$program-master/jenkins.sh), and modify it to launch the process using gdb, and to print a full backtrace when control returns to gdb (when the process crashes):

-/bin/sh -c "osmo-msc -c /data/osmo-msc.cfg >>/data/osmo-msc.log 2>&1"
+/bin/sh -c "gdb -ex 'run' -ex 'bt full' --arg osmo-msc -c /data/osmo-msc.cfg >>/data/osmo-msc.log 2>&1"

See also