<p>osmith <strong>merged</strong> this change.</p><p><a href="https://gerrit.osmocom.org/c/docker-playground/+/14779">View Change</a></p><div style="white-space:pre-wrap">Approvals:
  laforge: Looks good to me, but someone else must approve
  pespin: Looks good to me, approved
  osmith: Verified

</div><pre style="font-family: monospace,monospace; white-space: pre-wrap;">debian-repo-install-test: add docker container<br><br>Add own container with systemd, so we can (in a follow-up commit) run<br>the Osmocom systemd services in this test job. Rewrite the<br>"interactive shell" logic to support the new systemd docker container,<br>and enable it with an INTERACTIVE environment variable instead of<br>hardcoding 'interactive="true"' in the script. While at it, move the<br>Repository.key install to the Dockerfile so it works more like the other<br>docker containers we have.<br><br>Related: OS#3369<br>Change-Id: I0348f65a2ac184ba6b001e5130dfc8124e657367<br>---<br>A debian-repo-install-test/Dockerfile<br>A debian-repo-install-test/Makefile<br>R debian-repo-install-test/Release.key<br>M debian-repo-install-test/jenkins.sh<br>M debian-repo-install-test/testdata/repo-install-test.sh<br>5 files changed, 50 insertions(+), 28 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/debian-repo-install-test/Dockerfile b/debian-repo-install-test/Dockerfile</span><br><span>new file mode 100644</span><br><span>index 0000000..5448fd6</span><br><span>--- /dev/null</span><br><span>+++ b/debian-repo-install-test/Dockerfile</span><br><span>@@ -0,0 +1,12 @@</span><br><span style="color: hsl(120, 100%, 40%);">+ARG    USER</span><br><span style="color: hsl(120, 100%, 40%);">+FROM      debian:stretch</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+COPY  Release.key /tmp/Release.key</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+RUN     apt-get update && \</span><br><span style="color: hsl(120, 100%, 40%);">+   apt-get install -y --no-install-recommends \</span><br><span style="color: hsl(120, 100%, 40%);">+          aptitude \</span><br><span style="color: hsl(120, 100%, 40%);">+            gnupg \</span><br><span style="color: hsl(120, 100%, 40%);">+               systemd && \</span><br><span style="color: hsl(120, 100%, 40%);">+  apt-key add /tmp/Release.key && \</span><br><span style="color: hsl(120, 100%, 40%);">+     rm /tmp/Release.key</span><br><span>diff --git a/debian-repo-install-test/Makefile b/debian-repo-install-test/Makefile</span><br><span>new file mode 100644</span><br><span>index 0000000..8d0e10b</span><br><span>--- /dev/null</span><br><span>+++ b/debian-repo-install-test/Makefile</span><br><span>@@ -0,0 +1 @@</span><br><span style="color: hsl(120, 100%, 40%);">+include ../make/Makefile</span><br><span>diff --git a/debian-repo-install-test/testdata/Release.key b/debian-repo-install-test/Release.key</span><br><span>similarity index 100%</span><br><span>rename from debian-repo-install-test/testdata/Release.key</span><br><span>rename to debian-repo-install-test/Release.key</span><br><span>diff --git a/debian-repo-install-test/jenkins.sh b/debian-repo-install-test/jenkins.sh</span><br><span>index 9dd4565..db71bc6 100755</span><br><span>--- a/debian-repo-install-test/jenkins.sh</span><br><span>+++ b/debian-repo-install-test/jenkins.sh</span><br><span>@@ -1,18 +1,48 @@</span><br><span> #!/bin/sh</span><br><span> . ../jenkins-common.sh</span><br><span style="color: hsl(120, 100%, 40%);">+docker_images_require "debian-repo-install-test"</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-# Configuration</span><br><span> [ -z "$FEED" ] && FEED="nightly"</span><br><span style="color: hsl(0, 100%, 40%);">-interactive="false"</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# Try to run "systemctl status" 10 times, kill the container on failure</span><br><span style="color: hsl(120, 100%, 40%);">+check_if_systemd_is_running() {</span><br><span style="color: hsl(120, 100%, 40%);">+   for i in $(seq 1 10); do</span><br><span style="color: hsl(120, 100%, 40%);">+              sleep 1</span><br><span style="color: hsl(120, 100%, 40%);">+               if docker exec "$BUILD_TAG" systemctl status; then</span><br><span style="color: hsl(120, 100%, 40%);">+                  return</span><br><span style="color: hsl(120, 100%, 40%);">+                fi</span><br><span style="color: hsl(120, 100%, 40%);">+    done</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+        echo "ERROR: systemd is not running properly."</span><br><span style="color: hsl(120, 100%, 40%);">+      docker container kill "$BUILD_TAG"</span><br><span style="color: hsl(120, 100%, 40%);">+  exit 1</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span> </span><br><span> # Run the container</span><br><span style="color: hsl(0, 100%, 40%);">-extra_args=""</span><br><span style="color: hsl(0, 100%, 40%);">-[ "$interactive" = "true" ] && extra_args="-it"</span><br><span style="color: hsl(120, 100%, 40%);">+# Note that this does not output anything. For debugging, add -it and remove &.</span><br><span> docker run     --rm \</span><br><span>               -v "$PWD/testdata:/testdata:ro" \</span><br><span>          -v "$VOL_BASE_DIR:/data" \</span><br><span>                 --name "${BUILD_TAG}" \</span><br><span>            -e FEED="$FEED" \</span><br><span style="color: hsl(0, 100%, 40%);">-             $extra_args \</span><br><span style="color: hsl(0, 100%, 40%);">-           debian:stretch \</span><br><span style="color: hsl(0, 100%, 40%);">-                "/testdata/repo-install-test.sh"</span><br><span style="color: hsl(120, 100%, 40%);">+            -e container=docker \</span><br><span style="color: hsl(120, 100%, 40%);">+         --tmpfs /run \</span><br><span style="color: hsl(120, 100%, 40%);">+                --tmpfs /tmp \</span><br><span style="color: hsl(120, 100%, 40%);">+                -v /sys/fs/cgroup:/sys/fs/cgroup:ro \</span><br><span style="color: hsl(120, 100%, 40%);">+         --cap-add SYS_ADMIN \</span><br><span style="color: hsl(120, 100%, 40%);">+         "$REPO_USER/debian-repo-install-test" \</span><br><span style="color: hsl(120, 100%, 40%);">+             /lib/systemd/systemd &</span><br><span style="color: hsl(120, 100%, 40%);">+check_if_systemd_is_running</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# Run the test script</span><br><span style="color: hsl(120, 100%, 40%);">+docker exec "$BUILD_TAG" /testdata/repo-install-test.sh</span><br><span style="color: hsl(120, 100%, 40%);">+ret="$?"</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# Interactive shell</span><br><span style="color: hsl(120, 100%, 40%);">+if [ -n "$INTERACTIVE" ]; then</span><br><span style="color: hsl(120, 100%, 40%);">+      docker exec -it "$BUILD_TAG" bash</span><br><span style="color: hsl(120, 100%, 40%);">+fi</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+docker container kill "$BUILD_TAG"</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+exit $ret</span><br><span>diff --git a/debian-repo-install-test/testdata/repo-install-test.sh b/debian-repo-install-test/testdata/repo-install-test.sh</span><br><span>index f45908b..38a982f 100755</span><br><span>--- a/debian-repo-install-test/testdata/repo-install-test.sh</span><br><span>+++ b/debian-repo-install-test/testdata/repo-install-test.sh</span><br><span>@@ -12,15 +12,8 @@</span><br><span>       fi</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-install_depends() {</span><br><span style="color: hsl(0, 100%, 40%);">-  echo "Installing dependencies"</span><br><span style="color: hsl(0, 100%, 40%);">-        apt-get update</span><br><span style="color: hsl(0, 100%, 40%);">-  apt-get install -y gnupg aptitude</span><br><span style="color: hsl(0, 100%, 40%);">-}</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span> configure_osmocom_repo() {</span><br><span>     echo "Configuring Osmocom repository"</span><br><span style="color: hsl(0, 100%, 40%);">- apt-key add /testdata/Release.key</span><br><span>    echo "deb $HTTP ./" \</span><br><span>              > /etc/apt/sources.list.d/osmocom-latest.list</span><br><span>     apt-get update</span><br><span>@@ -87,21 +80,7 @@</span><br><span>          osmo-trx-usrp1</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-finish() {</span><br><span style="color: hsl(0, 100%, 40%);">-       echo "Test finished successfully!"</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-    # When docker-run is called with "-it", then stdin and a tty are available.</span><br><span style="color: hsl(0, 100%, 40%);">-   # The container will still exit when the entrypoint script (this file) is</span><br><span style="color: hsl(0, 100%, 40%);">-       # through, so in order to be able to type in commands, we execute a bash shell.</span><br><span style="color: hsl(0, 100%, 40%);">- if [ -t 0 ]; then</span><br><span style="color: hsl(0, 100%, 40%);">-               echo "Dropping to interactive shell"</span><br><span style="color: hsl(0, 100%, 40%);">-          bash</span><br><span style="color: hsl(0, 100%, 40%);">-    fi</span><br><span style="color: hsl(0, 100%, 40%);">-}</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span> check_env</span><br><span style="color: hsl(0, 100%, 40%);">-install_depends</span><br><span> configure_osmocom_repo</span><br><span> install_repo_packages</span><br><span> test_binaries</span><br><span style="color: hsl(0, 100%, 40%);">-finish</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/docker-playground/+/14779">change 14779</a>. To unsubscribe, or for help writing mail filters, visit <a href="https://gerrit.osmocom.org/settings">settings</a>.</p><div itemscope itemtype="http://schema.org/EmailMessage"><div itemscope itemprop="action" itemtype="http://schema.org/ViewAction"><link itemprop="url" href="https://gerrit.osmocom.org/c/docker-playground/+/14779"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: docker-playground </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-Change-Id: I0348f65a2ac184ba6b001e5130dfc8124e657367 </div>
<div style="display:none"> Gerrit-Change-Number: 14779 </div>
<div style="display:none"> Gerrit-PatchSet: 4 </div>
<div style="display:none"> Gerrit-Owner: osmith <osmith@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: laforge <laforge@gnumonks.org> </div>
<div style="display:none"> Gerrit-Reviewer: osmith <osmith@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: pespin <pespin@sysmocom.de> </div>
<div style="display:none"> Gerrit-MessageType: merged </div>