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.13"
     before_previous_version = "1.12"


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.13"
     before_previous_version = "1.12"
  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, 1.13 and 1.12 run on Fabric4, 2 and 3 respectively.
     c) Make sure to change the URLs on Wiki as well. If 1.12 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.12_20-builds_graph.jpg
          to
          https://jenkins.onosproject.org/view/QA/job/postjob-Fabric2/lastSuccessfulBuild/artifact/SRBridging_onos-1.12_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.
