pipeline {
agent { label 'pool' }
- options { disableConcurrentBuilds() }
+ // options { disableConcurrentBuilds() }
parameters {
// Core Gerrit / multibranch inputs
string(name: 'GERRIT_BRANCH', defaultValue: env.BRANCH_NAME ?: 'master', description: '')
environment {
MDG = "${params.GERRIT_PROJECT?.contains('/') ? params.GERRIT_PROJECT.split('/')[1] : params.GERRIT_PROJECT}"
CONTAINER_NAME = "${params.GERRIT_PROJECT}-${params.GERRIT_BRANCH}".toLowerCase()
- TEST_IMAGE = 'overdrive3000/tox-osm:v1.6'
+ TEST_IMAGE = 'opensourcemano/devops:19.0'
DOCKER_REGISTRY = 'osm.etsi.org:5050/devops/cicd/'
}
stages {
steps {
script {
// Use shared test image from registry; no local build needed
- sh "docker pull ${env.TEST_IMAGE} || true"
+ sh "docker pull ${env.DOCKER_REGISTRY}${env.TEST_IMAGE} || true"
}
}
}
stage('Helm Tests') {
sh """
docker run --rm ${common} \
- ${env.TEST_IMAGE} \
+ ${env.DOCKER_REGISTRY}${env.TEST_IMAGE} \
/tests/devops-stages/stage-test.sh
"""
if (fileExists('coverage.xml')) { cobertura coberturaReportFile: 'coverage.xml' }
sh 'mkdir -p changelog'
sh """
docker run --rm ${common} \
- ${env.TEST_IMAGE} \
- /bin/sh -lc 'devops/tools/generatechangelog-pipeline.sh > /tests/changelog/changelog-${MDG}.html'
+ ${env.DOCKER_REGISTRY}${env.TEST_IMAGE} \
+ /bin/sh -lc 'cd /tests; tools/generatechangelog-pipeline.sh > changelog/changelog-${MDG}.html'
"""
}
}
}
}
- stage('Build & Push Image') {
- when { expression { return params.DO_DOCKERPUSH } }
- steps {
- script {
- def moduleName = (env.MDG ?: DEFAULT_MODULE_NAME).toLowerCase()
-
- if (!params.GERRIT_BRANCH) {
- error 'GERRIT_BRANCH is required to tag the Docker image'
- }
- def sanitizedBranchName = params.GERRIT_BRANCH
- .toLowerCase()
- .replaceAll('[^a-z0-9._-]', '-')
- def baseTagPrefix = "osm-${sanitizedBranchName}"
- def buildNumber = env.BUILD_NUMBER ?: '0'
- def isMergeJob = env.JOB_NAME?.contains('merge')
- // Remove promotion logic from this stage
- def moduleTags = []
- if (isMergeJob) {
- moduleTags << "${baseTagPrefix}-merge"
- } else {
- moduleTags << "${baseTagPrefix}-patchset-${buildNumber}"
- }
-
- def imageName = params.IMAGENAME ?: "opensourcemano/${moduleName}"
- def primaryLocalImage = "${imageName}:${moduleTags[0]}"
-
- withCredentials([[$class: 'UsernamePasswordMultiBinding', credentialsId: 'gitlab-registry',
- usernameVariable: 'USERNAME', passwordVariable: 'PASSWORD']]) {
- sh """
- docker build -f Dockerfile -t ${primaryLocalImage} .
- """
- sh "docker login ${env.DOCKER_REGISTRY.split('/')[0]} -u ${USERNAME} -p ${PASSWORD}"
- // Push build-scope tag(s) only. Promotion happens after tests.
- moduleTags.each { tag ->
- def localImage = "${imageName}:${tag}"
- def remoteImage = "${env.DOCKER_REGISTRY}${imageName}:${tag}"
- sh "docker tag ${localImage} ${remoteImage}"
- sh "docker push ${remoteImage}"
- }
- // Stash the built image id for later promotion without rebuild
- env.BUILT_IMAGE = primaryLocalImage
- env.BUILT_TAG = moduleTags[0]
- }
- }
- }
- }
-
stage('E2E Test (robot)') {
when { expression { return params.DO_ROBOT && !env.JOB_NAME.contains('merge') } }
steps {
string(name: 'OPENSTACK_BASE_IMAGE', value: params.OPENSTACK_BASE_IMAGE),
string(name: 'OPENSTACK_OSM_FLAVOR', value: params.OPENSTACK_OSM_FLAVOR),
string(name: 'MODULE_NAME', value: params.MODULE_NAME ?: 'devops'),
- string(name: 'CONTAINER_NAME', value: env.BUILT_TAG),
+ string(name: 'CONTAINER_NAME', value: "not-used-from-devops-pipeline"),
booleanParam(name: 'DO_ROBOT', value: params.DO_ROBOT),
booleanParam(name: 'DO_INSTALL', value: params.DO_INSTALL),
booleanParam(name: 'SAVE_CONTAINER_ON_FAIL', value: params.SAVE_CONTAINER_ON_FAIL),