Change in docker-playground[master]: Remove top-level Makefile, explain why in README

This is merely a historical archive of years 2008-2021, before the migration to mailman3.

A maintained and still updated list archive can be found at https://lists.osmocom.org/hyperkitty/list/gerrit-log@lists.osmocom.org/.

Harald Welte gerrit-no-reply at lists.osmocom.org
Fri Oct 26 10:35:47 UTC 2018


Harald Welte has submitted this change and it was merged. ( https://gerrit.osmocom.org/11369 )

Change subject: Remove top-level Makefile, explain why in README
......................................................................

Remove top-level Makefile, explain why in README

Obsoleted by docker_images_require(). The top-level Makefile had the
following drawbacks:
* it was not maintained: many targets were missing, and some of the
  existing ones did not build anymore
* make targets have the same names as the folders, so if they are not
  listed in the Makefile, it will assume that the target has been built
  already (prone to making mistakes)

Extend README.md to describe how to run tests, container caching, how
container dependencies are resolved now and the reasoning for doing
it that way instead of using a top-level Makefile.

Related: OS#3268
Change-Id: Id18a9a7a70f85127e6f6c9447d71764018bdb4ff
---
D Makefile
M README.md
2 files changed, 69 insertions(+), 84 deletions(-)

Approvals:
  Harald Welte: Looks good to me, approved; Verified



diff --git a/Makefile b/Makefile
deleted file mode 100644
index e224274..0000000
--- a/Makefile
+++ /dev/null
@@ -1,82 +0,0 @@
-.PHONY: build
-build: debian-jessie-build osmo-ggsn-master osmo-stp-master sctp-test sigtran-tests m3ua-test sua-test debian-stretch-titan ttcn3-ggsn-test
-
-.PHONY: debian-jessie-build
-debian-jessie-build:
-	$(MAKE) -C debian-jessie-build
-
-.PHONY: debian-stretch-titan
-debian-stretch-titan:
-	$(MAKE) -C debian-stretch-titan
-
-.PHONY: osmo-bsc-master
-osmo-bsc-master: debian-jessie-build
-	$(MAKE) -C osmo-bsc-master
-
-.PHONY: osmo-bts-master
-osmo-bts-master: debian-jessie-build
-	$(MAKE) -C osmo-bts-master
-
-.PHONY: osmo-msc-master
-osmo-msc-master: debian-jessie-build
-	$(MAKE) -C osmo-msc-master
-
-.PHONY: osmo-stp-master
-osmo-stp-master: debian-jessie-build
-	$(MAKE) -C osmo-stp-master
-
-.PHONY: osmocom-bb-host-master
-osmocom-bb-host-master: debian-jessie-build
-	$(MAKE) -C osmocom-bb-host-master
-
-.PHONY: osmo-ggsn-master
-osmo-ggsn-master: debian-jessie-build
-	$(MAKE) -C osmo-ggsn-master
-
-.PHONY: osmo-hlr-master
-osmo-hlr-master: debian-jessie-build
-	$(MAKE) -C osmo-hlr-master
-
-.PHONY: ttcn3-bsc-test
-ttcn3-bsc-test: debian-stretch-titan osmo-stp-master osmo-bsc-master osmo-bts-master ttcn3-bsc-test
-	$(MAKE) -C ttcn3-bsc-test
-
-.PHONY: ttcn3-bts-test
-ttcn3-bts-test: debian-stretch-titan osmo-bsc-master osmo-bts-master osmocom-bb-host-master ttcn3-bts-test
-	$(MAKE) -C ttcn3-bts-test
-
-.PHONY: ttcn3-msc-test
-ttcn3-msc-test: debian-stretch-titan osmo-stp-master osmo-msc-master ttcn3-msc-test
-	$(MAKE) -C ttcn3-msc-test
-
-.PHONY: ttcn3-ggsn-test
-ttcn3-ggsn-test: osmo-ggsn-test
-	$(MAKE) -C ggsn-test
-
-.PHONY: ttcn3-mgw-test
-ttcn3-mgw-test: debian-stretch-titan osmo-mgw-master
-	$(MAKE) -C ttcn3-mgw-test
-
-.PHONY: ttcn3-hlr-test
-ttcn3-hlr-test: debian-stretch-titan osmo-hlr-master
-	$(MAKE) -C ttcn3-hlr-test
-
-.PHONY: sctp-test
-sctp-test: debian-jessie-build
-	$(MAKE) -C sctp-test
-
-.PHONY: sigtran-tests
-sigtran-tests: debian-jessie-build
-	$(MAKE) -C sigtran-tests
-
-.PHONY: sua-test
-sua-test: osmo-stp-master
-	$(MAKE) -C sua-test
-
-.PHONY: m3ua-test
-m3ua-test: osmo-stp-master sigtran-tests
-	$(MAKE) -C m3ua-test
-
-.PHONY: gr-gsm-master
-gr-gsm-master:
-	$(MAKE) -C gr-gsm-master
diff --git a/README.md b/README.md
index bb354c0..adb6420 100644
--- a/README.md
+++ b/README.md
@@ -5,5 +5,72 @@
 containers + related stacks around Osmocom.   So far, the main focus is
 test automation.
 
-See http://laforge.gnumonks.org/blog/20170503-docker-overhyped/ for
-related rambling on why this doesn't work as well as one would want.
+## 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.
+* `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-jessie-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`:
+
+```shell
+. ../jenkins-common.sh
+IMAGE_SUFFIX="${IMAGE_SUFFIX:-master}"
+docker_images_require \
+	"debian-jessie-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](https://osmocom.org/issues/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](http://laforge.gnumonks.org/blog/20170503-docker-overhyped/)
+  for related rambling on why this doesn't work as well as one would
+  want.
+* [Osmocom wiki: Titan TTCN3 Testsuites](https://osmocom.org/projects/cellular-infrastructure/wiki/Titan_TTCN3_Testsuites)

-- 
To view, visit https://gerrit.osmocom.org/11369
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings

Gerrit-Project: docker-playground
Gerrit-Branch: master
Gerrit-MessageType: merged
Gerrit-Change-Id: Id18a9a7a70f85127e6f6c9447d71764018bdb4ff
Gerrit-Change-Number: 11369
Gerrit-PatchSet: 9
Gerrit-Owner: osmith <osmith at sysmocom.de>
Gerrit-Reviewer: Harald Welte <laforge at gnumonks.org>
Gerrit-Reviewer: osmith <osmith at sysmocom.de>
Gerrit-CC: Neels Hofmeyr <nhofmeyr at sysmocom.de>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osmocom.org/pipermail/gerrit-log/attachments/20181026/fa82374f/attachment.htm>


More information about the gerrit-log mailing list