CI/Jenkins stage 2 integration of vim-emu 25/5625/2
authorpeusterm <manuel.peuster@uni-paderborn.de>
Wed, 25 Oct 2017 14:20:51 +0000 (16:20 +0200)
committerpeusterm <manuel.peuster@uni-paderborn.de>
Thu, 26 Oct 2017 07:11:40 +0000 (09:11 +0200)
Added Jenkinsfile and stage-test.sh to trigger vim-emu's
unittests using Jenkins. The stage-build script is a placeholder
since the installation is done during the container build
process (see Dockerfile). stage-archive is not yet done.

Requires the following change in the devops repository
to allow privileged container execution in stage_2:
https://osm.etsi.org/gerrit/#/c/5624/

Change-Id: Ib140294b68b70b03e66f0f5d2bc11cd19d8777ca
Signed-off-by: peusterm <manuel.peuster@uni-paderborn.de>
Jenkinsfile [new file with mode: 0644]
devops-stages/stage-archive.sh [new file with mode: 0755]
devops-stages/stage-build.sh [new file with mode: 0755]
devops-stages/stage-test.sh [new file with mode: 0755]

diff --git a/Jenkinsfile b/Jenkinsfile
new file mode 100644 (file)
index 0000000..6d81a56
--- /dev/null
@@ -0,0 +1,37 @@
+properties([
+    parameters([
+        string(defaultValue: env.BRANCH_NAME, description: '', name: 'GERRIT_BRANCH'),
+        string(defaultValue: 'osm/vim-emu', description: '', name: 'GERRIT_PROJECT'),
+        string(defaultValue: env.GERRIT_REFSPEC, description: '', name: 'GERRIT_REFSPEC'),
+        string(defaultValue: env.GERRIT_PATCHSET_REVISION, description: '', name: 'GERRIT_PATCHSET_REVISION'),
+        string(defaultValue: 'https://osm.etsi.org/gerrit', description: '', name: 'PROJECT_URL_PREFIX'),
+        booleanParam(defaultValue: false, description: '', name: 'TEST_INSTALL'),
+        string(defaultValue: 'artifactory-osm', description: '', name: 'ARTIFACTORY_SERVER'),
+    ])
+])
+
+def devops_checkout() {
+    dir('devops') {
+        git url: "${PROJECT_URL_PREFIX}/osm/devops", branch: params.GERRIT_BRANCH
+    }
+}
+
+node('docker') {
+    checkout scm
+    devops_checkout()
+
+    // vim-emu: We need to use privileged mode, docker.sock, and host pids for the container
+    // to test the emulator. Also needs -u 0:0 (root user inside container).
+    docker_args = "--privileged --pid='host' -v /var/run/docker.sock:/var/run/docker.sock -u 0:0"
+
+    ci_helper = load "devops/jenkins/ci-pipelines/ci_stage_2.groovy"
+    ci_helper.ci_pipeline( 'vim-emu',
+                           params.PROJECT_URL_PREFIX,
+                           params.GERRIT_PROJECT,
+                           params.GERRIT_BRANCH,
+                           params.GERRIT_REFSPEC,
+                           params.GERRIT_PATCHSET_REVISION,
+                           params.TEST_INSTALL,
+                           params.ARTIFACTORY_SERVER,
+                           docker_args)
+}
diff --git a/devops-stages/stage-archive.sh b/devops-stages/stage-archive.sh
new file mode 100755 (executable)
index 0000000..4c9c64b
--- /dev/null
@@ -0,0 +1,2 @@
+#!/bin/bash
+echo "vim-emu stage archive: Not yet implemented!"
diff --git a/devops-stages/stage-build.sh b/devops-stages/stage-build.sh
new file mode 100755 (executable)
index 0000000..4a355e4
--- /dev/null
@@ -0,0 +1,2 @@
+#!/bin/bash
+echo "vim-emu stage build: Skipped. Installation was already done during container build procedure."
diff --git a/devops-stages/stage-test.sh b/devops-stages/stage-test.sh
new file mode 100755 (executable)
index 0000000..e904dda
--- /dev/null
@@ -0,0 +1,19 @@
+#!/bin/bash
+#
+# Runs the unittests of "vim-emu". Script needs to be executed inside
+# the vim-emu Docker container by user "root". It requires the container
+# to be started in privileged mode.
+#
+set -e
+echo "vim-emu stage-test"
+# trigger ovs setup since container entrypoint is overwritten by Jenkins
+service openvswitch-switch start
+# ensure the Docker image used during the unittests is there
+docker pull 'ubuntu:trusty'
+# debugging
+echo "Tests executed inside: $(hostname)"
+echo "Tests executed by user: $(whoami)"
+# trigger the tests
+cd /son-emu/
+py.test -v src/emuvim/test/unittests
+