Jenkins script for Jenkins Pipeline jobs **
*******************************************

All the Jenkins files are under the dependencies folders are the dependencies of the Jenkins file.

Some tips for the Jenkins File:


1. If you want to change the branch to be run on weekdays and weekends (VM, BM) :

  1) go to VM_BMJenkinsfileTrigger
  2) change the portion on line 31 :
     current_version = "master"
     previous_version = "1.15"
     before_previous_version = "2.1"


2. If you want to change the branch to be run for the Segment Routing tests :

  1) go to the FabricJenkinsfileTrigger
  2) change the variable values on line 32:
     current_version = "master"
     previous_version = "1.15"
     before_previous_version = "2.1"
  3) If you want certain branch to be run on different machine then change
     a) line 155 - 157:
        testcases[ "SR" ][ "nodeName" ][ <node you want> ] 0: Fabric2, 1: Fabric3, 2: Fabric4
     b) Then, go to dependencies/JenkinsCommonFuncs.groovy
        change def fabricOn( branch ) on line 86.
        Currently, master, 2.1 and 1.15 run on Fabric4, 3 and 2 respectively.
     c) Make sure to change the URLs on Wiki as well. If 1.15 runs on Fabric2 instead of Fabric3, then you
        have to update the URL from
          https://jenkins.onosproject.org/view/QA/job/postjob-Fabric3/lastSuccessfulBuild/artifact/SRBridging_onos-1.15_20-builds_graph.jpg
          to
          https://jenkins.onosproject.org/view/QA/job/postjob-Fabric2/lastSuccessfulBuild/artifact/SRBridging_onos-1.15_20-builds_graph.jpg


3. If you want to upload additional logs for the Segment Routing tests:

   1) go to dependencies/JenkinsCommonFuncs.groovy,
   2) change def copyLogs( testName ) on line 174.
   3) you may change/add/remove files from there.


4. If you want to add a new test. ( non-SCPF tests like FUNC,HA,USECASE, and SR ):

   1) go to dependencies/JenkinsTestONTests.groovy.
   2) Add the new test on the list.
   3) Make sure to also create a new wiki page for wiki link before running the test.
      Since publish to confluence does not make new page, it has to be there before gets published.
   4) If your new test's category is not scheduled :
       a) For non-Segment Routing test :
          i) go to VM_BMJenkinsFileTrigger
          ii) add your new category on any days you want it to be run after line 223.
       b) For Segment Routing test:
          i) go to FabricJenkinsfileTrigger
          ii) add your new category after line 113.
   5) add your new graph to the wiki page.

5. If you want to add a new test ( SCPF ):
   1) Outside the Jenkins file requirement : need to add new table, function, view and its rule to the database first.
   2) go to dependencies/JenkinsTestONTests.groovy and follow the 4 steps procedure for scheduling.
   3) go to dependencies/PerformanceFuncs.groovy and add a new test in the dictionary.
   4) It explains details about which to add in the file.
   5) Make a Rscript for that test.
   6) add your new graph to the wiki page.
