diff --git a/ci-scripts/Jenkinsfile-gitlab b/ci-scripts/Jenkinsfile-gitlab index 510d594eb5c98af8406502d624f9dfc2ca41712b..442e5d37910e13c5333890cccf2725eb8f93e4f7 100644 --- a/ci-scripts/Jenkinsfile-gitlab +++ b/ci-scripts/Jenkinsfile-gitlab @@ -9,34 +9,66 @@ pipeline { timestamps() gitLabConnection('OAI GitLab') //gitlabBuilds(builds: ["Build", "Test"]) + gitlabBuilds(builds: ["Local Build"]) } stages { - stage ("Verify Parameters") { + stage ("Verify Guidelines") { steps { - echo 'Verify Parameters' echo "Git URL is ${GIT_URL}" echo "GitLab Act is ${env.gitlabActionType}" script { if ("MERGE".equals(env.gitlabActionType)) { - // GitLab-Jenkins pugin integration is lacking to perform the merge by itself + // 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 ${env.gitlabSourceBranch} ${env.gitlabMergeRequestLastCommit} ${env.gitlabTargetBranch} ${GIT_COMMIT}" - sh "./ci-scripts/checkCodingFormattingRules.sh ${env.gitlabSourceBranch} ${env.gitlabTargetBranch}" + sh "./ci-scripts/doGitLabMerge.sh --src-branch ${env.gitlabSourceBranch} --src-commit ${env.gitlabMergeRequestLastCommit} --target-branch ${env.gitlabTargetBranch} --target-commit ${GIT_COMMIT}" + + // 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)) { - addGitLabMRComment comment: "All Changed files in Merge Request follow OAI Formatting Rules" + def message = "OAI " + JOB_NAME + " build (" + BUILD_ID + "): All Changed files in Merge Request follow OAI Formatting Rules" + addGitLabMRComment comment: message } else { - addGitLabMRComment comment: "Some Changed files in Merge Request DO NOT follow OAI Formatting Rules" + 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}" + + // 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" } } } } + stage ("Local Build") { + steps { + gitlabCommitStatus(name: "Local Build") { + sh "./ci-scripts/buildLocally.sh --workspace $WORKSPACE" + } + } + post { + always { + script { + if(fileExists('archives/local_build_logs.zip')) { + archiveArtifacts artifacts: 'archives/local_build_logs.zip' + } + if ("MERGE".equals(env.gitlabActionType)) { + sh "./ci-scripts/reportBuildLocally.sh --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/reportBuildLocally.sh --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')) { + archiveArtifacts artifacts: 'build_results.html' + } + } + } + } + } } post { always { @@ -46,11 +78,11 @@ pipeline { } success { script { - def message = "OAI build #" + BUILD_ID + " passed (" + BUILD_URL + ")" + 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 build #" + BUILD_ID + " passed (" + BUILD_URL + ") -- MergeRequest #" + env.gitlabMergeRequestIid + " (" + env.gitlabMergeRequestTitle + ")" + def message2 = "OAI " + JOB_NAME + " build (" + BUILD_ID + "): passed (" + BUILD_URL + ") -- MergeRequest #" + env.gitlabMergeRequestIid + " (" + env.gitlabMergeRequestTitle + ")" slackSend channel: 'ci-enb', color: 'good', message: message2 } else { slackSend channel: 'ci-enb', color: 'good', message: message @@ -59,11 +91,11 @@ pipeline { } failure { script { - def message = "OAI build #" + BUILD_ID + " failed (" + BUILD_URL + ")" + 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 build #" + BUILD_ID + " failed (" + BUILD_URL + ") -- MergeRequest #" + env.gitlabMergeRequestIid + " (" + env.gitlabMergeRequestTitle + ")" + def message2 = "OAI " + JOB_NAME + " build (" + BUILD_ID + "): failed (" + BUILD_URL + ") -- MergeRequest #" + env.gitlabMergeRequestIid + " (" + env.gitlabMergeRequestTitle + ")" slackSend channel: 'ci-enb', color: 'danger', message: message2 } else { slackSend channel: 'ci-enb', color: 'danger', message: message diff --git a/ci-scripts/buildLocally.sh b/ci-scripts/buildLocally.sh new file mode 100755 index 0000000000000000000000000000000000000000..67019508327a32e2cdf00c7f17d24c24d6918879 --- /dev/null +++ b/ci-scripts/buildLocally.sh @@ -0,0 +1,153 @@ +#!/bin/bash + +function usage { + echo "OAI Local Build Check script" + echo " Original Author: Raphael Defosseux" + echo "" + echo "Usage:" + echo "------" + echo " buildLocally.sh [OPTIONS]" + echo "" + echo "Options:" + echo "--------" + echo " --workspace #### OR -ws ####" + echo " Specify the workspace" + echo "" + echo " --help OR -h" + echo " Print this help message." + echo "" +} + +if [ $# -ne 2 ] && [ $# -ne 1 ] +then + echo "Syntax Error: not the correct number of arguments" + echo "" + usage + exit 1 +fi + +while [[ $# -gt 0 ]] +do +key="$1" + +case $key in + -h|--help) + shift + usage + exit 0 + ;; + -ws|--workspace) + JENKINS_WKSP="$2" + shift + shift + ;; + *) + echo "Syntax Error: unknown option: $key" + echo "" + usage + exit 1 +esac +done + +cd $JENKINS_WKSP +STATUS=0 + +############################################################ +# Creating a tmp folder to store results and artifacts +############################################################ +if [ ! -d $JENKINS_WKSP/archives ] +then + mkdir $JENKINS_WKSP/archives +fi + +source oaienv +cd $JENKINS_WKSP/cmake_targets + +############################################################ +# Building eNb with USRP option +############################################################ +ARCHIVES_LOC=$JENKINS_WKSP/archives/enb_usrp +if [ ! -d $ARCHIVES_LOC ] +then + mkdir $ARCHIVES_LOC +fi +./build_oai --eNB -w USRP -c + +# Generated log files: +if [ -f $JENKINS_WKSP/cmake_targets/log/lte-softmodem.Rel14.txt ] +then + LOCAL_STAT=`egrep -c "Built target lte-softmodem" $JENKINS_WKSP/cmake_targets/log/lte-softmodem.Rel14.txt` + if [ $LOCAL_STAT -eq 0 ]; then STATUS=-1; fi + cp $JENKINS_WKSP/cmake_targets/log/lte-softmodem.Rel14.txt $ARCHIVES_LOC +else + STATUS=-1 +fi +if [ -f $JENKINS_WKSP/cmake_targets/log/params_libconfig.Rel14.txt ] +then + LOCAL_STAT=`egrep -c "Built target params_libconfig" $JENKINS_WKSP/cmake_targets/log/params_libconfig.Rel14.txt` + if [ $LOCAL_STAT -eq 0 ]; then STATUS=-1; fi + cp $JENKINS_WKSP/cmake_targets/log/params_libconfig.Rel14.txt $ARCHIVES_LOC +else + STATUS=-1 +fi +if [ -f $JENKINS_WKSP/cmake_targets/log/coding.Rel14.txt ] +then + LOCAL_STAT=`egrep -c "Built target coding" $JENKINS_WKSP/cmake_targets/log/coding.Rel14.txt` + if [ $LOCAL_STAT -eq 0 ]; then STATUS=-1; fi + cp $JENKINS_WKSP/cmake_targets/log/coding.Rel14.txt $ARCHIVES_LOC +else + STATUS=-1 +fi +if [ -f $JENKINS_WKSP/cmake_targets/log/oai_usrpdevif.Rel14.txt ] +then + LOCAL_STAT=`egrep -c "Built target oai_usrpdevif" $JENKINS_WKSP/cmake_targets/log/oai_usrpdevif.Rel14.txt` + if [ $LOCAL_STAT -eq 0 ]; then STATUS=-1; fi + cp $JENKINS_WKSP/cmake_targets/log/oai_usrpdevif.Rel14.txt $ARCHIVES_LOC +else + STATUS=-1 +fi + +############################################################ +# Building basic simulator +############################################################ +ARCHIVES_LOC=$JENKINS_WKSP/archives/basic_sim +if [ ! -d $ARCHIVES_LOC ] +then + mkdir $ARCHIVES_LOC +fi +cd $JENKINS_WKSP/cmake_targets +./build_oai --basic-simulator -c + +# Generated log files: +if [ -f $JENKINS_WKSP/cmake_targets/log/basic_simulator_enb.txt ] +then + LOCAL_STAT=`egrep -c "Built target lte-softmodem" $JENKINS_WKSP/cmake_targets/log/basic_simulator_enb.txt` + if [ $LOCAL_STAT -eq 0 ]; then STATUS=-1; fi + cp $JENKINS_WKSP/cmake_targets/log/basic_simulator_enb.txt $ARCHIVES_LOC +else + STATUS=-1 +fi +if [ -f $JENKINS_WKSP/cmake_targets/log/basic_simulator_ue.txt ] +then + LOCAL_STAT=`egrep -c "Built target lte-uesoftmodem" $JENKINS_WKSP/cmake_targets/log/basic_simulator_ue.txt` + if [ $LOCAL_STAT -eq 0 ]; then STATUS=-1; fi + cp $JENKINS_WKSP/cmake_targets/log/basic_simulator_ue.txt $ARCHIVES_LOC +else + STATUS=-1 +fi +if [ -f $JENKINS_WKSP/cmake_targets/log/conf2uedata.Rel14.txt ] +then + LOCAL_STAT=`egrep -c "Built target conf2uedata" $JENKINS_WKSP/cmake_targets/log/conf2uedata.Rel14.txt` + if [ $LOCAL_STAT -eq 0 ]; then STATUS=-1; fi + cp $JENKINS_WKSP/cmake_targets/log/conf2uedata.Rel14.txt $ARCHIVES_LOC +else + STATUS=-1 +fi + +############################################################ +# Creating a zip for Jenkins archiving +############################################################ +cd $JENKINS_WKSP/archives/ +zip -r local_build_logs.zip basic_sim enb_usrp + +exit $STATUS diff --git a/ci-scripts/checkCodingFormattingRules.sh b/ci-scripts/checkCodingFormattingRules.sh index fb35ce35aed0790b13bd85b3e28057edc7c1d3d2..20657b7fd0ade53a3f4e67a5264e3a95fb545afa 100755 --- a/ci-scripts/checkCodingFormattingRules.sh +++ b/ci-scripts/checkCodingFormattingRules.sh @@ -1,51 +1,121 @@ #!/bin/bash +function usage { + echo "OAI Coding / Formatting Guideline Check script" + echo " Original Author: Raphael Defosseux" + echo "" + echo " Requirement: astyle shall be installed" + echo "" + echo " By default (no options) the complete repository will be checked" + echo " In case of merge request, provided source and target branch," + echo " the script will check only the modified files" + echo "" + echo "Usage:" + echo "------" + echo " checkCodingFormattingRules.sh [OPTIONS]" + echo "" + echo "Options:" + echo "--------" + echo " --src-branch #### OR -sb ####" + echo " Specify the source branch of the merge request." + echo "" + echo " --target-branch #### OR -tb ####" + echo " Specify the target branch of the merge request (usually develop)." + echo "" + echo " --help OR -h" + echo " Print this help message." + echo "" +} + +if [ $# -ne 4 ] && [ $# -ne 1 ] && [ $# -ne 0 ] +then + echo "Syntax Error: not the correct number of arguments" + echo "" + usage + exit 1 +fi + if [ $# -eq 0 ] then + echo " ---- Checking the whole repository ----" + echo "" NB_FILES_TO_FORMAT=`astyle --dry-run --options=ci-scripts/astyle-options.txt --recursive *.c *.h | grep -c Formatted ` echo "Nb Files that do NOT follow OAI rules: $NB_FILES_TO_FORMAT" + echo $NB_FILES_TO_FORMAT > ./oai_rules_result.txt exit 0 fi -if [ $# -eq 2 ] -then - # Merge request scenario - - SOURCE_BRANCH=$1 - echo "Source Branch is : $SOURCE_BRANCH" - - TARGET_BRANCH=$2 - echo "Target Branch is : $TARGET_BRANCH" - - MERGE_COMMMIT=`git log -n1 | grep commit | sed -e "s@commit @@"` - echo "Merged Commit is : $MERGE_COMMMIT" - TARGET_INIT_COMMIT=`cat .git/refs/remotes/origin/$TARGET_BRANCH` - echo "Target Init is : $TARGET_INIT_COMMIT" - - # Retrieve the list of modified files since the latest develop commit - MODIFIED_FILES=`git log $TARGET_INIT_COMMIT..$MERGE_COMMMIT --oneline --name-status | egrep "^M|^A" | sed -e "s@^M\t*@@" -e "s@^A\t*@@" | sort | uniq` - NB_TO_FORMAT=0 - for FULLFILE in $MODIFIED_FILES - do - echo $FULLFILE - filename=$(basename -- "$FULLFILE") - EXT="${filename##*.}" - if [ $EXT = "c" ] || [ $EXT = "h" ] || [ $EXT = "cpp" ] || [ $EXT = "hpp" ] - then - TO_FORMAT=`astyle --dry-run --options=ci-scripts/astyle-options.txt $FULLFILE | grep -c Formatted ` - NB_TO_FORMAT=$((NB_TO_FORMAT + TO_FORMAT)) - fi - done - echo "Nb Files that do NOT follow OAI rules: $NB_TO_FORMAT" - echo $NB_TO_FORMAT > ./oai_rules_result.txt +checker=0 +while [[ $# -gt 0 ]] +do +key="$1" +case $key in + -h|--help) + shift + usage exit 0 -fi + ;; + -sb|--src-branch) + SOURCE_BRANCH="$2" + let "checker|=0x1" + shift + shift + ;; + -tb|--target-branch) + TARGET_BRANCH="$2" + let "checker|=0x2" + shift + shift + ;; + *) + echo "Syntax Error: unknown option: $key" + echo "" + usage + exit 1 +esac -if [ $# -ne 0 ] || [ $# -ne 2 ] +done + + +if [ $checker -ne 3 ] then - echo "Syntax error: $0 without any option will check all files in repository" - echo " or: $0 source-branch target-branch" - echo " will only check files that are pushed for a merge-request" + echo "Source Branch is : $SOURCE_BRANCH" + echo "Target Branch is : $TARGET_BRANCH" + echo "" + echo "Syntax Error: missing option" + echo "" + usage exit 1 fi + +# Merge request scenario + +MERGE_COMMMIT=`git log -n1 | grep commit | sed -e "s@commit @@"` +TARGET_INIT_COMMIT=`cat .git/refs/remotes/origin/$TARGET_BRANCH` + +echo " ---- Checking the modified files by the merge request ----" +echo "" +echo "Source Branch is : $SOURCE_BRANCH" +echo "Target Branch is : $TARGET_BRANCH" +echo "Merged Commit is : $MERGE_COMMMIT" +echo "Target Init is : $TARGET_INIT_COMMIT" + +# Retrieve the list of modified files since the latest develop commit +MODIFIED_FILES=`git log $TARGET_INIT_COMMIT..$MERGE_COMMMIT --oneline --name-status | egrep "^M|^A" | sed -e "s@^M\t*@@" -e "s@^A\t*@@" | sort | uniq` +NB_TO_FORMAT=0 +for FULLFILE in $MODIFIED_FILES +do + echo $FULLFILE + filename=$(basename -- "$FULLFILE") + EXT="${filename##*.}" + if [ $EXT = "c" ] || [ $EXT = "h" ] || [ $EXT = "cpp" ] || [ $EXT = "hpp" ] + then + TO_FORMAT=`astyle --dry-run --options=ci-scripts/astyle-options.txt $FULLFILE | grep -c Formatted ` + NB_TO_FORMAT=$((NB_TO_FORMAT + TO_FORMAT)) + fi +done +echo "Nb Files that do NOT follow OAI rules: $NB_TO_FORMAT" +echo $NB_TO_FORMAT > ./oai_rules_result.txt + +exit 0 diff --git a/ci-scripts/doGitLabMerge.sh b/ci-scripts/doGitLabMerge.sh index 07636cb6cb60c46f61260617d1774d4e0c0569cd..cc6f38c81063b3f7dc370d428fe4f8205f4eb950 100755 --- a/ci-scripts/doGitLabMerge.sh +++ b/ci-scripts/doGitLabMerge.sh @@ -1,23 +1,102 @@ #!/bin/bash -if [ $# -ne 4 ] +function usage { + echo "OAI GitLab merge request applying script" + echo " Original Author: Raphael Defosseux" + echo "" + echo "Usage:" + echo "------" + echo "" + echo " doGitLabMerge.sh [OPTIONS] [MANDATORY_OPTIONS]" + echo "" + echo "Mandatory Options:" + echo "------------------" + echo "" + echo " --src-branch #### OR -sb ####" + echo " Specify the source branch of the merge request." + echo "" + echo " --src-commit #### OR -sc ####" + echo " Specify the source commit ID (SHA-1) of the merge request." + echo "" + echo " --target-branch #### OR -tb ####" + echo " Specify the target branch of the merge request (usually develop)." + echo "" + echo " --target-commit #### OR -tc ####" + echo " Specify the target commit ID (SHA-1) of the merge request." + echo "" + echo "Options:" + echo "--------" + echo " --help OR -h" + echo " Print this help message." + echo "" +} + +if [ $# -ne 8 ] && [ $# -ne 1 ] then - echo "Syntax Error: $0 src-branch src-commit-id dest-branch dest-commit-id" + echo "Syntax Error: not the correct number of arguments" + echo "" + usage exit 1 fi -SOURCE_BRANCH=$1 -echo "Source Branch is : $SOURCE_BRANCH" +checker=0 +while [[ $# -gt 0 ]] +do +key="$1" -SOURCE_COMMIT_ID=$2 -echo "Source Commit ID is : $SOURCE_COMMIT_ID" +case $key in + -h|--help) + shift + usage + exit 0 + ;; + -sb|--src-branch) + SOURCE_BRANCH="$2" + let "checker|=0x1" + shift + shift + ;; + -sc|--src-commit) + SOURCE_COMMIT_ID="$2" + let "checker|=0x2" + shift + shift + ;; + -tb|--target-branch) + TARGET_BRANCH="$2" + let "checker|=0x4" + shift + shift + ;; + -tc|--target-commit) + TARGET_COMMIT_ID="$2" + let "checker|=0x8" + shift + shift + ;; + *) + echo "Syntax Error: unknown option: $key" + echo "" + usage + exit 1 +esac -TARGET_BRANCH=$3 -echo "Target Branch is : $TARGET_BRANCH" +done -TARGET_COMMIT_ID=$4 +echo "Source Branch is : $SOURCE_BRANCH" +echo "Source Commit ID is : $SOURCE_COMMIT_ID" +echo "Target Branch is : $TARGET_BRANCH" echo "Target Commit ID is : $TARGET_COMMIT_ID" +if [ $checker -ne 15 ] +then + echo "" + echo "Syntax Error: missing option" + echo "" + usage + exit 1 +fi + git config user.email "jenkins@openairinterface.org" git config user.name "OAI Jenkins" @@ -25,3 +104,6 @@ git checkout -f $SOURCE_COMMIT_ID git merge --ff $TARGET_COMMIT_ID -m "Temporary merge for CI" +exit 0 + + diff --git a/ci-scripts/reportBuildLocally.sh b/ci-scripts/reportBuildLocally.sh new file mode 100755 index 0000000000000000000000000000000000000000..d3dd1f52a0af51f53379caba8c71def2c6282b4b --- /dev/null +++ b/ci-scripts/reportBuildLocally.sh @@ -0,0 +1,535 @@ +#!/bin/bash + +function usage { + echo "OAI Local Build Report script" + echo " Original Author: Raphael Defosseux" + echo "" + echo "Usage:" + echo "------" + echo "" + echo " reportBuildLocally.sh [OPTIONS]" + echo "" + echo "Options:" + echo "--------" + echo "" + echo " --help OR -h" + echo " Print this help message." + echo "" + echo "Job Options:" + echo "------------" + echo "" + echo " --git-url #### OR -gu ####" + echo " Specify the URL of the GIT Repository." + echo "" + echo " --job-name #### OR -jn ####" + echo " Specify the name of the Jenkins job." + echo "" + echo " --build-id #### OR -id ####" + echo " Specify the build ID of the Jenkins job." + echo "" + echo " --trigger merge-request OR -mr" + echo " --trigger push OR -pu" + echo " Specify trigger action of the Jenkins job. Either a merge-request event or a push event." + echo "" + echo "Merge-Request Options:" + echo "----------------------" + echo "" + echo " --src-branch #### OR -sb ####" + echo " Specify the source branch of the merge request." + echo "" + echo " --src-commit #### OR -sc ####" + echo " Specify the source commit ID (SHA-1) of the merge request." + echo "" + echo " --target-branch #### OR -tb ####" + echo " Specify the target branch of the merge request (usually develop)." + echo "" + echo " --target-commit #### OR -tc ####" + echo " Specify the target commit ID (SHA-1) of the merge request." + echo "" + echo "Push Options:" + echo "----------------------" + echo "" + echo " --branch #### OR -br ####" + echo " Specify the branch of the push event." + echo "" + echo " --commit #### OR -co ####" + echo " Specify the commit ID (SHA-1) of the push event." + echo "" + echo "" +} + +function trigger_usage { + echo "OAI Local Build Report script" + echo " Original Author: Raphael Defosseux" + echo "" + echo " --trigger merge-request OR -mr" + echo " --trigger push OR -pu" + echo " Specify trigger action of the Jenkins job. Either a merge-request event or a push event." + echo "" +} + +jb_checker=0 +mr_checker=0 +pu_checker=0 +MR_TRIG=0 +PU_TRIG=0 +while [[ $# -gt 0 ]] +do +key="$1" + +case $key in + -h|--help) + shift + usage + exit 0 + ;; + -gu|--git-url) + GIT_URL="$2" + let "jb_checker|=0x1" + shift + shift + ;; + -jn|--job-name) + JOB_NAME="$2" + let "jb_checker|=0x2" + shift + shift + ;; + -id|--build-id) + BUILD_ID="$2" + let "jb_checker|=0x4" + shift + shift + ;; + --trigger) + TRIG="$2" + case $TRIG in + merge-request) + MR_TRIG=1 + ;; + push) + PU_TRIG=1 + ;; + *) + echo "" + echo "Syntax Error: Invalid Trigger option -> $TRIG" + echo "" + trigger_usage + exit + ;; + esac + let "jb_checker|=0x8" + shift + shift + ;; + -mr) + MR_TRIG=1 + let "jb_checker|=0x8" + shift + ;; + -pu) + PU_TRIG=1 + let "jb_checker|=0x8" + shift + ;; + -sb|--src-branch) + SOURCE_BRANCH="$2" + let "mr_checker|=0x1" + shift + shift + ;; + -sc|--src-commit) + SOURCE_COMMIT_ID="$2" + let "mr_checker|=0x2" + shift + shift + ;; + -tb|--target-branch) + TARGET_BRANCH="$2" + let "mr_checker|=0x4" + shift + shift + ;; + -tc|--target-commit) + TARGET_COMMIT_ID="$2" + let "mr_checker|=0x8" + shift + shift + ;; + -br|--branch) + SOURCE_BRANCH="$2" + let "pu_checker|=0x1" + shift + shift + ;; + -co|--commit) + SOURCE_COMMIT_ID="$2" + let "pu_checker|=0x2" + shift + shift + ;; + *) + echo "Syntax Error: unknown option: $key" + echo "" + usage + exit 1 + ;; +esac + +done + +if [ $jb_checker -ne 15 ] +then + echo "" + echo "Syntax Error: missing job information." + # TODO : list missing info + echo "" + exit 1 +fi + +if [ $PU_TRIG -eq 1 ] && [ $MR_TRIG -eq 1 ] +then + echo "" + echo "Syntax Error: trigger action incoherent." + echo "" + trigger_usage + exit 1 +fi + +if [ $PU_TRIG -eq 1 ] +then + if [ $pu_checker -ne 3 ] + then + echo "" + echo "Syntax Error: missing push information." + # TODO : list missing info + echo "" + exit 1 + fi +fi + +if [ $MR_TRIG -eq 1 ] +then + if [ $mr_checker -ne 15 ] + then + echo "" + echo "Syntax Error: missing merge-request information." + # TODO : list missing info + echo "" + exit 1 + fi +fi + +echo "<!DOCTYPE html>" > ./build_results.html +echo "<html class=\"no-js\" lang=\"en-US\">" >> ./build_results.html +echo "<head>" >> ./build_results.html +echo " <title>Build Results for $JOB_NAME job build #$BUILD_ID</title>" >> ./build_results.html +echo "</head>" >> ./build_results.html +echo "<body>" >> ./build_results.html +echo " <h1>Job Summary -- Job: $JOB_NAME -- Build-ID: $BUILD_ID</h1>" >> ./build_results.html +echo " <table border = \"1\">" >> ./build_results.html +echo " <tr>" >> ./build_results.html +echo " <td bgcolor = \"lightcyan\" >GIT Repository</td>" >> ./build_results.html +echo " <td>$GIT_URL</td>" >> ./build_results.html +echo " </tr>" >> ./build_results.html +echo " <tr>" >> ./build_results.html +echo " <td bgcolor = \"lightcyan\" >Job Trigger</td>" >> ./build_results.html +if [ $PU_TRIG -eq 1 ]; then echo " <td>Push Event</td>" >> ./build_results.html; fi +if [ $MR_TRIG -eq 1 ]; then echo " <td>Merge-Request</td>" >> ./build_results.html; fi +echo " </tr>" >> ./build_results.html +if [ $PU_TRIG -eq 1 ] +then + echo " <tr>" >> ./build_results.html + echo " <td bgcolor = \"lightcyan\" >Branch</td>" >> ./build_results.html + echo " <td>$SOURCE_BRANCH</td>" >> ./build_results.html + echo " </tr>" >> ./build_results.html + echo " <tr>" >> ./build_results.html + echo " <td bgcolor = \"lightcyan\" >Commit ID</td>" >> ./build_results.html + echo " <td>$SOURCE_COMMIT_ID</td>" >> ./build_results.html + echo " </tr>" >> ./build_results.html +fi +if [ $MR_TRIG -eq 1 ] +then + echo " <tr>" >> ./build_results.html + echo " <td bgcolor = \"lightcyan\" >Source Branch</td>" >> ./build_results.html + echo " <td>$SOURCE_BRANCH</td>" >> ./build_results.html + echo " </tr>" >> ./build_results.html + echo " <tr>" >> ./build_results.html + echo " <td bgcolor = \"lightcyan\" >Source Commit ID</td>" >> ./build_results.html + echo " <td>$SOURCE_COMMIT_ID</td>" >> ./build_results.html + echo " </tr>" >> ./build_results.html + echo " <tr>" >> ./build_results.html + echo " <td bgcolor = \"lightcyan\" >Target Branch</td>" >> ./build_results.html + echo " <td>$TARGET_BRANCH</td>" >> ./build_results.html + echo " </tr>" >> ./build_results.html + echo " <tr>" >> ./build_results.html + echo " <td bgcolor = \"lightcyan\" >Target Commit ID</td>" >> ./build_results.html + echo " <td>$TARGET_COMMIT_ID</td>" >> ./build_results.html + echo " </tr>" >> ./build_results.html +fi +echo " </table>" >> ./build_results.html +echo " <h2>Build Summary</h2>" >> ./build_results.html + +if [ -f ./oai_rules_result.txt ] +then + echo " <h3>OAI Coding / Formatting Guidelines Check</h3>" >> ./build_results.html + echo " <table border = "1">" >> ./build_results.html + echo " <tr>" >> ./build_results.html + echo " <td bgcolor = \"lightcyan\" >Result:</td>" >> ./build_results.html + NB_FILES=`cat ./oai_rules_result.txt` + if [ $NB_FILES = "0" ] + then + if [ $PU_TRIG -eq 1 ]; then echo " <td bgcolor = \"green\">All files in repository follow OAI rules. </td>" >> ./build_results.html; fi + if [ $MR_TRIG -eq 1 ]; then echo " <td bgcolor = \"green\">All modified files in Merge-Request follow OAI rules.</td>" >> ./build_results.html; fi + else + if [ $PU_TRIG -eq 1 ]; then echo " <td bgcolor = \"orange\">$NB_FILES files in repository DO NOT follow OAI rules. </td>" >> ./build_results.html; fi + if [ $MR_TRIG -eq 1 ]; then echo " <td bgcolor = \"orange\">$NB_FILES modified files in Merge-Request DO NOT follow OAI rules.</td>" >> ./build_results.html; fi + fi + echo " </tr>" >> ./build_results.html + echo " </table>" >> ./build_results.html +fi + +echo " <h3>OAI Build eNb -- USRP option</h3>" >> ./build_results.html +echo " <table border = "1">" >> ./build_results.html +echo " <tr>" >> ./build_results.html +echo " <th>Element</th>" >> ./build_results.html +echo " <th>Status</th>" >> ./build_results.html +echo " <th>Nb Errors</th>" >> ./build_results.html +echo " <th>Nb Warnings</th>" >> ./build_results.html +echo " </tr>" >> ./build_results.html +echo " <tr>" >> ./build_results.html +echo " <td bgcolor = \"lightcyan\" >LTE SoftModem - Release 14</th>" >> ./build_results.html +if [ -f ./archives/enb_usrp/lte-softmodem.Rel14.txt ] +then + STATUS=`egrep -c "Built target lte-softmodem" ./archives/enb_usrp/lte-softmodem.Rel14.txt` + if [ $STATUS -eq 1 ] + then + echo " <td bgcolor = \"green\" >OK</th>" >> ./build_results.html + else + echo " <td bgcolor = \"red\" >KO</th>" >> ./build_results.html + fi + STATUS=`egrep -c "error:" ./archives/enb_usrp/lte-softmodem.Rel14.txt` + if [ $STATUS -eq 0 ] + then + echo " <td bgcolor = \"green\" >$STATUS</th>" >> ./build_results.html + else + echo " <td bgcolor = \"red\" >$STATUS</th>" >> ./build_results.html + fi + STATUS=`egrep -c "warning:" ./archives/enb_usrp/lte-softmodem.Rel14.txt` + if [ $STATUS -eq 0 ] + then + echo " <td bgcolor = \"green\" >$STATUS</th>" >> ./build_results.html + else + echo " <td bgcolor = \"orange\" >$STATUS</th>" >> ./build_results.html + fi +else + echo " <td bgcolor = \"lightgray\" >Unknown</th>" >> ./build_results.html + echo " <td bgcolor = \"lightgray\" >--</th>" >> ./build_results.html + echo " <td bgcolor = \"lightgray\" >--</th>" >> ./build_results.html +fi +echo " </tr>" >> ./build_results.html +echo " <tr>" >> ./build_results.html +echo " <td bgcolor = \"lightcyan\" >Coding - Release 14</th>" >> ./build_results.html +if [ -f ./archives/enb_usrp/coding.Rel14.txt ] +then + STATUS=`egrep -c "Built target coding" ./archives/enb_usrp/coding.Rel14.txt` + if [ $STATUS -eq 1 ] + then + echo " <td bgcolor = \"green\" >OK</th>" >> ./build_results.html + else + echo " <td bgcolor = \"red\" >KO</th>" >> ./build_results.html + fi + STATUS=`egrep -c "error:" ./archives/enb_usrp/coding.Rel14.txt` + if [ $STATUS -eq 0 ] + then + echo " <td bgcolor = \"green\" >$STATUS</th>" >> ./build_results.html + else + echo " <td bgcolor = \"red\" >$STATUS</th>" >> ./build_results.html + fi + STATUS=`egrep -c "warning:" ./archives/enb_usrp/coding.Rel14.txt` + if [ $STATUS -eq 0 ] + then + echo " <td bgcolor = \"green\" >$STATUS</th>" >> ./build_results.html + else + echo " <td bgcolor = \"orange\" >$STATUS</th>" >> ./build_results.html + fi +else + echo " <td bgcolor = \"lightgray\" >Unknown</th>" >> ./build_results.html + echo " <td bgcolor = \"lightgray\" >--</th>" >> ./build_results.html + echo " <td bgcolor = \"lightgray\" >--</th>" >> ./build_results.html +fi +echo " </tr>" >> ./build_results.html +echo " <tr>" >> ./build_results.html +echo " <td bgcolor = \"lightcyan\" >OAI USRP device if - Release 14</th>" >> ./build_results.html +if [ -f ./archives/enb_usrp/oai_usrpdevif.Rel14.txt ] +then + STATUS=`egrep -c "Built target oai_usrpdevif" ./archives/enb_usrp/oai_usrpdevif.Rel14.txt` + if [ $STATUS -eq 1 ] + then + echo " <td bgcolor = \"green\" >OK</th>" >> ./build_results.html + else + echo " <td bgcolor = \"red\" >KO</th>" >> ./build_results.html + fi + STATUS=`egrep -c "error:" ./archives/enb_usrp/oai_usrpdevif.Rel14.txt` + if [ $STATUS -eq 0 ] + then + echo " <td bgcolor = \"green\" >$STATUS</th>" >> ./build_results.html + else + echo " <td bgcolor = \"red\" >$STATUS</th>" >> ./build_results.html + fi + STATUS=`egrep -c "warning:" ./archives/enb_usrp/oai_usrpdevif.Rel14.txt` + if [ $STATUS -eq 0 ] + then + echo " <td bgcolor = \"green\" >$STATUS</th>" >> ./build_results.html + else + echo " <td bgcolor = \"orange\" >$STATUS</th>" >> ./build_results.html + fi +else + echo " <td bgcolor = \"lightgray\" >Unknown</th>" >> ./build_results.html + echo " <td bgcolor = \"lightgray\" >--</th>" >> ./build_results.html + echo " <td bgcolor = \"lightgray\" >--</th>" >> ./build_results.html +fi +echo " </tr>" >> ./build_results.html +echo " <tr>" >> ./build_results.html +echo " <td bgcolor = \"lightcyan\" >Parameters Lib Config - Release 14</th>" >> ./build_results.html +if [ -f ./archives/enb_usrp/params_libconfig.Rel14.txt ] +then + STATUS=`egrep -c "Built target params_libconfig" ./archives/enb_usrp/params_libconfig.Rel14.txt` + if [ $STATUS -eq 1 ] + then + echo " <td bgcolor = \"green\" >OK</th>" >> ./build_results.html + else + echo " <td bgcolor = \"red\" >KO</th>" >> ./build_results.html + fi + STATUS=`egrep -c "error:" ./archives/enb_usrp/params_libconfig.Rel14.txt` + if [ $STATUS -eq 0 ] + then + echo " <td bgcolor = \"green\" >$STATUS</th>" >> ./build_results.html + else + echo " <td bgcolor = \"red\" >$STATUS</th>" >> ./build_results.html + fi + STATUS=`egrep -c "warning:" ./archives/enb_usrp/params_libconfig.Rel14.txt` + if [ $STATUS -eq 0 ] + then + echo " <td bgcolor = \"green\" >$STATUS</th>" >> ./build_results.html + else + echo " <td bgcolor = \"orange\" >$STATUS</th>" >> ./build_results.html + fi +else + echo " <td bgcolor = \"lightgray\" >Unknown</th>" >> ./build_results.html + echo " <td bgcolor = \"lightgray\" >--</th>" >> ./build_results.html + echo " <td bgcolor = \"lightgray\" >--</th>" >> ./build_results.html +fi +echo " </tr>" >> ./build_results.html +echo " </table>" >> ./build_results.html + +# conf2uedata.Rel14.txt +# archives/basic_sim + +echo " <h3>OAI Build basic simulator option</h3>" >> ./build_results.html +echo " <table border = "1">" >> ./build_results.html +echo " <tr>" >> ./build_results.html +echo " <th>Element</th>" >> ./build_results.html +echo " <th>Status</th>" >> ./build_results.html +echo " <th>Nb Errors</th>" >> ./build_results.html +echo " <th>Nb Warnings</th>" >> ./build_results.html +echo " </tr>" >> ./build_results.html +echo " <tr>" >> ./build_results.html +echo " <td bgcolor = \"lightcyan\" >Basic Simulator eNb - Release 14</th>" >> ./build_results.html +if [ -f ./archives/basic_sim/basic_simulator_enb.txt ] +then + STATUS=`egrep -c "Built target lte-softmodem" ./archives/basic_sim/basic_simulator_enb.txt` + if [ $STATUS -eq 1 ] + then + echo " <td bgcolor = \"green\" >OK</th>" >> ./build_results.html + else + echo " <td bgcolor = \"red\" >KO</th>" >> ./build_results.html + fi + STATUS=`egrep -c "error:" ./archives/basic_sim/basic_simulator_enb.txt` + if [ $STATUS -eq 0 ] + then + echo " <td bgcolor = \"green\" >$STATUS</th>" >> ./build_results.html + else + echo " <td bgcolor = \"red\" >$STATUS</th>" >> ./build_results.html + fi + STATUS=`egrep -c "warning:" ./archives/basic_sim/basic_simulator_enb.txt` + if [ $STATUS -eq 0 ] + then + echo " <td bgcolor = \"green\" >$STATUS</th>" >> ./build_results.html + else + echo " <td bgcolor = \"orange\" >$STATUS</th>" >> ./build_results.html + fi +else + echo " <td bgcolor = \"lightgray\" >Unknown</th>" >> ./build_results.html + echo " <td bgcolor = \"lightgray\" >--</th>" >> ./build_results.html + echo " <td bgcolor = \"lightgray\" >--</th>" >> ./build_results.html +fi +echo " </tr>" >> ./build_results.html +echo " <tr>" >> ./build_results.html +echo " <td bgcolor = \"lightcyan\" >Basic Simulator UE - Release 14</th>" >> ./build_results.html +if [ -f ./archives/basic_sim/basic_simulator_ue.txt ] +then + STATUS=`egrep -c "Built target lte-uesoftmodem" ./archives/basic_sim/basic_simulator_ue.txt` + if [ $STATUS -eq 1 ] + then + echo " <td bgcolor = \"green\" >OK</th>" >> ./build_results.html + else + echo " <td bgcolor = \"red\" >KO</th>" >> ./build_results.html + fi + STATUS=`egrep -c "error:" ./archives/basic_sim/basic_simulator_ue.txt` + if [ $STATUS -eq 0 ] + then + echo " <td bgcolor = \"green\" >$STATUS</th>" >> ./build_results.html + else + echo " <td bgcolor = \"red\" >$STATUS</th>" >> ./build_results.html + fi + STATUS=`egrep -c "warning:" ./archives/basic_sim/basic_simulator_ue.txt` + if [ $STATUS -eq 0 ] + then + echo " <td bgcolor = \"green\" >$STATUS</th>" >> ./build_results.html + else + echo " <td bgcolor = \"orange\" >$STATUS</th>" >> ./build_results.html + fi +else + echo " <td bgcolor = \"lightgray\" >Unknown</th>" >> ./build_results.html + echo " <td bgcolor = \"lightgray\" >--</th>" >> ./build_results.html + echo " <td bgcolor = \"lightgray\" >--</th>" >> ./build_results.html +fi +echo " </tr>" >> ./build_results.html +echo " <tr>" >> ./build_results.html +echo " <td bgcolor = \"lightcyan\" >Conf 2 UE data - Release 14</th>" >> ./build_results.html +if [ -f ./archives/basic_sim/conf2uedata.Rel14.txt ] +then + STATUS=`egrep -c "Built target conf2uedata" ./archives/basic_sim/conf2uedata.Rel14.txt` + if [ $STATUS -eq 1 ] + then + echo " <td bgcolor = \"green\" >OK</th>" >> ./build_results.html + else + echo " <td bgcolor = \"red\" >KO</th>" >> ./build_results.html + fi + STATUS=`egrep -c "error:" ./archives/basic_sim/conf2uedata.Rel14.txt` + if [ $STATUS -eq 0 ] + then + echo " <td bgcolor = \"green\" >$STATUS</th>" >> ./build_results.html + else + echo " <td bgcolor = \"red\" >$STATUS</th>" >> ./build_results.html + fi + STATUS=`egrep -c "warning:" ./archives/basic_sim/conf2uedata.Rel14.txt` + if [ $STATUS -eq 0 ] + then + echo " <td bgcolor = \"green\" >$STATUS</th>" >> ./build_results.html + else + echo " <td bgcolor = \"orange\" >$STATUS</th>" >> ./build_results.html + fi +else + echo " <td bgcolor = \"lightgray\" >Unknown</th>" >> ./build_results.html + echo " <td bgcolor = \"lightgray\" >--</th>" >> ./build_results.html + echo " <td bgcolor = \"lightgray\" >--</th>" >> ./build_results.html +fi +echo " </tr>" >> ./build_results.html +echo " </table>" >> ./build_results.html + +echo "</body>" >> ./build_results.html +echo "</html>" >> ./build_results.html + +exit 0 diff --git a/cmake_targets/build_oai b/cmake_targets/build_oai index 2de8298ffc5aa9cacf38bbea223bfa9d0b4f3c4e..b1fc933e966979b4c67601ba7e57dcf256168cb5 100755 --- a/cmake_targets/build_oai +++ b/cmake_targets/build_oai @@ -968,7 +968,8 @@ fi { cd $OPENAIR_DIR/cmake_targets/basic_simulator/enb cmake . - make -j`nproc` coding params_libconfig tcp_bridge_oai lte-softmodem + make -j`nproc` lte-softmodem + make -j`nproc` coding params_libconfig tcp_bridge_oai ln -sf libtcp_bridge_oai.so liboai_device.so cd ../.. } > $dlog/basic_simulator_enb.txt 2>&1 @@ -1023,7 +1024,8 @@ fi { cd $OPENAIR_DIR/cmake_targets/basic_simulator/ue cmake . - make -j`nproc` coding params_libconfig tcp_bridge_oai lte-uesoftmodem + make -j`nproc` lte-uesoftmodem + make -j`nproc` coding params_libconfig tcp_bridge_oai ln -sf libtcp_bridge_oai.so liboai_device.so cd ../.. } > $dlog/basic_simulator_ue.txt 2>&1