mirror of
https://gitlab.eurecom.fr/oai/openairinterface5g.git
synced 2026-07-13 04:30:28 +00:00
- all RAN code, CI code, configuration files, dockerfiles, in CSSL v1.0
- all deployment code (openshift, charts, ancillary files like shell
scripts), in MIT
- documentation in CC-BY-4.0
- exceptions might apply and are listed in NOTICE
- there is a new LICENSES folder with all licenses
- CONTRIBUTIONS.md has been updated accordingly
For automated changes based on OAI PL v1.1:
perl -i~ -0pe 's/\/\*.*Licensed to the OpenAirInterface.*openairinterface.org\n#?/\/*\n * SPDX-License-Identifier: LicenseRef-CSSL-1.0\n/s' **/*.{c,h,cpp}
perl -i~ -0pe 's/\/\*.*Licensed to the OpenAirInterface.*openairinterface.org\n#?/\/*\n * SPDX-License-Identifier: LicenseRef-CSSL-1.0\n/s' **/*.ts
perl -i~ -0pe 's/<!--.*Licensed to the OpenAirInterface.*openairinterface.org\n.*-->/<!-- SPDX-License-Identifier: LicenseRef-CSSL-1.0 -->/s' **/*.xml
The rest (cmake, files with missing license, cmake) manually.
109 lines
4.6 KiB
Groovy
109 lines
4.6 KiB
Groovy
#!/bin/groovy
|
|
/*
|
|
* SPDX-License-Identifier: LicenseRef-CSSL-1.0
|
|
*/
|
|
|
|
// Location of the python executor node shall be in the same subnet as the others servers
|
|
def nodeExecutor = params.nodeExecutor
|
|
|
|
// Name of the resource
|
|
def lockResources = []
|
|
if (params.LockResources != null && params.LockResources.trim().length() > 0)
|
|
params.LockResources.trim().split(",").each{lockResources += [resource: it.trim()]}
|
|
|
|
// Docker Hub account to push to
|
|
def DH_Account = "oaisoftwarealliance"
|
|
|
|
// internal registry to use
|
|
def OAI_Registry = "gracehopper3-oai.sboai.cs.eurecom.fr"
|
|
|
|
pipeline {
|
|
agent {
|
|
label nodeExecutor
|
|
}
|
|
options {
|
|
ansiColor('xterm')
|
|
lock(extra: lockResources)
|
|
}
|
|
stages {
|
|
stage ("Verify Parameters") {
|
|
steps {
|
|
script {
|
|
echo '\u2705 \u001B[32mVerify Parameters\u001B[0m'
|
|
def allParametersPresent = true
|
|
|
|
// It is already to late to check it
|
|
if (params.nodeExecutor != null) {
|
|
echo "Docker Push executor node : ${nodeExecutor}"
|
|
}
|
|
if (params.LockResources == null) {
|
|
echo "no LockResources given"
|
|
allParametersPresent = false
|
|
}
|
|
}
|
|
}
|
|
}
|
|
stage ("Push to DockerHub") {
|
|
steps {
|
|
script {
|
|
WEEK_REF = sh returnStdout: true, script: 'date +"%Y.w%V"'
|
|
WEEK_REF = WEEK_REF.trim()
|
|
WEEK_TAG = sh returnStdout: true, script: 'python3 ./ci-scripts/provideUniqueImageTag.py --start_tag ' + WEEK_REF
|
|
WEEK_TAG = WEEK_TAG.trim()
|
|
if ((params.forceTag != null) && (params.tagToUse != null)) {
|
|
if (params.forceTag) {
|
|
WEEK_TAG = params.tagToUse
|
|
echo "Forced Tag is ${WEEK_TAG}"
|
|
}
|
|
}
|
|
WEEK_SHA = sh returnStdout: true, script: 'git log -n1 --pretty=format:"%h" origin/develop | cut -c 1-8'
|
|
WEEK_SHA = WEEK_SHA.trim()
|
|
|
|
withCredentials([
|
|
[$class: 'UsernamePasswordMultiBinding', credentialsId: "${params.DH_Credentials}", usernameVariable: 'DH_Username', passwordVariable: 'DH_Password']
|
|
]) {
|
|
def listOfImages = ["oai-enb", "oai-gnb", "oai-lte-ue", "oai-nr-ue", "oai-nr-cuup", "oai-gnb-fhi72"]
|
|
// Logging in on both registries
|
|
sh "docker login -u ${DH_Username} -p ${DH_Password} > /dev/null 2>&1"
|
|
sh "docker login -u oaicicd -p oaicicd ${OAI_Registry} > /dev/null 2>&1"
|
|
listOfImages.eachWithIndex { item, iindex ->
|
|
if (["oai-gnb", "oai-nr-ue", "oai-nr-cuup"].contains(item)) {
|
|
// For images built on AMD64 and ARMv8 Jetson
|
|
echo "Pushing image '${item}' for both AMD64 and ARM64 architectures with tags: ${WEEK_TAG} and develop"
|
|
sh "docker rmi ${DH_Account}/${item}:${WEEK_TAG} ${DH_Account}/${item}:develop || true"
|
|
sh "docker buildx imagetools create --tag ${DH_Account}/${item}:${WEEK_TAG} ${OAI_Registry}/${item}:armv8_develop-${WEEK_SHA} ${OAI_Registry}/${item}:develop-${WEEK_SHA}"
|
|
sh "docker buildx imagetools create --tag ${DH_Account}/${item}:develop ${OAI_Registry}/${item}:armv8_develop-${WEEK_SHA} ${OAI_Registry}/${item}:develop-${WEEK_SHA}"
|
|
} else {
|
|
sh "docker pull --quiet ${OAI_Registry}/${item}:develop-${WEEK_SHA}"
|
|
sh "docker image tag ${OAI_Registry}/${item}:develop-${WEEK_SHA} ${DH_Account}/${item}:develop"
|
|
sh "docker image tag ${OAI_Registry}/${item}:develop-${WEEK_SHA} ${DH_Account}/${item}:${WEEK_TAG}"
|
|
sh "docker push --quiet ${DH_Account}/${item}:develop"
|
|
sh "docker push --quiet ${DH_Account}/${item}:${WEEK_TAG}"
|
|
}
|
|
sh "docker rmi ${DH_Account}/${item}:${WEEK_TAG} ${DH_Account}/${item}:develop ${OAI_Registry}/${item}:develop-${WEEK_SHA} || true"
|
|
}
|
|
// Proxy is not following the same pattern.
|
|
sh "docker image tag proxy:develop ${DH_Account}/proxy:develop"
|
|
sh "docker image tag proxy:develop ${DH_Account}/proxy:${WEEK_TAG}"
|
|
sh "docker push --quiet ${DH_Account}/proxy:develop"
|
|
sh "docker push --quiet ${DH_Account}/proxy:${WEEK_TAG}"
|
|
sh "docker rmi ${DH_Account}/proxy:develop ${DH_Account}/proxy:${WEEK_TAG}"
|
|
// Logging out on both registries
|
|
sh "docker logout ${OAI_Registry} > /dev/null 2>&1"
|
|
sh "docker logout > /dev/null 2>&1"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
post {
|
|
always {
|
|
script {
|
|
sh "docker logout ${OAI_Registry} > /dev/null 2>&1"
|
|
sh "docker logout > /dev/null 2>&1"
|
|
echo "End of Registry Push"
|
|
}
|
|
}
|
|
}
|
|
}
|