Change-Id: I9171d908de03bf0de7cb7590c901c4ce0759b8c0 |
||
---|---|---|
alpine-build | ||
alpine-lighttpd | ||
bind9 | ||
cgit | ||
debian-jessie-build | ||
debian-jessie-buildslave | ||
debian-jessie-buildslave-st | ||
debian-jessie-osmocom | ||
debian-repo-install-test | ||
debian-sid-build | ||
debian-stretch-build | ||
debian-stretch-build-dist | ||
debian-stretch-titan | ||
gerrit | ||
git-daemon | ||
gitolite | ||
gr-gsm-master | ||
make | ||
nplab-m3ua-test | ||
nplab-sua-test | ||
osmo-bsc-latest | ||
osmo-bsc-master | ||
osmo-bts-latest | ||
osmo-bts-master | ||
osmo-cn-latest | ||
osmo-dev-on-debian-sid | ||
osmo-gerrit-libosmo | ||
osmo-ggsn-latest | ||
osmo-ggsn-master | ||
osmo-hlr-latest | ||
osmo-hlr-master | ||
osmo-hnbgw-latest | ||
osmo-hnbgw-master | ||
osmo-mgw-latest | ||
osmo-mgw-master | ||
osmo-msc-latest | ||
osmo-msc-master | ||
osmo-nitb-master | ||
osmo-pcu-latest | ||
osmo-pcu-master | ||
osmo-sgsn-latest | ||
osmo-sgsn-master | ||
osmo-sip-latest | ||
osmo-sip-master | ||
osmo-stp-latest | ||
osmo-stp-master | ||
osmocom-bb-host-master | ||
patchwork | ||
public-inbox | ||
redmine | ||
scripts | ||
sctp-test | ||
sigtran-tests | ||
tmp | ||
ttcn3-bsc-test | ||
ttcn3-bsc-test-sccplite | ||
ttcn3-bscnat-test | ||
ttcn3-bts-test | ||
ttcn3-ggsn-test | ||
ttcn3-hlr-test | ||
ttcn3-mgw-test | ||
ttcn3-msc-test | ||
ttcn3-nitb-sysinfo | ||
ttcn3-pcu-test | ||
ttcn3-pcu-test-sns | ||
ttcn3-sgsn-test | ||
ttcn3-sip-test | ||
ubuntu-zesty-build | ||
.gitignore | ||
.gitreview | ||
README.md | ||
Release.key | ||
jenkins-common.sh | ||
osmo-bisect.sh |
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 ismaster
, set this tolatest
to test the last stable releases.OSMO_TTCN3_BRANCH
: osmo-ttcn3-hacks.git branch, which will be used when building attcn3-*
docker image. Defaults tomaster
.NO_DOCKER_IMAGE_BUILD
: when set to1
, 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
.
See also
- Overhyped Docker for related rambling on why this doesn't work as well as one would want.
- Osmocom wiki: Titan TTCN3 Testsuites