From 8a32b6803819cfc0a2df92303b1d93abf8932089 Mon Sep 17 00:00:00 2001
From: George Joseph <gjoseph@digium.com>
Date: Fri, 12 Apr 2019 10:32:44 -0600
Subject: [PATCH] CI: Move test group config files to Jenkins

One of the downaides of having things like test configuration
in the git repo is that it can't be changed at runtime.  You have
to create a review for the changes and merge it mefore it will
take effect.

This review moves the data currently held in
tests/CI/periodic-dailyTestGroups.json and
tests/CI/gateTestGroups.json into a Jenkins Config File attached
to the job definitions.  This allows us to alter it from the
Jenkins UI at runtime.  The original files stay in the repo
as documentation.

Change-Id: I14b9702f6285ce1fb2420287ba0e7d3b59109763
---
 tests/CI/gateTestGroups.json           |  7 +++++++
 tests/CI/gates.jenkinsfile             | 11 ++++++++++-
 tests/CI/periodic-dailyTestGroups.json |  6 ++++++
 tests/CI/periodics-daily.jenkinsfile   |  7 ++++++-
 4 files changed, 29 insertions(+), 2 deletions(-)

diff --git a/tests/CI/gateTestGroups.json b/tests/CI/gateTestGroups.json
index d0488962ba..415a7d709b 100644
--- a/tests/CI/gateTestGroups.json
+++ b/tests/CI/gateTestGroups.json
@@ -1,3 +1,10 @@
+/*
+ * This file is for reference/documentation only.
+ * The live configuration is defined in the Config Files
+ * settings of the Asterisk Gates Jenkins job.
+ * This allows is to alter the parameters at runtime.
+ */
+
 [
 	{
 		"name": "ari1",
diff --git a/tests/CI/gates.jenkinsfile b/tests/CI/gates.jenkinsfile
index bc23781d6f..a90b0cf8e0 100644
--- a/tests/CI/gates.jenkinsfile
+++ b/tests/CI/gates.jenkinsfile
@@ -159,7 +159,16 @@ pipeline {
 						}
 					}
 
-					def testGroups = readJSON file: "tests/CI/gateTestGroups.json"
+					def testGroups
+					configFileProvider([configFile(fileId: 'asterisk_gate_test_groups', variable: 'GATE_TEST_GROUPS')]) {
+					echo "Retrieved config file from ${env.GATE_TEST_GROUPS}"
+						testGroups = readJSON file: env.GATE_TEST_GROUPS
+					}
+					echo "Running test groups:"
+					for (def testGroup in testGroups) {
+						echo "${testGroup.name} ${testGroup.dir} ${testGroup.testcmd}"
+					}
+
 					def parallelTasks = [ : ]
 
 					for (def testGroup in testGroups) {
diff --git a/tests/CI/periodic-dailyTestGroups.json b/tests/CI/periodic-dailyTestGroups.json
index 7f0fd7ecfa..cc837f69c7 100644
--- a/tests/CI/periodic-dailyTestGroups.json
+++ b/tests/CI/periodic-dailyTestGroups.json
@@ -1,3 +1,9 @@
+/*
+ * This file is for reference/documentation only.
+ * The live configuration is defined in the Config Files
+ * settings of the Asterisk Gates Jenkins job.
+ * This allows is to alter the parameters at runtime.
+ */
 [
 	{
 		"name": "ari ",
diff --git a/tests/CI/periodics-daily.jenkinsfile b/tests/CI/periodics-daily.jenkinsfile
index ae762f8e82..ae5a5f440c 100644
--- a/tests/CI/periodics-daily.jenkinsfile
+++ b/tests/CI/periodics-daily.jenkinsfile
@@ -91,7 +91,12 @@ pipeline {
 						}
 					}
 
-					def testGroups = readJSON file: "tests/CI/periodic-dailyTestGroups.json"
+					def testGroups
+					configFileProvider([configFile(fileId: 'asterisk_daily_test_groups', variable: 'DAILY_TEST_GROUPS')]) {
+					echo "Retrieved config file from ${env.DAILY_TEST_GROUPS}"
+						testGroups = readJSON file: env.DAILY_TEST_GROUPS
+					}
+
 					def parallelTasks = [ : ]
 
 					for (def testGroup in testGroups) {
-- 
GitLab