blob: de3bcc9f37451362650057f94bed586fedc3a6f8 [file] [log] [blame]
properties([
parameters([
string(defaultValue: env.GERRIT_BRANCH, description: '', name: 'GERRIT_BRANCH'),
string(defaultValue: env.GERRIT_PROJECT, description: '', name: 'GERRIT_PROJECT'),
string(defaultValue: env.GERRIT_REFSPEC, description: '', name: 'GERRIT_REFSPEC'),
string(defaultValue: env.GERRIT_PATCHSET_REVISION, description: '', name: 'GERRIT_PATCHSET_REVISION'),
])
])
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 {
mdg = Get_MDG("${GERRIT_PROJECT}")
println("MDG is ${mdg}")
if ( env.GERRIT_EVENT_TYPE != null ) {
// pipeline running from gerrit trigger.
// kickoff the downstream multibranch pipeline
def downstream_params = [
string(name: 'GERRIT_BRANCH', value: GERRIT_BRANCH),
string(name: 'GERRIT_PROJECT', value: GERRIT_PROJECT),
string(name: 'GERRIT_REFSPEC', value: GERRIT_REFSPEC),
string(name: 'GERRIT_PATCHSET_REVISION', value: GERRIT_PATCHSET_REVISION),
]
result = build job: "${mdg}/${GERRIT_BRANCH}", parameters: downstream_params, propagate: true
if (result.getResult() != 'SUCCESS') {
project = result.getProjectName()
build = result.getNumber()
error("${project} build ${build} failed")
}
}
else {
stage('Prepare') {
sh 'env'
devops_checkout()
}
stage('Checkout') {
project_checkout()
}
container_name = "${GERRIT_PROJECT}-${GERRIT_BRANCH}"
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
}
}
}
}