From 52de972923dc2a6ecb69ba6557e141067edc0f85 Mon Sep 17 00:00:00 2001 From: Mike Marchetti Date: Thu, 22 Jun 2017 15:18:23 -0400 Subject: [PATCH] add pipeline stages Signed-off-by: Mike Marchetti --- Dockerfile | 3 ++ Jenkinsfile | 65 +++++++++++++++++++++++++++++++--- devops-stages/stage-archive.sh | 0 devops-stages/stage-build.sh | 0 devops-stages/stage-test.sh | 0 5 files changed, 64 insertions(+), 4 deletions(-) create mode 100644 Dockerfile create mode 100755 devops-stages/stage-archive.sh create mode 100755 devops-stages/stage-build.sh create mode 100755 devops-stages/stage-test.sh diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..ff46866 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,3 @@ +FROM ubuntu:16.04 + +RUN apt-get update && apt-get -y install git make python diff --git a/Jenkinsfile b/Jenkinsfile index 92a5046..e30c94b 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -1,7 +1,64 @@ -pipeline { - agent any - stages { - stage("test") { +def Get_MDG(project) { + // split the project. + def values = project.split('/') + if ( values.size() > 1 ) { + return values[1] + } + // no prefix, likely just the project name then + return project +} + +def project_checkout() { + // checkout the project + git url: "https://osm.etsi.org/gerrit/${GERRIT_PROJECT}" + + sh "git fetch origin ${GERRIT_REFSPEC}" + if (GERRIT_PATCHSET_REVISION.size() > 0 ) { + sh "git checkout -f ${GERRIT_PATCHSET_REVISION}" + } +} + +def devops_checkout() { + dir('devops') { + git url: 'https://osm.etsi.org/gerrit/osm/devops' + } +} + +node { + stage('Prepare') { + sh 'env' + devops_checkout() + } + + stage('Checkout') { + project_checkout() + } + + container_name = "${GERRIT_PROJECT}-${GERRIT_BRANCH}" + + mdg = Get_MDG("${GERRIT_PROJECT}") + println("MDG is ${mdg}") + + stage('Docker-Build') { + sh "docker build -t ${container_name} ." + } + + withDockerContainer("${container_name}") { + stage('Docker-Setup') { + sh ''' + groupadd -o -g $(id -g) -r jenkins + useradd -o -u $(id -u) --create-home -r -g jenkins jenkins + ''' + } + stage('Test') { + sh 'devops-stages/stage-test.sh' + } + stage('Build') { + sh 'devops-stages/stage-build.sh' + } + stage('Archive') { + sh 'devops-stages/stage-archive.sh' + archiveArtifacts artifacts: "dists/**,pool/${mdg}/*.deb", fingerprint: true } } } diff --git a/devops-stages/stage-archive.sh b/devops-stages/stage-archive.sh new file mode 100755 index 0000000..e69de29 diff --git a/devops-stages/stage-build.sh b/devops-stages/stage-build.sh new file mode 100755 index 0000000..e69de29 diff --git a/devops-stages/stage-test.sh b/devops-stages/stage-test.sh new file mode 100755 index 0000000..e69de29 -- 2.17.1