diff --git a/ci-scripts/Jenkinsfile-GitLab-Container b/ci-scripts/Jenkinsfile-GitLab-Container index b0151a5ed10bc93b6059260a59f91a2c41f8cee1..3ad376f3da4b60ac4de36783874574b9436c1846 100644 --- a/ci-scripts/Jenkinsfile-GitLab-Container +++ b/ci-scripts/Jenkinsfile-GitLab-Container @@ -27,6 +27,7 @@ def nodeExecutor = params.nodeExecutor def doBuild = true def do4Gtest = false def do5Gtest = false +def do5GUeTest = false // def gitCommitAuthorEmailAddr @@ -64,17 +65,24 @@ pipeline { message += " - ~BUILD-ONLY (execute only build stages)\n" message += " - ~4G-LTE (perform 4G tests)\n" message += " - ~5G-NR (perform 5G tests)\n" - message += " - ~CI (perform both 4G and 5G tests)\n\n" + message += " - ~CI (perform both 4G and 5G tests)\n" + message += " - ~nrUE (perform only 5G-UE related tests including physims excluding LDPC tests)\n\n" message += "Not performing CI due to lack of labels" addGitLabMRComment comment: message error('Not performing CI due to lack of labels') } else if (LABEL_CHECK == 'FULL') { do4Gtest = true do5Gtest = true + do5GUeTest = true } else if (LABEL_CHECK == "SHORTEN-4G") { do4Gtest = true } else if (LABEL_CHECK == 'SHORTEN-5G') { do5Gtest = true + } else if (LABEL_CHECK == 'SHORTEN-5G-UE') { + do5GUeTest = true + } else if (LABEL_CHECK == 'SHORTEN-4G-5G-UE') { + do4Gtest = true + do5GUeTest = true } else if (LABEL_CHECK == 'documentation') { doBuild = false } else { @@ -217,7 +225,7 @@ pipeline { when { expression {doBuild} } parallel { stage ("PhySim-Cluster") { - when { expression {do4Gtest || do5Gtest} } + when { expression {do4Gtest || do5Gtest || do5GUeTest} } steps { script { triggerSlaveJob ('RAN-PhySim-Cluster', 'PhySim-Cluster') @@ -263,7 +271,7 @@ pipeline { } } stage ("RF-Sim-Test-5G") { - when { expression {do5Gtest} } + when { expression {do5Gtest || do5GUeTest} } steps { script { triggerSlaveJob ('RAN-RF-Sim-Test-5G', 'RF-Sim-Test-5G') @@ -286,7 +294,7 @@ pipeline { } } stage ("OAI-FLEXRIC-RAN-Integration-Test") { - when { expression {do5Gtest} } + when { expression {do5Gtest || do5GUeTest} } steps { script { triggerSlaveJob ('OAI-FLEXRIC-RAN-Integration-Test', 'OAI-FLEXRIC-RAN-Integration-Test') @@ -609,7 +617,7 @@ pipeline { } } stage ("SA-OAIUE-CN5G") { - when { expression {do5Gtest} } + when { expression {do5Gtest || do5GUeTest} } steps { script { triggerSlaveJob ('RAN-SA-OAIUE-CN5G', 'SA-OAIUE-CN5G') diff --git a/ci-scripts/checkGitLabMergeRequestLabels.sh b/ci-scripts/checkGitLabMergeRequestLabels.sh index a3665cc44111d2b4d467cda5b1fcd225e17a201c..16a3b3874fc042428733eb2b04bf3497c12aca0f 100755 --- a/ci-scripts/checkGitLabMergeRequestLabels.sh +++ b/ci-scripts/checkGitLabMergeRequestLabels.sh @@ -78,9 +78,10 @@ IS_MR_BUILD_ONLY=`echo $LABELS | grep -c BUILD-ONLY` IS_MR_CI=`echo $LABELS | grep -c CI` IS_MR_4G=`echo $LABELS | grep -c 4G-LTE` IS_MR_5G=`echo $LABELS | grep -c 5G-NR` +IS_MR_5G_UE=`echo $LABELS | grep -c nrUE` # none is present! No CI -if [ $IS_MR_BUILD_ONLY -eq 0 ] && [ $IS_MR_CI -eq 0 ] && [ $IS_MR_4G -eq 0 ] && [ $IS_MR_5G -eq 0 ] && [ $IS_MR_DOCUMENTATION -eq 0 ] +if [ $IS_MR_BUILD_ONLY -eq 0 ] && [ $IS_MR_CI -eq 0 ] && [ $IS_MR_4G -eq 0 ] && [ $IS_MR_5G -eq 0 ] && [ $IS_MR_DOCUMENTATION -eq 0 ] && [ $IS_MR_5G_UE -eq 0 ] then echo "NONE" exit 0 @@ -93,6 +94,12 @@ then exit 0 fi +if [ $IS_MR_5G_UE -eq 1 ] && [ $IS_MR_4G -eq 1 ] +then + echo "SHORTEN-4G-5G-UE" + exit 0 +fi + # 4G is present: run only 4G if [ $IS_MR_4G -eq 1 ] then @@ -107,6 +114,12 @@ then exit 0 fi +if [ $IS_MR_5G_UE -eq 1 ] +then + echo "SHORTEN-5G-UE" + exit 0 +fi + # BUILD-ONLY is present: only build stages if [ $IS_MR_BUILD_ONLY -eq 1 ] then diff --git a/doc/TESTBenches.md b/doc/TESTBenches.md index 9a137ddd1ae8bc57a90c104100bfe4543cd0f17f..07828528435aac5e17baf3cbafb2e3a4fbddc1ab 100644 --- a/doc/TESTBenches.md +++ b/doc/TESTBenches.md @@ -78,7 +78,7 @@ Note: The available resources, and their current usage, is indicated here: ### [RAN-Container-Parent](https://jenkins-oai.eurecom.fr/job/RAN-Container-Parent/) **Purpose**: automatically triggered tests on MR creation or push, from Gitlab -Webhook ~documentation ~BUILD-ONLY ~4G-LTE ~5G-NR +Webhook ~documentation ~BUILD-ONLY ~4G-LTE ~5G-NR ~nrUE This pipeline has basically two main stages, as follows. For the image build, please also refer to the [dedicated documentation](../docker/README.md) for @@ -87,16 +87,16 @@ information on how the images are built. #### Image Build pipelines - [RAN-ARM-Cross-Compile-Builder](https://jenkins-oai.eurecom.fr/job/RAN-ARM-Cross-Compile-Builder/) - ~BUILD-ONLY ~4G-LTE ~5G-NR + ~BUILD-ONLY ~4G-LTE ~5G-NR ~nrUE - orion: Cross-compilation from Intel to ARM - base image from `Dockerfile.base.ubuntu22.cross-arm64` - build image from `Dockerfile.build.ubuntu22.cross-arm64` (no target images) - [RAN-cppcheck](https://jenkins-oai.eurecom.fr/job/RAN-cppcheck/) - ~BUILD-ONLY ~4G-LTE ~5G-NR + ~BUILD-ONLY ~4G-LTE ~5G-NR ~nrUE - bellatrix - performs static code analysis, currently not actively enforced - [RAN-RHEL8-Cluster-Image-Builder](https://jenkins-oai.eurecom.fr/job/RAN-RHEL8-Cluster-Image-Builder/) - ~BUILD-ONLY ~4G-LTE ~5G-NR + ~BUILD-ONLY ~4G-LTE ~5G-NR ~nrUE - cluster (`Asterix-OC-oaicicd-session` resource): RHEL image build using the OpenShift Cluster (using gcc/clang) - base image from `Dockerfile.build.rhel9` - build image from `Dockerfile.build.rhel9`, followed by @@ -110,7 +110,7 @@ information on how the images are built. image) - build image from `Dockerfile.clang.rhel9` (compilation only, artifacts not used currently) - [RAN-Ubuntu18-Image-Builder](https://jenkins-oai.eurecom.fr/job/RAN-Ubuntu18-Image-Builder/) - ~BUILD-ONLY ~4G-LTE ~5G-NR + ~BUILD-ONLY ~4G-LTE ~5G-NR ~nrUE - run formatting check from `ci-scripts/docker/Dockerfile.formatting.bionic` - obelix: Ubuntu 22 image build using docker (Note: builds U22 images while pipeline is named U18!) - base image from `Dockerfile.base.ubuntu22` @@ -128,7 +128,7 @@ information on how the images are built. - [OAI-CN5G-COTS-UE-Test](https://jenkins-oai.eurecom.fr/job/OAI-CN5G-COTS-UE-Test/) ~5G-NR - using 5GC bench (resources `CI-Cetautomatix-OC-oaicicd-session`, `CI-Dogmatix-CN5G-gNB`): Attach/Detach of UE with multiple PDU sessions -- [OAI-FLEXRIC-RAN-Integration-Test](https://jenkins-oai.eurecom.fr/job/OAI-FLEXRIC-RAN-Integration-Test/) ~5G-NR +- [OAI-FLEXRIC-RAN-Integration-Test](https://jenkins-oai.eurecom.fr/job/OAI-FLEXRIC-RAN-Integration-Test/) ~5G-NR ~nrUE - selfix (gNB, nrUE, OAI 5GC, FlexRIC) - uses RFsimulator, tests FlexRIC/E2 interface and xApps - [RAN-gNB-N300-Timing-Phytest-LDPC](https://jenkins-oai.eurecom.fr/view/RAN/job/RAN-gNB-N300-Timing-Phytest-LDPC/) @@ -160,7 +160,7 @@ information on how the images are built. - nepes + B200 (eNB), ofqot + B200 (gNB), idefix + Quectel, nepes w/ ltebox - basic NSA test - [RAN-PhySim-Cluster](https://jenkins-oai.eurecom.fr/job/RAN-PhySim-Cluster/) - ~4G-LTE ~5G-NR + ~4G-LTE ~5G-NR ~nrUE - cluster (`Asterix-OC-oaicicd-session` resource), tests in OpenShift Cluster - unitary simulators (`nr_dlsim`, etc.) - see [`./physical-simulators.md`](./physical-simulators.md) for an overview @@ -169,7 +169,7 @@ information on how the images are built. - cacofonix (eNB, lteUE, OAI EPC) - uses RFsimulator, for FDD 5, 10, 20MHz with core, 5MHz noS1 - [RAN-RF-Sim-Test-5G](https://jenkins-oai.eurecom.fr/job/RAN-RF-Sim-Test-5G/) - ~5G-NR + ~5G-NR ~nrUE - cacofonix (gNB, nrUE, OAI 5GC) - uses RFsimulator, TDD 40MHz, FDD 40MHz, F1 split - [RAN-SA-AW2S-CN5G](https://jenkins-oai.eurecom.fr/job/RAN-SA-AW2S-CN5G/) @@ -182,7 +182,7 @@ information on how the images are built. - ofqot + B200, idefix + Quectel, nepes w/ sabox - basic SA test (20 MHz TDD), F1, reestablishment, ... - [RAN-SA-OAIUE-CN5G](https://jenkins-oai.eurecom.fr/job/RAN-SA-OAIUE-CN5G/) - ~5G-NR + ~5G-NR ~nrUE - 5G-NR SA test setup: gNB on avra + N310, OAIUE on caracal + N310, OAI CN5G - OpenShift cluster for CN deployment and container images for gNB and UE deployment - [RAN-SA-AERIAL-CN5G](https://jenkins-oai.eurecom.fr/job/RAN-SA-AERIAL-CN5G/)