605 lines
33 KiB
Groovy
605 lines
33 KiB
Groovy
#!/bin/groovy
|
|
/*
|
|
* Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
|
|
* contributor license agreements. See the NOTICE file distributed with
|
|
* this work for additional information regarding copyright ownership.
|
|
* The OpenAirInterface Software Alliance licenses this file to You under
|
|
* the OAI Public License, Version 1.1 (the "License"); you may not use this file
|
|
* except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.openairinterface.org/?page_id=698
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*-------------------------------------------------------------------------------
|
|
* For more information about the OpenAirInterface (OAI) Software Alliance:
|
|
* contact@openairinterface.org
|
|
*/
|
|
|
|
// Abstraction function to send social media messages:
|
|
// like on Slack or Mattermost
|
|
def sendSocialMediaMessage(pipeChannel, pipeColor, pipeMessage) {
|
|
if (params.pipelineUsesSlack != null) {
|
|
if (params.pipelineUsesSlack) {
|
|
slackSend channel: pipeChannel, color: pipeColor, message: pipeMessage
|
|
}
|
|
}
|
|
}
|
|
|
|
def doRedHatBuild = false
|
|
def doFlexranCtrlTest = false
|
|
|
|
pipeline {
|
|
agent {
|
|
label 'bellatrix'
|
|
}
|
|
options {
|
|
disableConcurrentBuilds()
|
|
timestamps()
|
|
gitLabConnection('OAI GitLab')
|
|
gitlabBuilds(builds: ["Build eNb-USRP", "Build basic-sim", "Build phy-sim", "Build eNb-ethernet", "Build UE-ethernet", "Analysis with cppcheck", "Test phy-sim", "Test basic-sim", "Test-FDD-Band7", "Test-TDD-Band40", "Test-IF4p5-FDD-Band7", "Test-IF4p5-TDD-Band40"])
|
|
ansiColor('xterm')
|
|
}
|
|
|
|
stages {
|
|
stage ("Verify Parameters") {
|
|
steps {
|
|
script {
|
|
JOB_TIMESTAMP = sh returnStdout: true, script: 'date --utc --rfc-3339=seconds | sed -e "s#+00:00##"'
|
|
JOB_TIMESTAMP = JOB_TIMESTAMP.trim()
|
|
|
|
echo '\u2705 \u001B[32mVerify Parameters\u001B[0m'
|
|
def allParametersPresent = true
|
|
|
|
if (params.RedHatRemoteServer == null) {
|
|
allParametersPresent = false
|
|
}
|
|
if (params.RedHatRemoteCredentials == null) {
|
|
allParametersPresent = false
|
|
}
|
|
if (params.RedHatWorkingPath == null) {
|
|
allParametersPresent = false
|
|
}
|
|
if (allParametersPresent) {
|
|
echo "Performing Red Hat Build"
|
|
doRedHatBuild = true
|
|
} else {
|
|
doRedHatBuild = false
|
|
}
|
|
if (params.FlexRanRtcGitLabRepository_Credentials != null) {
|
|
doFlexranCtrlTest = true
|
|
}
|
|
if (fileExists("flexran")) {
|
|
sh "rm -Rf flexran > /dev/null 2>&1"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
stage ("Verify Guidelines") {
|
|
steps {
|
|
echo "Git URL is ${GIT_URL}"
|
|
echo "GitLab Act is ${env.gitlabActionType}"
|
|
script {
|
|
if ("MERGE".equals(env.gitlabActionType)) {
|
|
// GitLab-Jenkins plugin integration is lacking to perform the merge by itself
|
|
// Doing it manually --> it may have merge conflicts
|
|
sh "./ci-scripts/doGitLabMerge.sh --src-branch ${env.gitlabSourceBranch} --src-commit ${env.gitlabMergeRequestLastCommit} --target-branch ${env.gitlabTargetBranch} --target-commit ${GIT_COMMIT}"
|
|
sh "zip -r -qq localZip.zip ."
|
|
|
|
// Running astyle options on the list of modified files by the merge request
|
|
// For the moment, there is no fail criteria. Just a notification of number of files that do not follow
|
|
sh "./ci-scripts/checkCodingFormattingRules.sh --src-branch ${env.gitlabSourceBranch} --target-branch ${env.gitlabTargetBranch}"
|
|
def res=readFile('./oai_rules_result.txt').trim();
|
|
if ("0".equals(res)) {
|
|
def message = "OAI " + JOB_NAME + " build (" + BUILD_ID + "): All Changed files in Merge Request follow OAI Formatting Rules"
|
|
addGitLabMRComment comment: message
|
|
} else {
|
|
def message = "OAI " + JOB_NAME + " build (" + BUILD_ID + "): Some Changed files in Merge Request DO NOT follow OAI Formatting Rules"
|
|
addGitLabMRComment comment: message
|
|
}
|
|
} else {
|
|
echo "Git Branch is ${GIT_BRANCH}"
|
|
echo "Git Commit is ${GIT_COMMIT}"
|
|
|
|
sh "zip -r -qq localZip.zip ."
|
|
// Running astyle options on all C/H files in the repository
|
|
// For the moment, there is no fail criteria. Just a notification of number of files that do not follow
|
|
sh "./ci-scripts/checkCodingFormattingRules.sh"
|
|
}
|
|
if (doFlexranCtrlTest) {
|
|
sh "mkdir flexran"
|
|
dir ('flexran') {
|
|
withCredentials([
|
|
[$class: 'UsernamePasswordMultiBinding', credentialsId: "${params.FlexRanRtcGitLabRepository_Credentials}", usernameVariable: 'git_username', passwordVariable: 'git_password']
|
|
]) {
|
|
sh "git clone https://${git_username}:${git_password}@gitlab.eurecom.fr/flexran/flexran-rtc.git . > ../git_clone.log 2>&1"
|
|
}
|
|
sh "sed -i -e 's#add-apt-repository.*cleishm.*neo4j#add-apt-repository ppa:cleishm/neo4j -y#' -e 's#libneo4j-client-dev#libneo4j-client-dev -y#' tools/install_dependencies"
|
|
sh "zip -r -qq flexran.zip ."
|
|
}
|
|
}
|
|
}
|
|
}
|
|
post {
|
|
failure {
|
|
script {
|
|
def message = "OAI " + JOB_NAME + " build (" + BUILD_ID + "): Merge Conflicts -- Cannot perform CI"
|
|
addGitLabMRComment comment: message
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
stage ("Start VM -- basic-sim") {
|
|
steps {
|
|
timeout (time: 5, unit: 'MINUTES') {
|
|
sh "./ci-scripts/oai-ci-vm-tool build --workspace $WORKSPACE --variant basic-sim --job-name ${JOB_NAME} --build-id ${BUILD_ID} --daemon"
|
|
}
|
|
}
|
|
}
|
|
|
|
stage ("Start VM -- enb-usrp") {
|
|
steps {
|
|
timeout (time: 5, unit: 'MINUTES') {
|
|
sh "./ci-scripts/oai-ci-vm-tool build --workspace $WORKSPACE --variant enb-usrp --job-name ${JOB_NAME} --build-id ${BUILD_ID} --daemon"
|
|
}
|
|
}
|
|
}
|
|
|
|
stage ("Start VM -- enb-ethernet") {
|
|
steps {
|
|
timeout (time: 5, unit: 'MINUTES') {
|
|
sh "./ci-scripts/oai-ci-vm-tool build --workspace $WORKSPACE --variant enb-ethernet --job-name ${JOB_NAME} --build-id ${BUILD_ID} --daemon"
|
|
}
|
|
}
|
|
}
|
|
|
|
stage ("Start VM -- ue-ethernet") {
|
|
steps {
|
|
timeout (time: 5, unit: 'MINUTES') {
|
|
sh "./ci-scripts/oai-ci-vm-tool build --workspace $WORKSPACE --variant ue-ethernet --job-name ${JOB_NAME} --build-id ${BUILD_ID} --daemon"
|
|
}
|
|
}
|
|
}
|
|
|
|
stage ("Start VM -- L2-Sim") {
|
|
steps {
|
|
timeout (time: 5, unit: 'MINUTES') {
|
|
sh "./ci-scripts/oai-ci-vm-tool build --workspace $WORKSPACE --variant l2-sim --job-name ${JOB_NAME} --build-id ${BUILD_ID} --daemon"
|
|
}
|
|
}
|
|
}
|
|
|
|
stage ("Start VM -- phy-sim") {
|
|
steps {
|
|
timeout (time: 5, unit: 'MINUTES') {
|
|
sh "./ci-scripts/oai-ci-vm-tool build --workspace $WORKSPACE --variant phy-sim --job-name ${JOB_NAME} --build-id ${BUILD_ID} --daemon"
|
|
}
|
|
}
|
|
}
|
|
|
|
stage ("Start VM -- cppcheck") {
|
|
steps {
|
|
timeout (time: 5, unit: 'MINUTES') {
|
|
sh "./ci-scripts/oai-ci-vm-tool build --workspace $WORKSPACE --variant cppcheck --job-name ${JOB_NAME} --build-id ${BUILD_ID} --daemon"
|
|
}
|
|
}
|
|
}
|
|
|
|
stage ("Variant Builds") {
|
|
parallel {
|
|
stage ("Analysis with cppcheck") {
|
|
steps {
|
|
gitlabCommitStatus(name: "Analysis with cppcheck") {
|
|
timeout (time: 20, unit: 'MINUTES') {
|
|
sh "./ci-scripts/oai-ci-vm-tool wait --workspace $WORKSPACE --variant cppcheck --job-name ${JOB_NAME} --build-id ${BUILD_ID}"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
stage ("Build eNb-USRP") {
|
|
steps {
|
|
gitlabCommitStatus(name: "Build eNb-USRP") {
|
|
timeout (time: 20, unit: 'MINUTES') {
|
|
sh "./ci-scripts/oai-ci-vm-tool wait --workspace $WORKSPACE --variant enb-usrp --job-name ${JOB_NAME} --build-id ${BUILD_ID}"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
stage ("Build basic simulator") {
|
|
steps {
|
|
gitlabCommitStatus(name: "Build basic-sim") {
|
|
timeout (time: 20, unit: 'MINUTES') {
|
|
sh "./ci-scripts/oai-ci-vm-tool wait --workspace $WORKSPACE --variant basic-sim --job-name ${JOB_NAME} --build-id ${BUILD_ID} --keep-vm-alive"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
stage ("Build eNb-ethernet") {
|
|
steps {
|
|
gitlabCommitStatus(name: "Build eNb-ethernet") {
|
|
timeout (time: 20, unit: 'MINUTES') {
|
|
sh "./ci-scripts/oai-ci-vm-tool wait --workspace $WORKSPACE --variant enb-ethernet --job-name ${JOB_NAME} --build-id ${BUILD_ID}"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
stage ("Build UE-ethernet") {
|
|
steps {
|
|
gitlabCommitStatus(name: "Build UE-ethernet") {
|
|
timeout (time: 20, unit: 'MINUTES') {
|
|
sh "./ci-scripts/oai-ci-vm-tool wait --workspace $WORKSPACE --variant ue-ethernet --job-name ${JOB_NAME} --build-id ${BUILD_ID}"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
stage ("Build L2-Simulator-eNB") {
|
|
steps {
|
|
//gitlabCommitStatus(name: "Build UE-ethernet") {
|
|
timeout (time: 20, unit: 'MINUTES') {
|
|
sh "./ci-scripts/oai-ci-vm-tool wait --workspace $WORKSPACE --variant l2-sim --job-name ${JOB_NAME} --build-id ${BUILD_ID} --keep-vm-alive"
|
|
}
|
|
//}
|
|
}
|
|
}
|
|
stage ("Build physical simulators") {
|
|
steps {
|
|
gitlabCommitStatus(name: "Build phy-sim") {
|
|
timeout (time: 20, unit: 'MINUTES') {
|
|
sh "./ci-scripts/oai-ci-vm-tool wait --workspace $WORKSPACE --variant phy-sim --job-name ${JOB_NAME} --build-id ${BUILD_ID} --keep-vm-alive"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
stage ("Build eNb-USRP on Red Hat") {
|
|
when {
|
|
expression {doRedHatBuild}
|
|
}
|
|
steps {
|
|
gitlabCommitStatus(name: "Build eNb-USRP-CentOS") {
|
|
script {
|
|
try {
|
|
withCredentials([
|
|
[$class: 'UsernamePasswordMultiBinding', credentialsId: "${params.RedHatRemoteCredentials}", usernameVariable: 'RH_Username', passwordVariable: 'RH_Password']
|
|
]) {
|
|
timeout (time: 20, unit: 'MINUTES') {
|
|
sh "./ci-scripts/buildOnRH.sh --workspace $WORKSPACE --job-name ${JOB_NAME} --build-id ${BUILD_ID} --remote-host ${params.RedHatRemoteServer} --remote-path ${params.RedHatWorkingPath} --remote-user-name ${RH_Username} --remote-password ${RH_Password}"
|
|
}
|
|
}
|
|
} catch (Exception e) {
|
|
echo "Red Hat build failed not an error now"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
post {
|
|
always {
|
|
script {
|
|
dir ('archives') {
|
|
sh "zip -r -qq vm_build_logs.zip basic_sim enb_usrp phy_sim cppcheck enb_eth ue_eth red_hat"
|
|
}
|
|
if(fileExists('archives/vm_build_logs.zip')) {
|
|
archiveArtifacts artifacts: 'archives/vm_build_logs.zip'
|
|
}
|
|
if ("MERGE".equals(env.gitlabActionType)) {
|
|
sh "./ci-scripts/oai-ci-vm-tool report-build --workspace $WORKSPACE --git-url ${GIT_URL} --job-name ${JOB_NAME} --build-id ${BUILD_ID} --trigger merge-request --src-branch ${env.gitlabSourceBranch} --src-commit ${env.gitlabMergeRequestLastCommit} --target-branch ${env.gitlabTargetBranch} --target-commit ${GIT_COMMIT}"
|
|
sh "./ci-scripts/checkAddedWarnings.sh --src-branch ${env.gitlabSourceBranch} --target-branch ${env.gitlabTargetBranch}"
|
|
def res=readFile('./oai_warning_files.txt').trim();
|
|
if ("0".equals(res)) {
|
|
echo "No issues w/ warnings/errors in this merge request"
|
|
} else {
|
|
def fileList=readFile('./oai_warning_files_list.txt').trim();
|
|
def message = "OAI " + JOB_NAME + " build (" + BUILD_ID + "): Some modified files in Merge Request MAY have INTRODUCED WARNINGS (" + fileList + ")"
|
|
addGitLabMRComment comment: message
|
|
}
|
|
} else {
|
|
sh "./ci-scripts/oai-ci-vm-tool report-build --workspace $WORKSPACE --git-url ${GIT_URL} --job-name ${JOB_NAME} --build-id ${BUILD_ID} --trigger push --branch ${GIT_BRANCH} --commit ${GIT_COMMIT}"
|
|
}
|
|
if(fileExists('build_results.html')) {
|
|
sh "sed -i -e 's#Build-ID: ${BUILD_ID}#Build-ID: <a href=\"${BUILD_URL}\">${BUILD_ID}</a>#' -e 's#TEMPLATE_BUILD_TIME#${JOB_TIMESTAMP}#' build_results.html"
|
|
archiveArtifacts artifacts: 'build_results.html'
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
stage ("Variant Tests") {
|
|
parallel {
|
|
stage ("Test physical simulators") {
|
|
steps {
|
|
gitlabCommitStatus(name: "Test phy-sim") {
|
|
timeout (time: 20, unit: 'MINUTES') {
|
|
sh "./ci-scripts/oai-ci-vm-tool test --workspace $WORKSPACE --variant phy-sim --job-name ${JOB_NAME} --build-id ${BUILD_ID}"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
stage ("Test basic simulator") {
|
|
steps {
|
|
gitlabCommitStatus(name: "Test basic-sim") {
|
|
timeout (time: 30, unit: 'MINUTES') {
|
|
sh "./ci-scripts/oai-ci-vm-tool test --workspace $WORKSPACE --variant basic-sim --job-name ${JOB_NAME} --build-id ${BUILD_ID}"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
stage ("Test L2 simulator") {
|
|
steps {
|
|
//gitlabCommitStatus(name: "Test basic-sim") {
|
|
timeout (time: 30, unit: 'MINUTES') {
|
|
sh "./ci-scripts/oai-ci-vm-tool test --workspace $WORKSPACE --variant l2-sim --job-name ${JOB_NAME} --build-id ${BUILD_ID}"
|
|
}
|
|
//}
|
|
}
|
|
}
|
|
stage ("Build Flexran Controller") {
|
|
when {
|
|
expression {doFlexranCtrlTest}
|
|
}
|
|
steps {
|
|
timeout (time: 20, unit: 'MINUTES') {
|
|
sh "./ci-scripts/oai-ci-vm-tool build --workspace $WORKSPACE --variant flexran-rtc --job-name ${JOB_NAME} --build-id ${BUILD_ID} --keep-vm-alive"
|
|
}
|
|
}
|
|
}
|
|
stage ("Test FDD - Band 7 - B210") {
|
|
steps {
|
|
script {
|
|
if ("MERGE".equals(env.gitlabActionType)) {
|
|
gitlabCommitStatus(name: "Test-FDD-Band7") {
|
|
build job: 'eNB-CI-FDD-Band7-B210',
|
|
parameters: [
|
|
string(name: 'eNB_Repository', value: String.valueOf(GIT_URL)),
|
|
string(name: 'eNB_Branch', value: String.valueOf(env.gitlabSourceBranch)),
|
|
string(name: 'eNB_CommitID', value: String.valueOf(env.gitlabMergeRequestLastCommit)),
|
|
booleanParam(name: 'eNB_mergeRequest', value: true)
|
|
]
|
|
}
|
|
} else {
|
|
gitlabCommitStatus(name: "Test-FDD-Band7") {
|
|
build job: 'eNB-CI-FDD-Band7-B210',
|
|
parameters: [
|
|
string(name: 'eNB_Repository', value: String.valueOf(GIT_URL)),
|
|
string(name: 'eNB_Branch', value: String.valueOf(GIT_BRANCH)),
|
|
string(name: 'eNB_CommitID', value: String.valueOf(GIT_COMMIT)),
|
|
booleanParam(name: 'eNB_mergeRequest', value: false)
|
|
]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
post {
|
|
// In case of any non-success, we are retrieving the HTML report of the last completed
|
|
// slave job.
|
|
// The only drop-back is that we may retrieve the HTML report of a previous build
|
|
always {
|
|
script {
|
|
if (!fileExists('test_results-eNB-CI-FDD-Band7-B210.html')) {
|
|
copyArtifacts(projectName: 'eNB-CI-FDD-Band7-B210',
|
|
filter: 'test_results*.html',
|
|
selector: lastCompleted())
|
|
if (fileExists('test_results-eNB-CI-FDD-Band7-B210.html')) {
|
|
sh "sed -i -e 's#TEMPLATE_BUILD_TIME#${JOB_TIMESTAMP}#' test_results-eNB-CI-FDD-Band7-B210.html"
|
|
archiveArtifacts artifacts: 'test_results-eNB-CI-FDD-Band7-B210.html'
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
stage ("Test TDD - Band 40 - B210") {
|
|
steps {
|
|
script {
|
|
if ("MERGE".equals(env.gitlabActionType)) {
|
|
gitlabCommitStatus(name: "Test-TDD-Band40") {
|
|
build job: 'eNB-CI-TDD-Band40-B210',
|
|
parameters: [
|
|
string(name: 'eNB_Repository', value: String.valueOf(GIT_URL)),
|
|
string(name: 'eNB_Branch', value: String.valueOf(env.gitlabSourceBranch)),
|
|
string(name: 'eNB_CommitID', value: String.valueOf(env.gitlabMergeRequestLastCommit)),
|
|
booleanParam(name: 'eNB_mergeRequest', value: true)
|
|
]
|
|
}
|
|
} else {
|
|
gitlabCommitStatus(name: "Test-TDD-Band40") {
|
|
build job: 'eNB-CI-TDD-Band40-B210',
|
|
parameters: [
|
|
string(name: 'eNB_Repository', value: String.valueOf(GIT_URL)),
|
|
string(name: 'eNB_Branch', value: String.valueOf(GIT_BRANCH)),
|
|
string(name: 'eNB_CommitID', value: String.valueOf(GIT_COMMIT)),
|
|
booleanParam(name: 'eNB_mergeRequest', value: false)
|
|
]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
post {
|
|
// In case of any non-success, we are retrieving the HTML report of the last completed
|
|
// slave job.
|
|
// The only drop-back is that we may retrieve the HTML report of a previous build
|
|
always {
|
|
script {
|
|
if (!fileExists('test_results-eNB-CI-TDD-Band40-B210.html')) {
|
|
copyArtifacts(projectName: 'eNB-CI-TDD-Band40-B210',
|
|
filter: 'test_results*.html',
|
|
selector: lastCompleted())
|
|
if (fileExists('test_results-eNB-CI-TDD-Band40-B210.html')) {
|
|
sh "sed -i -e 's#TEMPLATE_BUILD_TIME#${JOB_TIMESTAMP}#' test_results-eNB-CI-TDD-Band40-B210.html"
|
|
archiveArtifacts artifacts: 'test_results-eNB-CI-TDD-Band40-B210.html'
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
stage ("Test IF4p5 - FDD - Band 7 - B210") {
|
|
steps {
|
|
script {
|
|
if ("MERGE".equals(env.gitlabActionType)) {
|
|
gitlabCommitStatus(name: "Test-IF4p5-FDD-Band7") {
|
|
build job: 'eNB-CI-IF4p5-FDD-Band7-B210',
|
|
parameters: [
|
|
string(name: 'eNB_Repository', value: String.valueOf(GIT_URL)),
|
|
string(name: 'eNB_Branch', value: String.valueOf(env.gitlabSourceBranch)),
|
|
string(name: 'eNB_CommitID', value: String.valueOf(env.gitlabMergeRequestLastCommit)),
|
|
booleanParam(name: 'eNB_mergeRequest', value: true)
|
|
]
|
|
}
|
|
} else {
|
|
gitlabCommitStatus(name: "Test-IF4p5-FDD-Band7") {
|
|
build job: 'eNB-CI-IF4p5-FDD-Band7-B210',
|
|
parameters: [
|
|
string(name: 'eNB_Repository', value: String.valueOf(GIT_URL)),
|
|
string(name: 'eNB_Branch', value: String.valueOf(GIT_BRANCH)),
|
|
string(name: 'eNB_CommitID', value: String.valueOf(GIT_COMMIT)),
|
|
booleanParam(name: 'eNB_mergeRequest', value: false)
|
|
]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
post {
|
|
// In case of any non-success, we are retrieving the HTML report of the last completed
|
|
// slave job.
|
|
// The only drop-back is that we may retrieve the HTML report of a previous build
|
|
always {
|
|
script {
|
|
if (!fileExists('test_results-eNB-CI-IF4p5-FDD-Band7-B210.html')) {
|
|
copyArtifacts(projectName: 'eNB-CI-IF4p5-FDD-Band7-B210',
|
|
filter: 'test_results*.html',
|
|
selector: lastCompleted())
|
|
if (fileExists('test_results-eNB-CI-IF4p5-FDD-Band7-B210.html')) {
|
|
sh "sed -i -e 's#TEMPLATE_BUILD_TIME#${JOB_TIMESTAMP}#' test_results-eNB-CI-IF4p5-FDD-Band7-B210.html"
|
|
archiveArtifacts artifacts: 'test_results-eNB-CI-IF4p5-FDD-Band7-B210.html'
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
stage ("Test IF4p5 - TDD - Band 40 - B210") {
|
|
steps {
|
|
script {
|
|
if ("MERGE".equals(env.gitlabActionType)) {
|
|
gitlabCommitStatus(name: "Test-IF4p5-TDD-Band40") {
|
|
build job: 'eNB-CI-IF4p5-TDD-Band40-B210',
|
|
parameters: [
|
|
string(name: 'eNB_Repository', value: String.valueOf(GIT_URL)),
|
|
string(name: 'eNB_Branch', value: String.valueOf(env.gitlabSourceBranch)),
|
|
string(name: 'eNB_CommitID', value: String.valueOf(env.gitlabMergeRequestLastCommit)),
|
|
booleanParam(name: 'eNB_mergeRequest', value: true)
|
|
]
|
|
}
|
|
} else {
|
|
gitlabCommitStatus(name: "Test-IF4p5-TDD-Band40") {
|
|
build job: 'eNB-CI-IF4p5-TDD-Band40-B210',
|
|
parameters: [
|
|
string(name: 'eNB_Repository', value: String.valueOf(GIT_URL)),
|
|
string(name: 'eNB_Branch', value: String.valueOf(GIT_BRANCH)),
|
|
string(name: 'eNB_CommitID', value: String.valueOf(GIT_COMMIT)),
|
|
booleanParam(name: 'eNB_mergeRequest', value: false)
|
|
]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
post {
|
|
// In case of any non-success, we are retrieving the HTML report of the last completed
|
|
// slave job.
|
|
// The only drop-back is that we may retrieve the HTML report of a previous build
|
|
always {
|
|
script {
|
|
if (!fileExists('test_results-eNB-CI-IF4p5-TDD-Band40-B210.html')) {
|
|
copyArtifacts(projectName: 'eNB-CI-IF4p5-TDD-Band40-B210',
|
|
filter: 'test_results*.html',
|
|
selector: lastCompleted())
|
|
if (fileExists('test_results-eNB-CI-IF4p5-TDD-Band40-B210.html')) {
|
|
sh "sed -i -e 's#TEMPLATE_BUILD_TIME#${JOB_TIMESTAMP}#' test_results-eNB-CI-IF4p5-TDD-Band40-B210.html"
|
|
archiveArtifacts artifacts: 'test_results-eNB-CI-IF4p5-TDD-Band40-B210.html'
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
post {
|
|
always {
|
|
script {
|
|
dir ('archives') {
|
|
sh "if [ -d basic_sim/test ] || [ -d phy_sim/test ]; then zip -r -qq vm_tests_logs.zip */test ; fi"
|
|
}
|
|
if(fileExists('archives/vm_tests_logs.zip')) {
|
|
archiveArtifacts artifacts: 'archives/vm_tests_logs.zip'
|
|
if ("MERGE".equals(env.gitlabActionType)) {
|
|
sh "./ci-scripts/oai-ci-vm-tool report-test --workspace $WORKSPACE --git-url ${GIT_URL} --job-name ${JOB_NAME} --build-id ${BUILD_ID} --trigger merge-request --src-branch ${env.gitlabSourceBranch} --src-commit ${env.gitlabMergeRequestLastCommit} --target-branch ${env.gitlabTargetBranch} --target-commit ${GIT_COMMIT}"
|
|
} else {
|
|
sh "./ci-scripts/oai-ci-vm-tool report-test --workspace $WORKSPACE --git-url ${GIT_URL} --job-name ${JOB_NAME} --build-id ${BUILD_ID} --trigger push --branch ${GIT_BRANCH} --commit ${GIT_COMMIT}"
|
|
}
|
|
if(fileExists('test_simulator_results.html')) {
|
|
sh "sed -i -e 's#Build-ID: ${BUILD_ID}#Build-ID: <a href=\"${BUILD_URL}\">${BUILD_ID}</a>#' -e 's#TEMPLATE_BUILD_TIME#${JOB_TIMESTAMP}#' test_simulator_results.html"
|
|
archiveArtifacts artifacts: 'test_simulator_results.html'
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
stage ("Destroy all Virtual Machines") {
|
|
steps {
|
|
sh "./ci-scripts/oai-ci-vm-tool destroy --job-name ${JOB_NAME} --build-id ${BUILD_ID}"
|
|
}
|
|
}
|
|
}
|
|
post {
|
|
always {
|
|
script {
|
|
// Stage destroy may not be run if error in previous stage
|
|
sh "./ci-scripts/oai-ci-vm-tool destroy --job-name ${JOB_NAME} --build-id ${BUILD_ID}"
|
|
emailext attachmentsPattern: '*results*.html',
|
|
body: '''Hi,
|
|
Here are attached HTML report files for $PROJECT_NAME - Build # $BUILD_NUMBER - $BUILD_STATUS!
|
|
|
|
Regards,
|
|
OAI CI Team''',
|
|
replyTo: 'no-reply@openairinterface.org',
|
|
subject: '$PROJECT_NAME - Build # $BUILD_NUMBER - $BUILD_STATUS!',
|
|
to: env.gitlabUserEmail
|
|
}
|
|
}
|
|
success {
|
|
script {
|
|
def message = "OAI " + JOB_NAME + " build (" + BUILD_ID + "): passed (" + BUILD_URL + ")"
|
|
if ("MERGE".equals(env.gitlabActionType)) {
|
|
echo "This is a MERGE event"
|
|
addGitLabMRComment comment: message
|
|
def message2 = "OAI " + JOB_NAME + " build (" + BUILD_ID + "): passed (" + BUILD_URL + ") -- MergeRequest #" + env.gitlabMergeRequestIid + " (" + env.gitlabMergeRequestTitle + ")"
|
|
sendSocialMediaMessage('ci-enb', 'good', message2)
|
|
} else {
|
|
sendSocialMediaMessage('ci-enb', 'good', message)
|
|
}
|
|
}
|
|
}
|
|
failure {
|
|
script {
|
|
def message = "OAI " + JOB_NAME + " build (" + BUILD_ID + "): failed (" + BUILD_URL + ")"
|
|
if ("MERGE".equals(env.gitlabActionType)) {
|
|
echo "This is a MERGE event"
|
|
addGitLabMRComment comment: message
|
|
def message2 = "OAI " + JOB_NAME + " build (" + BUILD_ID + "): failed (" + BUILD_URL + ") -- MergeRequest #" + env.gitlabMergeRequestIid + " (" + env.gitlabMergeRequestTitle + ")"
|
|
sendSocialMediaMessage('ci-enb', 'danger', message2)
|
|
} else {
|
|
sendSocialMediaMessage('ci-enb', 'danger', message)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|