merge develo
This commit is contained in:
@@ -390,7 +390,7 @@ pipeline {
|
||||
steps {
|
||||
script {
|
||||
dir ('ci-scripts/ran_dashboard') {
|
||||
sh "python3 Hdashboard.py testevent ${params.eNB_MR} ${JOB_NAME} ${env.BUILD_URL} ${env.BUILD_ID} ${StatusForDb} "
|
||||
sh "python3 Hdashboard.py testevent ${params.eNB_MR} "
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -27,6 +27,9 @@ def pythonExecutor = params.pythonExecutor
|
||||
|
||||
def TARGET_BRANCH = "develop"
|
||||
def ALLOW_MERGE = true
|
||||
def GitPostArgs = ''
|
||||
def DataBaseHost = params.DataBaseHost
|
||||
def jobStatus
|
||||
|
||||
pipeline {
|
||||
agent {
|
||||
@@ -47,38 +50,71 @@ pipeline {
|
||||
COMMIT_ID=sh returnStdout: true, script: """curl --silent "https://gitlab.eurecom.fr/api/v4/projects/oai%2Fopenairinterface5g/merge_requests/${MR}" | jq ".sha" || true """
|
||||
COMMIT_ID=COMMIT_ID.trim()
|
||||
echo "Testing NSA on : ${MR} ${SRC_BRANCH} ${COMMIT_ID}"
|
||||
commit = COMMIT_ID.replace("\"","")
|
||||
GitPostArgs = MR + ' ' + commit + ' '
|
||||
echo GitPostArgs
|
||||
|
||||
//calling LTE 2x2
|
||||
jobName = "RAN-LTE-2x2-Module-OAIEPC"
|
||||
jobStatus = build job: jobName, wait : true, propagate : false, parameters: [
|
||||
string(name: 'eNB_MR', value: String.valueOf(MR)),
|
||||
string(name: 'eNB_Branch', value: String.valueOf(SRC_BRANCH)),
|
||||
string(name: 'eNB_CommitID', value: String.valueOf(COMMIT_ID)),
|
||||
string(name: 'eNB_TargetBranch', value: String.valueOf(TARGET_BRANCH)),
|
||||
booleanParam(name: 'eNB_mergeRequest', value: Boolean.valueOf(ALLOW_MERGE))
|
||||
]
|
||||
jobResult = jobStatus.getResult()
|
||||
build_url = jobStatus.getAbsoluteUrl()
|
||||
build_id = jobStatus.getNumber().toString()
|
||||
GitPostArgs += jobName + ' ' + build_url + ' ' + build_id + ' ' + jobResult + ' '
|
||||
echo GitPostArgs
|
||||
|
||||
//calling NSA B200
|
||||
build job: "RAN-NSA-B200-Module-LTEBOX", wait : true, propagate : false, parameters: [
|
||||
jobName = "RAN-NSA-B200-Module-LTEBOX"
|
||||
jobStatus = build job: jobName, wait : true, propagate : false, parameters: [
|
||||
string(name: 'eNB_MR', value: String.valueOf(MR)),
|
||||
string(name: 'eNB_Branch', value: String.valueOf(SRC_BRANCH)),
|
||||
string(name: 'eNB_CommitID', value: String.valueOf(COMMIT_ID)),
|
||||
string(name: 'eNB_TargetBranch', value: String.valueOf(TARGET_BRANCH)),
|
||||
booleanParam(name: 'eNB_mergeRequest', value: Boolean.valueOf(ALLOW_MERGE))
|
||||
]
|
||||
jobResult = jobStatus.getResult()
|
||||
build_url = jobStatus.getAbsoluteUrl()
|
||||
build_id = jobStatus.getNumber().toString()
|
||||
GitPostArgs += jobName + ' ' + build_url + ' ' + build_id + ' ' + jobResult + ' '
|
||||
echo GitPostArgs
|
||||
|
||||
//calling NSA 2x2
|
||||
build job: "RAN-NSA-2x2-Module-OAIEPC", wait : true, propagate : false, parameters: [
|
||||
string(name: 'eNB_MR', value: String.valueOf(MR)),
|
||||
string(name: 'eNB_Branch', value: String.valueOf(SRC_BRANCH)),
|
||||
string(name: 'eNB_CommitID', value: String.valueOf(COMMIT_ID)),
|
||||
string(name: 'eNB_TargetBranch', value: String.valueOf(TARGET_BRANCH)),
|
||||
booleanParam(name: 'eNB_mergeRequest', value: Boolean.valueOf(ALLOW_MERGE))
|
||||
]
|
||||
//calling LTE 2x2
|
||||
build job: "RAN-LTE-2x2-Module-OAIEPC", wait : true, propagate : false, parameters: [
|
||||
jobName = "RAN-NSA-2x2-Module-OAIEPC"
|
||||
jobStatus = build job: jobName, wait : true, propagate : false, parameters: [
|
||||
string(name: 'eNB_MR', value: String.valueOf(MR)),
|
||||
string(name: 'eNB_Branch', value: String.valueOf(SRC_BRANCH)),
|
||||
string(name: 'eNB_CommitID', value: String.valueOf(COMMIT_ID)),
|
||||
string(name: 'eNB_TargetBranch', value: String.valueOf(TARGET_BRANCH)),
|
||||
booleanParam(name: 'eNB_mergeRequest', value: Boolean.valueOf(ALLOW_MERGE))
|
||||
]
|
||||
jobResult = jobStatus.getResult()
|
||||
build_url = jobStatus.getAbsoluteUrl()
|
||||
build_id = jobStatus.getNumber().toString()
|
||||
GitPostArgs += jobName + ' ' + build_url + ' ' + build_id + ' ' + jobResult + ' '
|
||||
echo GitPostArgs
|
||||
|
||||
//calling SA
|
||||
build job: "RAN-SA-Module-CN5G", wait : true, propagate : false, parameters: [
|
||||
jobName = "RAN-SA-Module-CN5G"
|
||||
jobStatus = build job: jobName, wait : true, propagate : false, parameters: [
|
||||
string(name: 'eNB_MR', value: String.valueOf(MR)),
|
||||
string(name: 'eNB_Branch', value: String.valueOf(SRC_BRANCH)),
|
||||
string(name: 'eNB_CommitID', value: String.valueOf(COMMIT_ID)),
|
||||
string(name: 'eNB_TargetBranch', value: String.valueOf(TARGET_BRANCH)),
|
||||
booleanParam(name: 'eNB_mergeRequest', value: Boolean.valueOf(ALLOW_MERGE))
|
||||
]
|
||||
jobResult = jobStatus.getResult()
|
||||
build_url = jobStatus.getAbsoluteUrl()
|
||||
build_id = jobStatus.getNumber().toString()
|
||||
GitPostArgs += jobName + ' ' + build_url + ' ' + build_id + ' ' + jobResult + ' '
|
||||
echo GitPostArgs
|
||||
|
||||
|
||||
//calling OAIUE B200
|
||||
//build job: "RAN-SA-OAIUE-B200-CN5G", wait : true, propagate : false, parameters: [
|
||||
// string(name: 'eNB_MR', value: String.valueOf(MR)),
|
||||
@@ -95,19 +131,38 @@ pipeline {
|
||||
// string(name: 'eNB_TargetBranch', value: String.valueOf(TARGET_BRANCH)),
|
||||
// booleanParam(name: 'eNB_mergeRequest', value: Boolean.valueOf(ALLOW_MERGE))
|
||||
//]
|
||||
|
||||
//calling OAIUE N310-X300
|
||||
build job: "RAN-SA-OAIUE-N310-X300-CN5G", wait : true, propagate : false, parameters: [
|
||||
jobName = "RAN-SA-OAIUE-N310-X300-CN5G"
|
||||
jobStatus = build job: jobName, wait : true, propagate : false, parameters: [
|
||||
string(name: 'eNB_MR', value: String.valueOf(MR)),
|
||||
string(name: 'eNB_Branch', value: String.valueOf(SRC_BRANCH)),
|
||||
string(name: 'eNB_CommitID', value: String.valueOf(COMMIT_ID)),
|
||||
string(name: 'eNB_TargetBranch', value: String.valueOf(TARGET_BRANCH)),
|
||||
booleanParam(name: 'eNB_mergeRequest', value: Boolean.valueOf(ALLOW_MERGE))
|
||||
]
|
||||
|
||||
jobResult = jobStatus.getResult()
|
||||
build_url = jobStatus.getAbsoluteUrl()
|
||||
build_id = jobStatus.getNumber().toString()
|
||||
GitPostArgs += jobName + ' ' + build_url + ' ' + build_id + ' ' + jobResult + ' '
|
||||
echo GitPostArgs
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
stage ('Git Post') {
|
||||
when {
|
||||
expression { params.DataBaseHost != "none" }
|
||||
}
|
||||
agent {label DataBaseHost}
|
||||
steps {
|
||||
script {
|
||||
dir ('ci-scripts/ran_dashboard') {
|
||||
sh "python3 Hdashboard.py gitpost ${GitPostArgs}"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -342,6 +342,8 @@ class Containerize():
|
||||
if self.ranAllowMerge and forceBaseImageBuild:
|
||||
mySSH.command(self.cli + ' image rm ' + baseImage + ':' + baseTag + ' || true', '\$', 30)
|
||||
mySSH.command(self.cli + ' image rm ran-build:' + imageTag + ' || true','\$', 5)
|
||||
# Cleaning any created tmp volume
|
||||
mySSH.command(self.cli + ' volume prune --force || true','\$', 15)
|
||||
mySSH.close()
|
||||
ZipFile('build_log_' + self.testCase_id + '.zip').extractall('.')
|
||||
|
||||
@@ -595,6 +597,8 @@ class Containerize():
|
||||
mySSH.command('docker rm -f ' + containerName, '\$', 30)
|
||||
# Forcing the down now to remove the networks and any artifacts
|
||||
mySSH.command('docker-compose --file ci-docker-compose.yml down', '\$', 5)
|
||||
# Cleaning any created tmp volume
|
||||
mySSH.command('docker volume prune --force || true', '\$', 20)
|
||||
|
||||
mySSH.close()
|
||||
|
||||
@@ -754,6 +758,11 @@ class Containerize():
|
||||
logging.error('\u001B[1m Undeploying OAI Object(s) FAILED\u001B[0m')
|
||||
return
|
||||
|
||||
# Cleaning any created tmp volume
|
||||
cmd = 'docker volume prune --force || true'
|
||||
logging.debug(cmd)
|
||||
deployStatus = subprocess.check_output(cmd, shell=True, stderr=subprocess.STDOUT, universal_newlines=True, timeout=100)
|
||||
|
||||
HTML.CreateHtmlTestRow('n/a', 'OK', CONST.ALL_PROCESSES_OK)
|
||||
logging.info('\u001B[1m Undeploying OAI Object(s) PASS\u001B[0m')
|
||||
|
||||
|
||||
@@ -509,46 +509,87 @@ class Dashboard:
|
||||
s3.meta.client.copy(copy_source, 'oaitestdashboard', path+'/'+ 'test_styles.css')
|
||||
|
||||
|
||||
def PostGitNote(self,mr,jobname,buildurl,buildid,status):
|
||||
gl = gitlab.Gitlab.from_config('OAI')
|
||||
project_id = 223
|
||||
project = gl.projects.get(project_id)
|
||||
editable_mr = project.mergerequests.get(int(mr))
|
||||
mr_notes = editable_mr.notes.list()
|
||||
mr_note = editable_mr.notes.create({
|
||||
'body': 'Completed Test : '+jobname+', status: <b>'+status+'</b>, '+\
|
||||
'(<a href="'+buildurl+'">'+buildid+'</a>)<br>'+\
|
||||
'<a href="https://oaitestdashboard.s3.eu-west-1.amazonaws.com/MR'+mr+'/index.html">Consolidated Test Results</a>'
|
||||
})
|
||||
editable_mr.save()
|
||||
def PostGitNote(self,mr,commit,args):
|
||||
#current date and time to be posted with test results
|
||||
#now = datetime.now()
|
||||
#dt_string = now.strftime("%d/%m/%Y %H:%M")
|
||||
|
||||
if len(args)%4 != 0:
|
||||
print("Wrong Number of Arguments")
|
||||
return
|
||||
else :
|
||||
n_tests=len(args)//4
|
||||
|
||||
gl = gitlab.Gitlab.from_config('OAI')
|
||||
project_id = 223
|
||||
project = gl.projects.get(project_id)
|
||||
|
||||
#retrieve all the notes from the MR
|
||||
editable_mr = project.mergerequests.get(int(mr))
|
||||
mr_notes = editable_mr.notes.list(all=True)
|
||||
|
||||
body = '<a href="https://oaitestdashboard.s3.eu-west-1.amazonaws.com/MR'+mr+'/index.html">Consolidated Test Results</a><br>'+\
|
||||
'Tested CommitID: ' + commit + '<br>'
|
||||
|
||||
for i in range(0,n_tests):
|
||||
jobname = args[4*i]
|
||||
buildurl = args[4*i+1]
|
||||
buildid = args[4*i+2]
|
||||
status = args[4*i+3]
|
||||
body += jobname+', status is <b>'+status+'</b>, (<a href="'+buildurl+'">'+buildid+'</a>)<br>'
|
||||
|
||||
#create new note
|
||||
mr_note = editable_mr.notes.create({
|
||||
'body': body
|
||||
})
|
||||
editable_mr.save()
|
||||
|
||||
|
||||
|
||||
|
||||
def main():
|
||||
|
||||
#call from Jenkinsfile : sh "python3 Hdashboard.py testevent ${params.eNB_MR} ${JOB_NAME} ${env.BUILD_URL} ${env.BUILD_ID} ${StatusForDb} "
|
||||
#call from slave Jenkinsfile : sh "python3 Hdashboard.py testevent ${params.eNB_MR} "
|
||||
#call from master Jenkinsfile : sh "python3 Hdashboard.py gitpost ${GitPostArgs}"
|
||||
|
||||
|
||||
#individual MR test results + test dashboard, event based (end of jenkins pipeline)
|
||||
if len(sys.argv)>1:
|
||||
|
||||
#individual MR test results + test dashboard, event based (end of slave jenkins pipeline)
|
||||
if sys.argv[1]=="testevent" :
|
||||
mr=sys.argv[2]
|
||||
jobname=sys.argv[3]
|
||||
buildurl=sys.argv[4]
|
||||
buildid=sys.argv[5]
|
||||
status=sys.argv[6]
|
||||
htmlDash=Dashboard()
|
||||
if mr in htmlDash.mr_list:
|
||||
#single MR test results
|
||||
htmlDash.Build('singleMR',mr,'/tmp/MR'+mr+'_index.html')
|
||||
htmlDash.CopyToS3('/tmp/MR'+mr+'_index.html','oaitestdashboard','MR'+mr+'/index.html')
|
||||
#all MR test results
|
||||
htmlDash.Build('Tests','0000','/tmp/Tests_index.html')
|
||||
htmlDash.CopyToS3('/tmp/Tests_index.html','oaitestdashboard','index.html')
|
||||
htmlDash.PostGitNote(mr,jobname,buildurl,buildid,status)
|
||||
|
||||
#git post with MR test results, event based (end of master jenkins pipeline)
|
||||
elif sys.argv[1]=="gitpost":
|
||||
mr=sys.argv[2]
|
||||
commit=sys.argv[3]
|
||||
args=[]
|
||||
for i in range (4, len(sys.argv)): #jobname, url, id , result
|
||||
args.append(sys.argv[i])
|
||||
htmlDash=Dashboard()
|
||||
if mr in htmlDash.mr_list:
|
||||
htmlDash.PostGitNote(mr,commit, args)
|
||||
else:
|
||||
print("Not a Merge Request => this build is for testing/debug purpose, no report to git")
|
||||
#test and MR status dash boards, cron based
|
||||
else:
|
||||
print("Wrong argument at position 1")
|
||||
|
||||
|
||||
#test and MR status dashboards, cron based
|
||||
else:
|
||||
htmlDash=Dashboard()
|
||||
#all MR status dashboard
|
||||
htmlDash.Build('MR','0000','/tmp/MR_index.html')
|
||||
htmlDash.CopyToS3('/tmp/MR_index.html','oairandashboard','index.html')
|
||||
#all MR test results
|
||||
htmlDash.Build('Tests','0000','/tmp/Tests_index.html')
|
||||
htmlDash.CopyToS3('/tmp/Tests_index.html','oaitestdashboard','index.html')
|
||||
|
||||
|
||||
@@ -37,8 +37,8 @@
|
||||
000001
|
||||
050000
|
||||
050001
|
||||
070000
|
||||
070001
|
||||
070000
|
||||
050000
|
||||
050001
|
||||
010002
|
||||
@@ -123,15 +123,15 @@
|
||||
<iperf_args>-u -b 40M -t 60</iperf_args>
|
||||
<direction>DL</direction>
|
||||
<id>idefix</id>
|
||||
<iperf_packetloss_threshold>3</iperf_packetloss_threshold>
|
||||
<iperf_bitrate_threshold>95</iperf_bitrate_threshold>
|
||||
<iperf_packetloss_threshold>20</iperf_packetloss_threshold>
|
||||
<iperf_bitrate_threshold>85</iperf_bitrate_threshold>
|
||||
<iperf_profile>single-ue</iperf_profile>
|
||||
</testCase>
|
||||
|
||||
<testCase id="070001">
|
||||
<class>Iperf</class>
|
||||
<desc>iperf (UL/2Mbps/UDP)(60 sec)(single-ue profile)</desc>
|
||||
<iperf_args>-u -b 2M -t 60</iperf_args>
|
||||
<desc>iperf (UL/3Mbps/UDP)(60 sec)(single-ue profile)</desc>
|
||||
<iperf_args>-u -b 3M -t 60</iperf_args>
|
||||
<direction>UL</direction>
|
||||
<id>idefix</id>
|
||||
<iperf_packetloss_threshold>1</iperf_packetloss_threshold>
|
||||
|
||||
@@ -34,9 +34,8 @@
|
||||
050000
|
||||
050001
|
||||
000001
|
||||
070000
|
||||
000001
|
||||
070001
|
||||
070003
|
||||
070002
|
||||
000001
|
||||
050000
|
||||
050001
|
||||
@@ -114,16 +113,38 @@
|
||||
|
||||
<testCase id="070000">
|
||||
<class>Iperf</class>
|
||||
<desc>iperf (DL/60Mbps/UDP)(60 sec)(single-ue profile)</desc>
|
||||
<iperf_args>-u -b 60M -t 60</iperf_args>
|
||||
<desc>iperf (DL/30Mbps/UDP)(30 sec)(single-ue profile)</desc>
|
||||
<iperf_args>-u -b 30M -t 30</iperf_args>
|
||||
<direction>DL</direction>
|
||||
<id>idefix</id>
|
||||
<iperf_packetloss_threshold>3</iperf_packetloss_threshold>
|
||||
<iperf_packetloss_threshold>5</iperf_packetloss_threshold>
|
||||
<iperf_bitrate_threshold>95</iperf_bitrate_threshold>
|
||||
<iperf_profile>single-ue</iperf_profile>
|
||||
</testCase>
|
||||
|
||||
<testCase id="070001">
|
||||
<class>Iperf</class>
|
||||
<desc>iperf (DL/40Mbps/UDP)(30 sec)(single-ue profile)</desc>
|
||||
<iperf_args>-u -b 40M -t 30</iperf_args>
|
||||
<direction>DL</direction>
|
||||
<id>idefix</id>
|
||||
<iperf_packetloss_threshold>5</iperf_packetloss_threshold>
|
||||
<iperf_bitrate_threshold>95</iperf_bitrate_threshold>
|
||||
<iperf_profile>single-ue</iperf_profile>
|
||||
</testCase>
|
||||
|
||||
<testCase id="070002">
|
||||
<class>Iperf</class>
|
||||
<desc>iperf (DL/60Mbps/UDP)(60 sec)(single-ue profile)</desc>
|
||||
<iperf_args>-u -b 60M -t 60</iperf_args>
|
||||
<direction>DL</direction>
|
||||
<id>idefix</id>
|
||||
<iperf_packetloss_threshold>5</iperf_packetloss_threshold>
|
||||
<iperf_bitrate_threshold>95</iperf_bitrate_threshold>
|
||||
<iperf_profile>single-ue</iperf_profile>
|
||||
</testCase>
|
||||
|
||||
<testCase id="070003">
|
||||
<class>Iperf</class>
|
||||
<desc>iperf (UL/3Mbps/UDP)(60 sec)(single-ue profile)</desc>
|
||||
<iperf_args>-u -b 3M -t 60</iperf_args>
|
||||
|
||||
Reference in New Issue
Block a user