From: peusterm Date: Wed, 25 Oct 2017 14:20:51 +0000 (+0200) Subject: CI/Jenkins stage 2 integration of vim-emu X-Git-Tag: v4.0.0~11 X-Git-Url: https://osm.etsi.org/gitweb/?a=commitdiff_plain;h=396e91e0dc05304d524a41d5a6f48d75c2867974;p=osm%2Fvim-emu.git 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 --- 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 +