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
        }
    }
}
