CI/Jenkins stage 2 integration of vim-emu
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>
diff --git a/Jenkinsfile b/Jenkinsfile
new file mode 100644
index 0000000..6d81a56
--- /dev/null
+++ b/Jenkinsfile
@@ -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
index 0000000..4c9c64b
--- /dev/null
+++ b/devops-stages/stage-archive.sh
@@ -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
index 0000000..4a355e4
--- /dev/null
+++ b/devops-stages/stage-build.sh
@@ -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
index 0000000..e904dda
--- /dev/null
+++ b/devops-stages/stage-test.sh
@@ -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
+