[ 
https://issues.apache.org/jira/browse/BEAM-4691?focusedWorklogId=123534&page=com.atlassian.jira.plugin.system.issuetabpanels:worklog-tabpanel#worklog-123534
 ]

ASF GitHub Bot logged work on BEAM-4691:
----------------------------------------

                Author: ASF GitHub Bot
            Created on: 16/Jul/18 08:35
            Start Date: 16/Jul/18 08:35
    Worklog Time Spent: 10m 
      Work Description: lgajowy closed pull request #5831: [BEAM-4691] 
(do-not-merge-yet!) Move perf tests to a separate directory and rename them 
(conventionally)
URL: https://github.com/apache/beam/pull/5831
 
 
   

This is a PR merged from a forked repository.
As GitHub hides the original diff on merge, it is displayed below for
the sake of provenance:

As this is a foreign pull request (from a fork), the diff is supplied
below (as it won't show otherwise due to GitHub magic):

diff --git a/.test-infra/jenkins/common_job_properties.groovy 
b/.test-infra/jenkins/CommonProperties.groovy
similarity index 98%
rename from .test-infra/jenkins/common_job_properties.groovy
rename to .test-infra/jenkins/CommonProperties.groovy
index 81ec59bee18..1f3974eea5b 100644
--- a/.test-infra/jenkins/common_job_properties.groovy
+++ b/.test-infra/jenkins/CommonProperties.groovy
@@ -20,7 +20,7 @@
 // common properties that are shared among all Jenkins projects.
 // Code in this directory should conform to the Groovy style guide.
 //  http://groovy-lang.org/style-guide.html
-class common_job_properties {
+class CommonProperties {
 
   static String checkoutDir = 'src'
 
@@ -323,7 +323,7 @@ class common_job_properties {
         // Install Perfkit benchmark requirements.
         shell('.env/bin/pip install -r PerfKitBenchmarker/requirements.txt')
         // Install job requirements for Python SDK.
-        shell('.env/bin/pip install -e ' + common_job_properties.checkoutDir + 
'/sdks/python/[gcp,test]')
+        shell('.env/bin/pip install -e ' + CommonProperties.checkoutDir + 
'/sdks/python/[gcp,test]')
         // Launch performance test.
         shell(".env/bin/python PerfKitBenchmarker/pkb.py $pkbArgs")
     }
diff --git a/.test-infra/jenkins/job_Dependency_Check.groovy 
b/.test-infra/jenkins/DependencyCheck.groovy
similarity index 83%
rename from .test-infra/jenkins/job_Dependency_Check.groovy
rename to .test-infra/jenkins/DependencyCheck.groovy
index 6f3e1063347..448564ab65d 100644
--- a/.test-infra/jenkins/job_Dependency_Check.groovy
+++ b/.test-infra/jenkins/DependencyCheck.groovy
@@ -16,34 +16,34 @@
  * limitations under the License.
  */
 
-import common_job_properties
+import CommonProperties as commonProperties
 
 job('beam_Dependency_Check') {
   description('Runs Beam dependency check.')
 
   // Set common parameters.
-  common_job_properties.setTopLevelMainJobProperties(delegate)
+  commonProperties.setTopLevelMainJobProperties(delegate)
 
   // Allows triggering this build against pull requests.
-  common_job_properties.enablePhraseTriggeringFromPullRequest(
+  commonProperties.enablePhraseTriggeringFromPullRequest(
     delegate,
     'Beam Dependency Check',
     'Run Dependency Check')
 
   // This is a job that runs weekly.
-  common_job_properties.setAutoJob(
+  commonProperties.setAutoJob(
     delegate,
     '0 12 * * 1')
 
   steps {
     gradle {
-      rootBuildScriptDir(common_job_properties.checkoutDir)
+      rootBuildScriptDir(commonProperties.checkoutDir)
       tasks(':runBeamDependencyCheck')
-      common_job_properties.setGradleSwitches(delegate)
+      commonProperties.setGradleSwitches(delegate)
       switches('-Drevision=release')
     }
 
-    shell('cd ' + common_job_properties.checkoutDir +
+    shell('cd ' + commonProperties.checkoutDir +
             ' && bash .test-infra/jenkins/dependency_check/generate_report.sh')
   }
 
diff --git a/.test-infra/jenkins/job_Inventory.groovy 
b/.test-infra/jenkins/Inventory.groovy
similarity index 91%
rename from .test-infra/jenkins/job_Inventory.groovy
rename to .test-infra/jenkins/Inventory.groovy
index 8ec6ca059b8..b617546c902 100644
--- a/.test-infra/jenkins/job_Inventory.groovy
+++ b/.test-infra/jenkins/Inventory.groovy
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-import common_job_properties
+import CommonProperties as commonProperties
 
 // These jobs list details about each beam runner, to clarify what software
 // is on each machine.
@@ -27,13 +27,13 @@ nums.each {
     description("Run inventory on ${machine}")
 
     // Set common parameters.
-    common_job_properties.setTopLevelMainJobProperties(delegate)
+    commonProperties.setTopLevelMainJobProperties(delegate)
 
     // Sets that this is a cron job.
-    common_job_properties.setCronJob(delegate, '45 18 * * *')
+    commonProperties.setCronJob(delegate, '45 18 * * *')
 
     // Allows triggering this build against pull requests.
-    common_job_properties.enablePhraseTriggeringFromPullRequest(
+    commonProperties.enablePhraseTriggeringFromPullRequest(
       delegate,
       'Machine Inventory',
       "Run Inventory ${machine}")
diff --git a/.test-infra/jenkins/PrecommitJobBuilder.groovy 
b/.test-infra/jenkins/PrecommitJobBuilder.groovy
index f43d6ea6106..6c8242956a3 100644
--- a/.test-infra/jenkins/PrecommitJobBuilder.groovy
+++ b/.test-infra/jenkins/PrecommitJobBuilder.groovy
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-import common_job_properties
+import CommonProperties as commonProperties
 
 /** This class defines PrecommitJobBuilder.build() helper for defining 
pre-comit jobs. */
 class PrecommitJobBuilder {
@@ -51,7 +51,7 @@ class PrecommitJobBuilder {
     def job = createBaseJob 'Cron'
     job.with {
       description buildDescription('on a daily schedule.')
-      common_job_properties.setAutoJob delegate
+      commonProperties.setAutoJob delegate
     }
     job.with additionalCustomization
   }
@@ -71,7 +71,7 @@ class PrecommitJobBuilder {
     job.with {
       description buildDescription('for each commit push.')
       concurrentBuild()
-      common_job_properties.setPullRequestBuildTrigger(delegate,
+      commonProperties.setPullRequestBuildTrigger(delegate,
         githubUiHint(),
         '',
         false,
@@ -85,7 +85,7 @@ class PrecommitJobBuilder {
     job.with {
       description buildDescription("on trigger phrase 
'${buildTriggerPhrase()}'.")
       concurrentBuild()
-      common_job_properties.setPullRequestBuildTrigger delegate, 
githubUiHint(), buildTriggerPhrase()
+      commonProperties.setPullRequestBuildTrigger delegate, githubUiHint(), 
buildTriggerPhrase()
     }
     job.with additionalCustomization
   }
@@ -93,15 +93,15 @@ class PrecommitJobBuilder {
   private Object createBaseJob(nameSuffix, usesRegionFilter = false) {
     def allowRemotePoll = !usesRegionFilter
     return scope.job("beam_PreCommit_${nameBase}_${nameSuffix}") {
-      common_job_properties.setTopLevelMainJobProperties(delegate,
+      commonProperties.setTopLevelMainJobProperties(delegate,
       'master',
       timeoutMins,
       allowRemotePoll) // needed for included regions PR triggering; see 
[JENKINS-23606]
       steps {
         gradle {
-          rootBuildScriptDir(common_job_properties.checkoutDir)
+          rootBuildScriptDir(commonProperties.checkoutDir)
           tasks(gradleTask)
-          common_job_properties.setGradleSwitches(delegate)
+          commonProperties.setGradleSwitches(delegate)
         }
       }
     }
diff --git a/.test-infra/jenkins/job_00_seed.groovy 
b/.test-infra/jenkins/job_00_seed.groovy
index 7a7cd0149f7..0a6852ad3f9 100644
--- a/.test-infra/jenkins/job_00_seed.groovy
+++ b/.test-infra/jenkins/job_00_seed.groovy
@@ -105,7 +105,8 @@ job('beam_SeedJob') {
   steps {
     dsl {
       // A list or a glob of other groovy files to process.
-      external('.test-infra/jenkins/job_*.groovy')
+      external('.test-infra/jenkins/*.groovy')
+      external('.test-infra/jenkins/**/*.groovy')
 
       // If a job is removed from the script, disable it (rather than 
deleting).
       removeAction('DISABLE')
diff --git a/.test-infra/jenkins/job_PerformanceTests_Dataflow.groovy 
b/.test-infra/jenkins/performance_tests/Dataflow.groovy
similarity index 88%
rename from .test-infra/jenkins/job_PerformanceTests_Dataflow.groovy
rename to .test-infra/jenkins/performance_tests/Dataflow.groovy
index 83af00686b4..b37677b4a53 100644
--- a/.test-infra/jenkins/job_PerformanceTests_Dataflow.groovy
+++ b/.test-infra/jenkins/performance_tests/Dataflow.groovy
@@ -16,16 +16,16 @@
  * limitations under the License.
  */
 
-import common_job_properties
+import CommonProperties as commonProperties
 
 // This job runs the Beam performance tests on PerfKit Benchmarker.
 job('beam_PerformanceTests_Dataflow'){
     // Set default Beam job properties.
-    common_job_properties.setTopLevelMainJobProperties(delegate)
+    commonProperties.setTopLevelMainJobProperties(delegate)
 
     // Run job in postcommit every 6 hours, don't trigger every push, and
     // don't email individual committers.
-    common_job_properties.setAutoJob(
+    commonProperties.setAutoJob(
         delegate,
         'H */6 * * *')
 
@@ -36,7 +36,7 @@ job('beam_PerformanceTests_Dataflow'){
       config_override: 
'dpb_wordcount_benchmark.dpb_service.service_type=dataflow'
     ]
 
-    common_job_properties.buildPerformanceTest(delegate, argMap)
+    commonProperties.buildPerformanceTest(delegate, argMap)
 
     // [BEAM-2141] Perf tests do not pass.
     disabled()
diff --git a/.test-infra/jenkins/job_PerformanceTests_Python.groovy 
b/.test-infra/jenkins/performance_tests/Python.groovy
similarity index 88%
rename from .test-infra/jenkins/job_PerformanceTests_Python.groovy
rename to .test-infra/jenkins/performance_tests/Python.groovy
index b7de70bd28e..aede6581ba1 100644
--- a/.test-infra/jenkins/job_PerformanceTests_Python.groovy
+++ b/.test-infra/jenkins/performance_tests/Python.groovy
@@ -16,20 +16,20 @@
  * limitations under the License.
  */
 
-import common_job_properties
+import CommonProperties as commonProperties
 
 // This job runs the Beam Python performance tests on PerfKit Benchmarker.
 job('beam_PerformanceTests_Python'){
   // Set default Beam job properties.
-  common_job_properties.setTopLevelMainJobProperties(delegate)
+  commonProperties.setTopLevelMainJobProperties(delegate)
 
   // Run job in postcommit every 6 hours, don't trigger every push.
-  common_job_properties.setAutoJob(
+  commonProperties.setAutoJob(
       delegate,
       'H */6 * * *')
 
   // Allows triggering this build against pull requests.
-  common_job_properties.enablePhraseTriggeringFromPullRequest(
+  commonProperties.enablePhraseTriggeringFromPullRequest(
       delegate,
       'Python SDK Performance Test',
       'Run Python Performance Test')
@@ -52,7 +52,7 @@ job('beam_PerformanceTests_Python'){
       beam_it_args: pipelineArgsJoined
   ]
 
-  common_job_properties.buildPerformanceTest(delegate, argMap)
+  commonProperties.buildPerformanceTest(delegate, argMap)
 
   // [BEAM-3809] Python performance tests are failing.
   disabled()
diff --git a/.test-infra/jenkins/job_PerformanceTests_Spark.groovy 
b/.test-infra/jenkins/performance_tests/Spark.groovy
similarity index 85%
rename from .test-infra/jenkins/job_PerformanceTests_Spark.groovy
rename to .test-infra/jenkins/performance_tests/Spark.groovy
index 45751e5f0be..7cecafe3267 100644
--- a/.test-infra/jenkins/job_PerformanceTests_Spark.groovy
+++ b/.test-infra/jenkins/performance_tests/Spark.groovy
@@ -16,20 +16,20 @@
  * limitations under the License.
  */
 
-import common_job_properties
+import CommonProperties as commonProperties
 
 // This job runs the Beam performance tests on PerfKit Benchmarker.
 job('beam_PerformanceTests_Spark'){
     // Set default Beam job properties.
-    common_job_properties.setTopLevelMainJobProperties(delegate)
-    common_job_properties.enablePhraseTriggeringFromPullRequest(
+    commonProperties.setTopLevelMainJobProperties(delegate)
+    commonProperties.enablePhraseTriggeringFromPullRequest(
             delegate,
             'Spark Performance Test',
             'Run Spark Performance Test')
 
     // Run job in postcommit every 6 hours, don't trigger every push, and
     // don't email individual committers.
-    common_job_properties.setAutoJob(
+    commonProperties.setAutoJob(
         delegate,
         'H */6 * * *')
 
@@ -42,5 +42,5 @@ job('beam_PerformanceTests_Spark'){
       bigquery_table: 'beam_performance.spark_pkp_results'
     ]
 
-    common_job_properties.buildPerformanceTest(delegate, argMap)
+    commonProperties.buildPerformanceTest(delegate, argMap)
 }
diff --git a/.test-infra/jenkins/job_PerformanceTests_FileBasedIO_IT.groovy 
b/.test-infra/jenkins/performance_tests/io_it/FileBased.groovy
similarity index 94%
rename from .test-infra/jenkins/job_PerformanceTests_FileBasedIO_IT.groovy
rename to .test-infra/jenkins/performance_tests/io_it/FileBased.groovy
index d009cd1b231..94b685e164f 100644
--- a/.test-infra/jenkins/job_PerformanceTests_FileBasedIO_IT.groovy
+++ b/.test-infra/jenkins/performance_tests/io_it/FileBased.groovy
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-import common_job_properties
+import CommonProperties as commonProperties
 
 def testsConfigurations = [
         [
@@ -102,17 +102,17 @@ private void 
create_filebasedio_performance_test_job(testConfiguration) {
         description(testConfiguration.jobDescription)
 
         // Set default Beam job properties.
-        common_job_properties.setTopLevelMainJobProperties(delegate)
+        commonProperties.setTopLevelMainJobProperties(delegate)
 
         // Allows triggering this build against pull requests.
-        common_job_properties.enablePhraseTriggeringFromPullRequest(
+        commonProperties.enablePhraseTriggeringFromPullRequest(
                 delegate,
                 testConfiguration.prCommitStatusName,
                 testConfiguration.prTriggerPhase)
 
         // Run job in postcommit every 6 hours, don't trigger every push, and
         // don't email individual committers.
-        common_job_properties.setAutoJob(
+        commonProperties.setAutoJob(
                 delegate,
                 'H */6 * * *')
 
@@ -132,10 +132,10 @@ private void 
create_filebasedio_performance_test_job(testConfiguration) {
                 beam_sdk             : 'java',
                 beam_it_module       : 'sdks/java/io/file-based-io-tests',
                 beam_it_class        : testConfiguration.itClass,
-                beam_it_options      : 
common_job_properties.joinPipelineOptions(pipelineOptions),
+                beam_it_options      : 
commonProperties.joinPipelineOptions(pipelineOptions),
                 beam_extra_properties: '["filesystem=gcs"]',
                 bigquery_table       : testConfiguration.bqTable,
         ]
-        common_job_properties.buildPerformanceTest(delegate, argMap)
+        commonProperties.buildPerformanceTest(delegate, argMap)
     }
 }
diff --git 
a/.test-infra/jenkins/job_PerformanceTests_FileBasedIO_IT_HDFS.groovy 
b/.test-infra/jenkins/performance_tests/io_it/FileBasedHDFS.groovy
similarity index 91%
rename from .test-infra/jenkins/job_PerformanceTests_FileBasedIO_IT_HDFS.groovy
rename to .test-infra/jenkins/performance_tests/io_it/FileBasedHDFS.groovy
index 34f7f7367ef..242c763a6a2 100644
--- a/.test-infra/jenkins/job_PerformanceTests_FileBasedIO_IT_HDFS.groovy
+++ b/.test-infra/jenkins/performance_tests/io_it/FileBasedHDFS.groovy
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-import common_job_properties
+import CommonProperties as commonProperties
 
 def testsConfigurations = [
         [
@@ -104,17 +104,17 @@ private void 
create_filebasedio_performance_test_job(testConfiguration) {
         description(testConfiguration.jobDescription)
 
         // Set default Beam job properties.
-        common_job_properties.setTopLevelMainJobProperties(delegate)
+        commonProperties.setTopLevelMainJobProperties(delegate)
 
         // Allows triggering this build against pull requests.
-        common_job_properties.enablePhraseTriggeringFromPullRequest(
+        commonProperties.enablePhraseTriggeringFromPullRequest(
                 delegate,
                 testConfiguration.prCommitStatusName,
                 testConfiguration.prTriggerPhase)
 
         // Run job in postcommit every 6 hours, don't trigger every push, and
         // don't email individual committers.
-        common_job_properties.setAutoJob(
+        commonProperties.setAutoJob(
                 delegate,
                 'H */6 * * *')
 
@@ -132,8 +132,8 @@ private void 
create_filebasedio_performance_test_job(testConfiguration) {
         })
         def pipelineArgsJoined = "[" + pipelineArgList.join(',') + "]"
 
-        String namespace = 
common_job_properties.getKubernetesNamespace(testConfiguration.jobName)
-        String kubeconfig = 
common_job_properties.getKubeconfigLocationForNamespace(namespace)
+        String namespace = 
commonProperties.getKubernetesNamespace(testConfiguration.jobName)
+        String kubeconfig = 
commonProperties.getKubeconfigLocationForNamespace(namespace)
 
         def argMap = [
                 kubeconfig              : kubeconfig,
@@ -149,9 +149,9 @@ private void 
create_filebasedio_performance_test_job(testConfiguration) {
                 beam_options_config_file: makePathAbsolute('pkb-config.yml'),
                 beam_kubernetes_scripts : 
makePathAbsolute('hdfs-multi-datanode-cluster.yml')
         ]
-        common_job_properties.setupKubernetes(delegate, namespace, kubeconfig)
-        common_job_properties.buildPerformanceTest(delegate, argMap)
-        common_job_properties.cleanupKubernetes(delegate, namespace, 
kubeconfig)
+        commonProperties.setupKubernetes(delegate, namespace, kubeconfig)
+        commonProperties.buildPerformanceTest(delegate, argMap)
+        commonProperties.cleanupKubernetes(delegate, namespace, kubeconfig)
     }
 }
 
diff --git a/.test-infra/jenkins/job_PerformanceTests_HadoopInputFormat.groovy 
b/.test-infra/jenkins/performance_tests/io_it/HadoopInputFormat.groovy
similarity index 67%
rename from .test-infra/jenkins/job_PerformanceTests_HadoopInputFormat.groovy
rename to .test-infra/jenkins/performance_tests/io_it/HadoopInputFormat.groovy
index 16ae4f005c6..6bb7e0c9dba 100644
--- a/.test-infra/jenkins/job_PerformanceTests_HadoopInputFormat.groovy
+++ b/.test-infra/jenkins/performance_tests/io_it/HadoopInputFormat.groovy
@@ -16,21 +16,21 @@
  * limitations under the License.
  */
 
-import common_job_properties
+import CommonProperties as commonProperties
 
 String jobName = "beam_PerformanceTests_HadoopInputFormat"
 
 job(jobName) {
     // Set default Beam job properties.
-    common_job_properties.setTopLevelMainJobProperties(delegate)
+    commonProperties.setTopLevelMainJobProperties(delegate)
 
     // Run job in postcommit every 6 hours, don't trigger every push, and
     // don't email individual committers.
-    common_job_properties.setAutoJob(
+    commonProperties.setAutoJob(
             delegate,
             'H */6 * * *')
 
-    common_job_properties.enablePhraseTriggeringFromPullRequest(
+    commonProperties.enablePhraseTriggeringFromPullRequest(
             delegate,
             'Java HadoopInputFormatIO Performance Test',
             'Run Java HadoopInputFormatIO Performance Test')
@@ -42,8 +42,8 @@ job(jobName) {
             numberOfRecords: '600000'
     ]
 
-    String namespace = common_job_properties.getKubernetesNamespace(jobName)
-    String kubeconfig = 
common_job_properties.getKubeconfigLocationForNamespace(namespace)
+    String namespace = commonProperties.getKubernetesNamespace(jobName)
+    String kubeconfig = 
commonProperties.getKubeconfigLocationForNamespace(namespace)
 
     def testArgs = [
             kubeconfig              : kubeconfig,
@@ -53,14 +53,14 @@ job(jobName) {
             beam_sdk                : 'java',
             beam_it_module          : 'sdks/java/io/hadoop-input-format',
             beam_it_class           : 
'org.apache.beam.sdk.io.hadoop.inputformat.HadoopInputFormatIOIT',
-            beam_it_options         : 
common_job_properties.joinPipelineOptions(pipelineOptions),
-            beam_kubernetes_scripts : 
common_job_properties.makePathAbsolute('src/.test-infra/kubernetes/postgres/postgres-service-for-local-dev.yml'),
-            beam_options_config_file: 
common_job_properties.makePathAbsolute('src/.test-infra/kubernetes/postgres/pkb-config-local.yml'),
+            beam_it_options         : 
commonProperties.joinPipelineOptions(pipelineOptions),
+            beam_kubernetes_scripts : 
commonProperties.makePathAbsolute('src/.test-infra/kubernetes/postgres/postgres-service-for-local-dev.yml'),
+            beam_options_config_file: 
commonProperties.makePathAbsolute('src/.test-infra/kubernetes/postgres/pkb-config-local.yml'),
             bigquery_table          : 
'beam_performance.hadoopinputformatioit_pkb_results'
     ]
 
-    common_job_properties.setupKubernetes(delegate, namespace, kubeconfig)
-    common_job_properties.buildPerformanceTest(delegate, testArgs)
-    common_job_properties.cleanupKubernetes(delegate, namespace, kubeconfig)
+    commonProperties.setupKubernetes(delegate, namespace, kubeconfig)
+    commonProperties.buildPerformanceTest(delegate, testArgs)
+    commonProperties.cleanupKubernetes(delegate, namespace, kubeconfig)
 }
 
diff --git a/.test-infra/jenkins/job_PerformanceTests_JDBC.groovy 
b/.test-infra/jenkins/performance_tests/io_it/Jdbc.groovy
similarity index 66%
rename from .test-infra/jenkins/job_PerformanceTests_JDBC.groovy
rename to .test-infra/jenkins/performance_tests/io_it/Jdbc.groovy
index 723ad51007b..68bc2881f95 100644
--- a/.test-infra/jenkins/job_PerformanceTests_JDBC.groovy
+++ b/.test-infra/jenkins/performance_tests/io_it/Jdbc.groovy
@@ -16,21 +16,21 @@
  * limitations under the License.
  */
 
-import common_job_properties
+import CommonProperties as commonProperties
 
 String jobName = "beam_PerformanceTests_JDBC"
 
 job(jobName) {
     // Set default Beam job properties.
-    common_job_properties.setTopLevelMainJobProperties(delegate)
+    commonProperties.setTopLevelMainJobProperties(delegate)
 
     // Run job in postcommit every 6 hours, don't trigger every push, and
     // don't email individual committers.
-    common_job_properties.setAutoJob(
+    commonProperties.setAutoJob(
             delegate,
             'H */6 * * *')
 
-    common_job_properties.enablePhraseTriggeringFromPullRequest(
+    commonProperties.enablePhraseTriggeringFromPullRequest(
             delegate,
             'Java JdbcIO Performance Test',
             'Run Java JdbcIO Performance Test')
@@ -42,8 +42,8 @@ job(jobName) {
             numberOfRecords: '5000000'
     ]
 
-    String namespace = common_job_properties.getKubernetesNamespace(jobName)
-    String kubeconfig = 
common_job_properties.getKubeconfigLocationForNamespace(namespace)
+    String namespace = commonProperties.getKubernetesNamespace(jobName)
+    String kubeconfig = 
commonProperties.getKubeconfigLocationForNamespace(namespace)
 
     def testArgs = [
             kubeconfig              : kubeconfig,
@@ -53,14 +53,14 @@ job(jobName) {
             beam_sdk                : 'java',
             beam_it_module          : 'sdks/java/io/jdbc',
             beam_it_class           : 'org.apache.beam.sdk.io.jdbc.JdbcIOIT',
-            beam_it_options         : 
common_job_properties.joinPipelineOptions(pipelineOptions),
-            beam_kubernetes_scripts : 
common_job_properties.makePathAbsolute('src/.test-infra/kubernetes/postgres/postgres-service-for-local-dev.yml'),
-            beam_options_config_file: 
common_job_properties.makePathAbsolute('src/.test-infra/kubernetes/postgres/pkb-config-local.yml'),
+            beam_it_options         : 
commonProperties.joinPipelineOptions(pipelineOptions),
+            beam_kubernetes_scripts : 
commonProperties.makePathAbsolute('src/.test-infra/kubernetes/postgres/postgres-service-for-local-dev.yml'),
+            beam_options_config_file: 
commonProperties.makePathAbsolute('src/.test-infra/kubernetes/postgres/pkb-config-local.yml'),
             bigquery_table          : 'beam_performance.jdbcioit_pkb_results'
     ]
 
-    common_job_properties.setupKubernetes(delegate, namespace, kubeconfig)
-    common_job_properties.buildPerformanceTest(delegate, testArgs)
-    common_job_properties.cleanupKubernetes(delegate, namespace, kubeconfig)
+    commonProperties.setupKubernetes(delegate, namespace, kubeconfig)
+    commonProperties.buildPerformanceTest(delegate, testArgs)
+    commonProperties.cleanupKubernetes(delegate, namespace, kubeconfig)
 }
 
diff --git a/.test-infra/jenkins/job_PerformanceTests_MongoDBIO_IT.groovy 
b/.test-infra/jenkins/performance_tests/io_it/MongoDB.groovy
similarity index 66%
rename from .test-infra/jenkins/job_PerformanceTests_MongoDBIO_IT.groovy
rename to .test-infra/jenkins/performance_tests/io_it/MongoDB.groovy
index c5191bb3424..47f8f4b4883 100644
--- a/.test-infra/jenkins/job_PerformanceTests_MongoDBIO_IT.groovy
+++ b/.test-infra/jenkins/performance_tests/io_it/MongoDB.groovy
@@ -16,21 +16,21 @@
  * limitations under the License.
  */
 
-import common_job_properties
+import CommonProperties as commonProperties
 
 String jobName = "beam_PerformanceTests_MongoDBIO_IT"
 
 job(jobName) {
     // Set default Beam job properties.
-    common_job_properties.setTopLevelMainJobProperties(delegate)
+    commonProperties.setTopLevelMainJobProperties(delegate)
 
     // Run job in postcommit every 6 hours, don't trigger every push, and
     // don't email individual committers.
-    common_job_properties.setAutoJob(
+    commonProperties.setAutoJob(
             delegate,
             'H */6 * * *')
 
-    common_job_properties.enablePhraseTriggeringFromPullRequest(
+    commonProperties.enablePhraseTriggeringFromPullRequest(
             delegate,
             'Java MongoDBIO Performance Test',
             'Run Java MongoDBIO Performance Test')
@@ -41,8 +41,8 @@ job(jobName) {
             numberOfRecords: '10000000'
     ]
 
-    String namespace = common_job_properties.getKubernetesNamespace(jobName)
-    String kubeconfig = 
common_job_properties.getKubeconfigLocationForNamespace(namespace)
+    String namespace = commonProperties.getKubernetesNamespace(jobName)
+    String kubeconfig = 
commonProperties.getKubeconfigLocationForNamespace(namespace)
 
     def testArgs = [
             kubeconfig              : kubeconfig,
@@ -52,13 +52,13 @@ job(jobName) {
             beam_sdk                : 'java',
             beam_it_module          : 'sdks/java/io/mongodb',
             beam_it_class           : 
'org.apache.beam.sdk.io.mongodb.MongoDBIOIT',
-            beam_it_options         : 
common_job_properties.joinPipelineOptions(pipelineOptions),
-            beam_kubernetes_scripts : 
common_job_properties.makePathAbsolute('src/.test-infra/kubernetes/mongodb/load-balancer/mongo.yml'),
-            beam_options_config_file: 
common_job_properties.makePathAbsolute('src/.test-infra/kubernetes/mongodb/load-balancer/pkb-config.yml'),
+            beam_it_options         : 
commonProperties.joinPipelineOptions(pipelineOptions),
+            beam_kubernetes_scripts : 
commonProperties.makePathAbsolute('src/.test-infra/kubernetes/mongodb/load-balancer/mongo.yml'),
+            beam_options_config_file: 
commonProperties.makePathAbsolute('src/.test-infra/kubernetes/mongodb/load-balancer/pkb-config.yml'),
             bigquery_table          : 
'beam_performance.mongodbioit_pkb_results'
     ]
 
-    common_job_properties.setupKubernetes(delegate, namespace, kubeconfig)
-    common_job_properties.buildPerformanceTest(delegate, testArgs)
-    common_job_properties.cleanupKubernetes(delegate, namespace, kubeconfig)
+    commonProperties.setupKubernetes(delegate, namespace, kubeconfig)
+    commonProperties.buildPerformanceTest(delegate, testArgs)
+    commonProperties.cleanupKubernetes(delegate, namespace, kubeconfig)
 }
diff --git a/.test-infra/jenkins/job_beam_PerformanceTests_Analysis.groovy 
b/.test-infra/jenkins/performance_tests/io_it/analysis/PerformanceAnalysis.groovy
similarity index 83%
rename from .test-infra/jenkins/job_beam_PerformanceTests_Analysis.groovy
rename to 
.test-infra/jenkins/performance_tests/io_it/analysis/PerformanceAnalysis.groovy
index df9640eb4c3..ffa7c31a09e 100644
--- a/.test-infra/jenkins/job_beam_PerformanceTests_Analysis.groovy
+++ 
b/.test-infra/jenkins/performance_tests/io_it/analysis/PerformanceAnalysis.groovy
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-import common_job_properties
+import CommonProperties as commonProperties
 
 def testConfiguration = [
                 jobName           : 'beam_PerformanceTests_Analysis',
@@ -44,17 +44,17 @@ job(testConfiguration.jobName) {
     description(testConfiguration.jobDescription)
 
     // Set default Beam job properties.
-    common_job_properties.setTopLevelMainJobProperties(delegate)
+    commonProperties.setTopLevelMainJobProperties(delegate)
 
     // Allows triggering this build against pull requests.
-    common_job_properties.enablePhraseTriggeringFromPullRequest(
+    commonProperties.enablePhraseTriggeringFromPullRequest(
             delegate,
             testConfiguration.prCommitStatusName,
             testConfiguration.prTriggerPhase)
 
     // Run job in postcommit every 24 hours, don't trigger every push, and
     // don't email individual committers.
-    common_job_properties.setAutoJob(
+    commonProperties.setAutoJob(
             delegate,
             '30 */24 * * *')
 
@@ -74,9 +74,9 @@ job(testConfiguration.jobName) {
         shell('.env/bin/pip install requests google.cloud.bigquery mock')
 
         // Launch verification tests before executing script.
-        shell('.env/bin/python ' + common_job_properties.checkoutDir + 
'/.test-infra/jenkins/verify_performance_test_results_test.py')
+        shell('.env/bin/python ' + commonProperties.checkoutDir + 
'/.test-infra/jenkins/performance_tests/io_it/analysis/verify_performance_test_results_test.py')
 
         // Launch performance tests analysis.
-        shell('.env/bin/python ' + common_job_properties.checkoutDir + 
'/.test-infra/jenkins/verify_performance_test_results.py --bqtable \"'+ 
testConfiguration.bqTables + '\" ' + '--metric=\"run_time\" ' + '--mode=report 
--send_notification')
+        shell('.env/bin/python ' + commonProperties.checkoutDir + 
'/.test-infra/jenkins/performance_tests/io_it/analysis/verify_performance_test_results.py
 --bqtable \"'+ testConfiguration.bqTables + '\" ' + '--metric=\"run_time\" ' + 
'--mode=report --send_notification')
     }
 }
diff --git a/.test-infra/jenkins/verify_performance_test_results.py 
b/.test-infra/jenkins/performance_tests/io_it/analysis/verify_performance_test_results.py
similarity index 100%
rename from .test-infra/jenkins/verify_performance_test_results.py
rename to 
.test-infra/jenkins/performance_tests/io_it/analysis/verify_performance_test_results.py
diff --git a/.test-infra/jenkins/verify_performance_test_results_test.py 
b/.test-infra/jenkins/performance_tests/io_it/analysis/verify_performance_test_results_test.py
similarity index 100%
rename from .test-infra/jenkins/verify_performance_test_results_test.py
rename to 
.test-infra/jenkins/performance_tests/io_it/analysis/verify_performance_test_results_test.py
diff --git a/.test-infra/jenkins/NoPhraseTriggeringPostCommitBuilder.groovy 
b/.test-infra/jenkins/post_commit/NoPhraseTriggeringPostCommitBuilder.groovy
similarity index 100%
rename from .test-infra/jenkins/NoPhraseTriggeringPostCommitBuilder.groovy
rename to 
.test-infra/jenkins/post_commit/NoPhraseTriggeringPostCommitBuilder.groovy
diff --git a/.test-infra/jenkins/PostcommitJobBuilder.groovy 
b/.test-infra/jenkins/post_commit/PostcommitJobBuilder.groovy
similarity index 93%
rename from .test-infra/jenkins/PostcommitJobBuilder.groovy
rename to .test-infra/jenkins/post_commit/PostcommitJobBuilder.groovy
index ce41d265353..6fe726b46a0 100644
--- a/.test-infra/jenkins/PostcommitJobBuilder.groovy
+++ b/.test-infra/jenkins/post_commit/PostcommitJobBuilder.groovy
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-import common_job_properties as cjp
+import CommonProperties as commonProperties
 
 /**
  * This class is to be used for defining jobs for post- and pre-commit tests.
@@ -47,14 +47,14 @@ class PostcommitJobBuilder {
 
   void defineAutoPostCommitJob(name) {
     def autoBuilds = scope.job(name) {
-      cjp.setAutoJob delegate
+      commonProperties.setAutoJob delegate
     }
     autoBuilds.with(jobDefinition)
   }
 
   private void defineGhprbTriggeredJob(name, triggerPhrase, githubUiHint, 
triggerOnPrCommit) {
     def ghprbBuilds = scope.job(name) {
-      cjp.setPullRequestBuildTrigger(
+      commonProperties.setPullRequestBuildTrigger(
         delegate,
         githubUiHint,
         triggerPhrase,
diff --git a/.test-infra/jenkins/job_PostCommit_Go_GradleBuild.groovy 
b/.test-infra/jenkins/post_commit/go/GradleBuild.groovy
similarity index 86%
rename from .test-infra/jenkins/job_PostCommit_Go_GradleBuild.groovy
rename to .test-infra/jenkins/post_commit/go/GradleBuild.groovy
index f7629554b77..5abac53f4b5 100644
--- a/.test-infra/jenkins/job_PostCommit_Go_GradleBuild.groovy
+++ b/.test-infra/jenkins/post_commit/go/GradleBuild.groovy
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-import common_job_properties
+import CommonProperties as commonProperties
 import PostcommitJobBuilder
 
 
@@ -30,16 +30,16 @@ 
PostcommitJobBuilder.postCommitJob('beam_PostCommit_Go_GradleBuild', 'Run Go Pos
   concurrentBuild()
 
   // Set common parameters.
-  common_job_properties.setTopLevelMainJobProperties(
+  commonProperties.setTopLevelMainJobProperties(
     delegate,
     'master',
     150)
 
   steps {
     gradle {
-      rootBuildScriptDir(common_job_properties.checkoutDir)
+      rootBuildScriptDir(commonProperties.checkoutDir)
       tasks(':goPostCommit')
-      common_job_properties.setGradleSwitches(delegate)
+      commonProperties.setGradleSwitches(delegate)
     }
   }
 }
diff --git a/.test-infra/jenkins/job_PostCommit_Java_GradleBuild.groovy 
b/.test-infra/jenkins/post_commit/java/GradleBuild.groovy
similarity index 87%
rename from .test-infra/jenkins/job_PostCommit_Java_GradleBuild.groovy
rename to .test-infra/jenkins/post_commit/java/GradleBuild.groovy
index f0b88e2f2cb..f227e25bd86 100644
--- a/.test-infra/jenkins/job_PostCommit_Java_GradleBuild.groovy
+++ b/.test-infra/jenkins/post_commit/java/GradleBuild.groovy
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-import common_job_properties
+import CommonProperties as commonProperties
 import PostcommitJobBuilder
 
 
@@ -31,7 +31,7 @@ 
PostcommitJobBuilder.postCommitJob('beam_PostCommit_Java_GradleBuild', 'Run Java
   concurrentBuild()
 
   // Set common parameters.
-  common_job_properties.setTopLevelMainJobProperties(delegate, 'master', 240)
+  commonProperties.setTopLevelMainJobProperties(delegate, 'master', 240)
 
   // Publish all test results to Jenkins
   publishers {
@@ -41,9 +41,9 @@ 
PostcommitJobBuilder.postCommitJob('beam_PostCommit_Java_GradleBuild', 'Run Java
   // Gradle goals for this job.
   steps {
     gradle {
-      rootBuildScriptDir(common_job_properties.checkoutDir)
+      rootBuildScriptDir(commonProperties.checkoutDir)
       tasks(':javaPostCommit')
-      common_job_properties.setGradleSwitches(delegate)
+      commonProperties.setGradleSwitches(delegate)
       // Specify maven home on Jenkins, needed by Maven archetype integration 
tests.
       switches('-Pmaven_home=/home/jenkins/tools/maven/apache-maven-3.5.2')
     }
diff --git a/.test-infra/jenkins/job_PostCommit_Java_Nexmark_Direct.groovy 
b/.test-infra/jenkins/post_commit/java/nexmark/Direct.groovy
similarity index 87%
rename from .test-infra/jenkins/job_PostCommit_Java_Nexmark_Direct.groovy
rename to .test-infra/jenkins/post_commit/java/nexmark/Direct.groovy
index cb1e1177d14..9ef43199bee 100644
--- a/.test-infra/jenkins/job_PostCommit_Java_Nexmark_Direct.groovy
+++ b/.test-infra/jenkins/post_commit/java/nexmark/Direct.groovy
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-import common_job_properties
+import CommonProperties as commonProperties
 import NexmarkBigqueryProperties
 import NoPhraseTriggeringPostCommitBuilder
 
@@ -29,15 +29,15 @@ 
NoPhraseTriggeringPostCommitBuilder.postCommitJob('beam_PostCommit_Java_Nexmark_
   concurrentBuild()
 
   // Set common parameters.
-  common_job_properties.setTopLevelMainJobProperties(delegate, 'master', 240)
+  commonProperties.setTopLevelMainJobProperties(delegate, 'master', 240)
 
   // Gradle goals for this job.
   steps {
     shell('echo *** RUN NEXMARK IN BATCH MODE USING DIRECT RUNNER ***')
     gradle {
-      rootBuildScriptDir(common_job_properties.checkoutDir)
+      rootBuildScriptDir(commonProperties.checkoutDir)
       tasks(':beam-sdks-java-nexmark:run')
-      common_job_properties.setGradleSwitches(delegate)
+      commonProperties.setGradleSwitches(delegate)
       switches('-Pnexmark.runner=":beam-runners-direct-java"' +
               ' -Pnexmark.args="' +
               [NexmarkBigqueryProperties.nexmarkBigQueryArgs,
@@ -51,9 +51,9 @@ 
NoPhraseTriggeringPostCommitBuilder.postCommitJob('beam_PostCommit_Java_Nexmark_
     }
     shell('echo *** RUN NEXMARK IN STREAMING MODE USING DIRECT RUNNER ***')
     gradle {
-      rootBuildScriptDir(common_job_properties.checkoutDir)
+      rootBuildScriptDir(commonProperties.checkoutDir)
       tasks(':beam-sdks-java-nexmark:run')
-      common_job_properties.setGradleSwitches(delegate)
+      commonProperties.setGradleSwitches(delegate)
       switches('-Pnexmark.runner=":beam-runners-direct-java"' +
               ' -Pnexmark.args="' +
               [NexmarkBigqueryProperties.nexmarkBigQueryArgs,
diff --git a/.test-infra/jenkins/job_PostCommit_Java_Nexmark_Flink.groovy 
b/.test-infra/jenkins/post_commit/java/nexmark/Flink.groovy
similarity index 87%
rename from .test-infra/jenkins/job_PostCommit_Java_Nexmark_Flink.groovy
rename to .test-infra/jenkins/post_commit/java/nexmark/Flink.groovy
index 4aad246e0ee..b48d3ba5861 100644
--- a/.test-infra/jenkins/job_PostCommit_Java_Nexmark_Flink.groovy
+++ b/.test-infra/jenkins/post_commit/java/nexmark/Flink.groovy
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-import common_job_properties
+import CommonProperties as commonProperties
 import NexmarkBigqueryProperties
 import NoPhraseTriggeringPostCommitBuilder
 
@@ -29,15 +29,15 @@ 
NoPhraseTriggeringPostCommitBuilder.postCommitJob('beam_PostCommit_Java_Nexmark_
   concurrentBuild()
 
   // Set common parameters.
-  common_job_properties.setTopLevelMainJobProperties(delegate, 'master', 240)
+  commonProperties.setTopLevelMainJobProperties(delegate, 'master', 240)
 
   // Gradle goals for this job.
   steps {
     shell('echo *** RUN NEXMARK IN BATCH MODE USING FLINK RUNNER ***')
     gradle {
-      rootBuildScriptDir(common_job_properties.checkoutDir)
+      rootBuildScriptDir(commonProperties.checkoutDir)
       tasks(':beam-sdks-java-nexmark:run')
-      common_job_properties.setGradleSwitches(delegate)
+      commonProperties.setGradleSwitches(delegate)
       switches('-Pnexmark.runner=":beam-runners-flink_2.11"' +
               ' -Pnexmark.args="' +
               [NexmarkBigqueryProperties.nexmarkBigQueryArgs,
@@ -51,9 +51,9 @@ 
NoPhraseTriggeringPostCommitBuilder.postCommitJob('beam_PostCommit_Java_Nexmark_
     }
     shell('echo *** RUN NEXMARK IN STREAMING MODE USING FLINK RUNNER ***')
     gradle {
-      rootBuildScriptDir(common_job_properties.checkoutDir)
+      rootBuildScriptDir(commonProperties.checkoutDir)
       tasks(':beam-sdks-java-nexmark:run')
-      common_job_properties.setGradleSwitches(delegate)
+      commonProperties.setGradleSwitches(delegate)
       switches('-Pnexmark.runner=":beam-runners-flink_2.11"' +
               ' -Pnexmark.args="' +
               [NexmarkBigqueryProperties.nexmarkBigQueryArgs,
diff --git a/.test-infra/jenkins/NexmarkBigqueryProperties.groovy 
b/.test-infra/jenkins/post_commit/java/nexmark/NexmarkBigqueryProperties.groovy
similarity index 100%
rename from .test-infra/jenkins/NexmarkBigqueryProperties.groovy
rename to 
.test-infra/jenkins/post_commit/java/nexmark/NexmarkBigqueryProperties.groovy
diff --git a/.test-infra/jenkins/job_PostCommit_Java_Nexmark_Spark.groovy 
b/.test-infra/jenkins/post_commit/java/nexmark/Spark.groovy
similarity index 89%
rename from .test-infra/jenkins/job_PostCommit_Java_Nexmark_Spark.groovy
rename to .test-infra/jenkins/post_commit/java/nexmark/Spark.groovy
index 6043b7bc973..17b50f73c01 100644
--- a/.test-infra/jenkins/job_PostCommit_Java_Nexmark_Spark.groovy
+++ b/.test-infra/jenkins/post_commit/java/nexmark/Spark.groovy
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-import common_job_properties
+import CommonProperties as commonProperties
 import NexmarkBigqueryProperties
 import NoPhraseTriggeringPostCommitBuilder
 
@@ -29,15 +29,15 @@ 
NoPhraseTriggeringPostCommitBuilder.postCommitJob('beam_PostCommit_Java_Nexmark_
   concurrentBuild()
 
   // Set common parameters.
-  common_job_properties.setTopLevelMainJobProperties(delegate, 'master', 240)
+  commonProperties.setTopLevelMainJobProperties(delegate, 'master', 240)
 
   // Gradle goals for this job.
   steps {
     shell('echo *** RUN NEXMARK IN BATCH MODE USING SPARK RUNNER ***')
     gradle {
-      rootBuildScriptDir(common_job_properties.checkoutDir)
+      rootBuildScriptDir(commonProperties.checkoutDir)
       tasks(':beam-sdks-java-nexmark:run')
-      common_job_properties.setGradleSwitches(delegate)
+      commonProperties.setGradleSwitches(delegate)
       switches('-Pnexmark.runner=":beam-runners-spark"' +
               ' -Pnexmark.args="' +
               [NexmarkBigqueryProperties.nexmarkBigQueryArgs,
diff --git 
a/.test-infra/jenkins/job_PostCommit_Java_ValidatesRunner_Apex.groovy 
b/.test-infra/jenkins/post_commit/java/validates_runner/Apex.groovy
similarity index 88%
rename from .test-infra/jenkins/job_PostCommit_Java_ValidatesRunner_Apex.groovy
rename to .test-infra/jenkins/post_commit/java/validates_runner/Apex.groovy
index ca439667912..24faad0ed0c 100644
--- a/.test-infra/jenkins/job_PostCommit_Java_ValidatesRunner_Apex.groovy
+++ b/.test-infra/jenkins/post_commit/java/validates_runner/Apex.groovy
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-import common_job_properties
+import CommonProperties as commonProperties
 import PostcommitJobBuilder
 
 // This job runs the suite of ValidatesRunner tests against the Apex runner.
@@ -27,7 +27,7 @@ 
PostcommitJobBuilder.postCommitJob('beam_PostCommit_Java_ValidatesRunner_Apex_Gr
   previousNames('beam_PostCommit_Java_RunnableOnService_Apex')
 
   // Set common parameters.
-  common_job_properties.setTopLevelMainJobProperties(delegate)
+  commonProperties.setTopLevelMainJobProperties(delegate)
 
   // Publish all test results to Jenkins
   publishers {
@@ -37,9 +37,9 @@ 
PostcommitJobBuilder.postCommitJob('beam_PostCommit_Java_ValidatesRunner_Apex_Gr
   // Gradle goals for this job.
   steps {
     gradle {
-      rootBuildScriptDir(common_job_properties.checkoutDir)
+      rootBuildScriptDir(commonProperties.checkoutDir)
       tasks(':beam-runners-apex:validatesRunner')
-      common_job_properties.setGradleSwitches(delegate)
+      commonProperties.setGradleSwitches(delegate)
     }
   }
 }
diff --git 
a/.test-infra/jenkins/job_PostCommit_Java_ValidatesRunner_Dataflow.groovy 
b/.test-infra/jenkins/post_commit/java/validates_runner/Dataflow.groovy
similarity index 88%
rename from 
.test-infra/jenkins/job_PostCommit_Java_ValidatesRunner_Dataflow.groovy
rename to .test-infra/jenkins/post_commit/java/validates_runner/Dataflow.groovy
index 2ecbe331ac3..b09a7fb8c9d 100644
--- a/.test-infra/jenkins/job_PostCommit_Java_ValidatesRunner_Dataflow.groovy
+++ b/.test-infra/jenkins/post_commit/java/validates_runner/Dataflow.groovy
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-import common_job_properties
+import CommonProperties as commonProperties
 import PostcommitJobBuilder
 
 
@@ -30,7 +30,7 @@ 
PostcommitJobBuilder.postCommitJob('beam_PostCommit_Java_ValidatesRunner_Dataflo
   previousNames('beam_PostCommit_Java_RunnableOnService_Dataflow')
 
   // Set common parameters. Sets a long (5 hour) timeout due to timeouts in 
[BEAM-3775].
-  common_job_properties.setTopLevelMainJobProperties(delegate, 'master', 300)
+  commonProperties.setTopLevelMainJobProperties(delegate, 'master', 300)
 
   // Publish all test results to Jenkins
   publishers {
@@ -40,14 +40,14 @@ 
PostcommitJobBuilder.postCommitJob('beam_PostCommit_Java_ValidatesRunner_Dataflo
   // Gradle goals for this job.
   steps {
     gradle {
-      rootBuildScriptDir(common_job_properties.checkoutDir)
+      rootBuildScriptDir(commonProperties.checkoutDir)
       tasks(':beam-runners-google-cloud-dataflow-java:validatesRunner')
       // Increase parallel worker threads above processor limit since most 
time is
       // spent waiting on Dataflow jobs. ValidatesRunner tests on Dataflow are 
slow
       // because each one launches a Dataflow job with about 3 mins of 
overhead.
       // 3 x num_cores strikes a good balance between maxing out parallelism 
without
       // overloading the machines.
-      common_job_properties.setGradleSwitches(delegate, 3 * 
Runtime.runtime.availableProcessors())
+      commonProperties.setGradleSwitches(delegate, 3 * 
Runtime.runtime.availableProcessors())
     }
   }
 }
diff --git 
a/.test-infra/jenkins/job_PostCommit_Java_ValidatesRunner_Flink.groovy 
b/.test-infra/jenkins/post_commit/java/validates_runner/Flink.groovy
similarity index 87%
rename from .test-infra/jenkins/job_PostCommit_Java_ValidatesRunner_Flink.groovy
rename to .test-infra/jenkins/post_commit/java/validates_runner/Flink.groovy
index ce21694f785..304e84189dd 100644
--- a/.test-infra/jenkins/job_PostCommit_Java_ValidatesRunner_Flink.groovy
+++ b/.test-infra/jenkins/post_commit/java/validates_runner/Flink.groovy
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-import common_job_properties
+import CommonProperties as commonProperties
 import PostcommitJobBuilder
 
 // This job runs the suite of ValidatesRunner tests against the Flink runner.
@@ -25,7 +25,7 @@ 
PostcommitJobBuilder.postCommitJob('beam_PostCommit_Java_ValidatesRunner_Flink_G
   description('Runs the ValidatesRunner suite on the Flink runner.')
 
   // Set common parameters.
-  common_job_properties.setTopLevelMainJobProperties(delegate)
+  commonProperties.setTopLevelMainJobProperties(delegate)
 
   // Publish all test results to Jenkins
   publishers {
@@ -35,9 +35,9 @@ 
PostcommitJobBuilder.postCommitJob('beam_PostCommit_Java_ValidatesRunner_Flink_G
   // Gradle goals for this job.
   steps {
     gradle {
-      rootBuildScriptDir(common_job_properties.checkoutDir)
+      rootBuildScriptDir(commonProperties.checkoutDir)
       tasks(':beam-runners-flink_2.11:validatesRunner')
-      common_job_properties.setGradleSwitches(delegate)
+      commonProperties.setGradleSwitches(delegate)
     }
   }
 }
diff --git 
a/.test-infra/jenkins/job_PostCommit_Java_ValidatesRunner_Gearpump.groovy 
b/.test-infra/jenkins/post_commit/java/validates_runner/Gearpump.groovy
similarity index 88%
rename from 
.test-infra/jenkins/job_PostCommit_Java_ValidatesRunner_Gearpump.groovy
rename to .test-infra/jenkins/post_commit/java/validates_runner/Gearpump.groovy
index 9ea2281e078..e583e82128e 100644
--- a/.test-infra/jenkins/job_PostCommit_Java_ValidatesRunner_Gearpump.groovy
+++ b/.test-infra/jenkins/post_commit/java/validates_runner/Gearpump.groovy
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-import common_job_properties
+import CommonProperties as commonProperties
 import PostcommitJobBuilder
 
 // This job runs the suite of ValidatesRunner tests against the Gearpump
@@ -29,7 +29,7 @@ 
PostcommitJobBuilder.postCommitJob('beam_PostCommit_Java_ValidatesRunner_Gearpum
   previousNames('beam_PostCommit_Java_RunnableOnService_Gearpump')
 
   // Set common parameters.
-  common_job_properties.setTopLevelMainJobProperties(
+  commonProperties.setTopLevelMainJobProperties(
     delegate,
     'master')
 
@@ -41,9 +41,9 @@ 
PostcommitJobBuilder.postCommitJob('beam_PostCommit_Java_ValidatesRunner_Gearpum
   // Gradle goals for this job.
   steps {
     gradle {
-      rootBuildScriptDir(common_job_properties.checkoutDir)
+      rootBuildScriptDir(commonProperties.checkoutDir)
       tasks(':beam-runners-gearpump:validatesRunner')
-      common_job_properties.setGradleSwitches(delegate)
+      commonProperties.setGradleSwitches(delegate)
     }
   }
 }
diff --git 
a/.test-infra/jenkins/job_PostCommit_Java_ValidatesRunner_Samza.groovy 
b/.test-infra/jenkins/post_commit/java/validates_runner/Samza.groovy
similarity index 87%
rename from .test-infra/jenkins/job_PostCommit_Java_ValidatesRunner_Samza.groovy
rename to .test-infra/jenkins/post_commit/java/validates_runner/Samza.groovy
index 16e3d1f69e4..c0cc37700d8 100644
--- a/.test-infra/jenkins/job_PostCommit_Java_ValidatesRunner_Samza.groovy
+++ b/.test-infra/jenkins/post_commit/java/validates_runner/Samza.groovy
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-import common_job_properties
+import CommonProperties as commonProperties
 import PostcommitJobBuilder
 
 // This job runs the suite of ValidatesRunner tests against the Samza runner.
@@ -25,7 +25,7 @@ 
PostcommitJobBuilder.postCommitJob('beam_PostCommit_Java_ValidatesRunner_Samza_G
   description('Runs the ValidatesRunner suite on the Samza runner.')
 
   // Set common parameters.
-  common_job_properties.setTopLevelMainJobProperties(delegate)
+  commonProperties.setTopLevelMainJobProperties(delegate)
 
   // Publish all test results to Jenkins
   publishers {
@@ -35,9 +35,9 @@ 
PostcommitJobBuilder.postCommitJob('beam_PostCommit_Java_ValidatesRunner_Samza_G
   // Gradle goals for this job.
   steps {
     gradle {
-      rootBuildScriptDir(common_job_properties.checkoutDir)
+      rootBuildScriptDir(commonProperties.checkoutDir)
       tasks(':beam-runners-samza:validatesRunner')
-      common_job_properties.setGradleSwitches(delegate)
+      commonProperties.setGradleSwitches(delegate)
     }
   }
 }
diff --git 
a/.test-infra/jenkins/job_PostCommit_Java_ValidatesRunner_Spark.groovy 
b/.test-infra/jenkins/post_commit/java/validates_runner/Spark.groovy
similarity index 87%
rename from .test-infra/jenkins/job_PostCommit_Java_ValidatesRunner_Spark.groovy
rename to .test-infra/jenkins/post_commit/java/validates_runner/Spark.groovy
index 5d0e756a644..d6fdd39122a 100644
--- a/.test-infra/jenkins/job_PostCommit_Java_ValidatesRunner_Spark.groovy
+++ b/.test-infra/jenkins/post_commit/java/validates_runner/Spark.groovy
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-import common_job_properties
+import CommonProperties as commonProperties
 import PostcommitJobBuilder
 
 // This job runs the suite of ValidatesRunner tests against the Spark runner.
@@ -27,7 +27,7 @@ 
PostcommitJobBuilder.postCommitJob('beam_PostCommit_Java_ValidatesRunner_Spark_G
   previousNames('beam_PostCommit_Java_RunnableOnService_Spark')
 
   // Set common parameters.
-  common_job_properties.setTopLevelMainJobProperties(delegate, 'master', 120)
+  commonProperties.setTopLevelMainJobProperties(delegate, 'master', 120)
 
   // Publish all test results to Jenkins
   publishers {
@@ -37,9 +37,9 @@ 
PostcommitJobBuilder.postCommitJob('beam_PostCommit_Java_ValidatesRunner_Spark_G
   // Gradle goals for this job.
   steps {
     gradle {
-      rootBuildScriptDir(common_job_properties.checkoutDir)
+      rootBuildScriptDir(commonProperties.checkoutDir)
       tasks(':beam-runners-spark:validatesRunner')
-      common_job_properties.setGradleSwitches(delegate)
+      commonProperties.setGradleSwitches(delegate)
     }
   }
 }
diff --git a/.test-infra/jenkins/job_PostCommit_Python_Verify.groovy 
b/.test-infra/jenkins/post_commit/python/Verify.groovy
similarity index 85%
rename from .test-infra/jenkins/job_PostCommit_Python_Verify.groovy
rename to .test-infra/jenkins/post_commit/python/Verify.groovy
index ea0533f5063..3db7527edbb 100644
--- a/.test-infra/jenkins/job_PostCommit_Python_Verify.groovy
+++ b/.test-infra/jenkins/post_commit/python/Verify.groovy
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-import common_job_properties
+import CommonProperties as commonProperties
 import PostcommitJobBuilder
 
 // This job defines the Python postcommit tests.
@@ -27,14 +27,14 @@ 
PostcommitJobBuilder.postCommitJob('beam_PostCommit_Python_Verify', 'Run Python
   previousNames('beam_PostCommit_PythonVerify')
 
   // Set common parameters.
-  common_job_properties.setTopLevelMainJobProperties(delegate)
+  commonProperties.setTopLevelMainJobProperties(delegate)
 
   // Execute shell command to test Python SDK.
   steps {
     gradle {
-      rootBuildScriptDir(common_job_properties.checkoutDir)
+      rootBuildScriptDir(commonProperties.checkoutDir)
       tasks(':pythonPostCommit')
-      common_job_properties.setGradleSwitches(delegate)
+      commonProperties.setGradleSwitches(delegate)
     }
   }
 }
diff --git 
a/.test-infra/jenkins/job_PostCommit_Python_ValidatesContainer_Dataflow.groovy 
b/.test-infra/jenkins/post_commit/python/validates_container/Dataflow.groovy
similarity index 85%
rename from 
.test-infra/jenkins/job_PostCommit_Python_ValidatesContainer_Dataflow.groovy
rename to 
.test-infra/jenkins/post_commit/python/validates_container/Dataflow.groovy
index 653b6ccede9..88b90caf83a 100644
--- 
a/.test-infra/jenkins/job_PostCommit_Python_ValidatesContainer_Dataflow.groovy
+++ b/.test-infra/jenkins/post_commit/python/validates_container/Dataflow.groovy
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-import common_job_properties
+import CommonProperties as commonProperties
 import PostcommitJobBuilder
 
 // This job runs the suite of Python ValidatesContainer tests against the
@@ -26,10 +26,10 @@ 
PostcommitJobBuilder.postCommitJob('beam_PostCommit_Py_ValCont',
   description('Runs Python ValidatesContainer suite on the Dataflow runner.')
 
   // Set common parameters.
-  common_job_properties.setTopLevelMainJobProperties(delegate)
+  commonProperties.setTopLevelMainJobProperties(delegate)
 
   // Execute shell command to test Python SDK.
   steps {
-    shell('cd ' + common_job_properties.checkoutDir + ' && bash 
sdks/python/container/run_validatescontainer.sh')
+    shell('cd ' + commonProperties.checkoutDir + ' && bash 
sdks/python/container/run_validatescontainer.sh')
   }
 }
diff --git 
a/.test-infra/jenkins/job_PostCommit_Python_ValidatesRunner_Dataflow.groovy 
b/.test-infra/jenkins/post_commit/python/validates_runner/Dataflow.groovy
similarity index 86%
rename from 
.test-infra/jenkins/job_PostCommit_Python_ValidatesRunner_Dataflow.groovy
rename to 
.test-infra/jenkins/post_commit/python/validates_runner/Dataflow.groovy
index 29f497bfa75..2dfeca58f44 100644
--- a/.test-infra/jenkins/job_PostCommit_Python_ValidatesRunner_Dataflow.groovy
+++ b/.test-infra/jenkins/post_commit/python/validates_runner/Dataflow.groovy
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-import common_job_properties
+import CommonProperties as commonProperties
 import PostcommitJobBuilder
 
 // This job runs the suite of Python ValidatesRunner tests against the
@@ -26,14 +26,14 @@ 
PostcommitJobBuilder.postCommitJob('beam_PostCommit_Py_VR_Dataflow', 'Run Python
   description('Runs Python ValidatesRunner suite on the Dataflow runner.')
 
   // Set common parameters.
-  common_job_properties.setTopLevelMainJobProperties(delegate)
+  commonProperties.setTopLevelMainJobProperties(delegate)
 
   // Execute gradle task to test Python SDK.
   steps {
     gradle {
-      rootBuildScriptDir(common_job_properties.checkoutDir)
+      rootBuildScriptDir(commonProperties.checkoutDir)
       tasks(':beam-sdks-python:validatesRunnerTests')
-      common_job_properties.setGradleSwitches(delegate)
+      commonProperties.setGradleSwitches(delegate)
     }
   }
 }
diff --git a/.test-infra/jenkins/job_PreCommit_Go.groovy 
b/.test-infra/jenkins/pre_commit/Go.groovy
similarity index 100%
rename from .test-infra/jenkins/job_PreCommit_Go.groovy
rename to .test-infra/jenkins/pre_commit/Go.groovy
diff --git a/.test-infra/jenkins/job_PreCommit_Java.groovy 
b/.test-infra/jenkins/pre_commit/Java.groovy
similarity index 100%
rename from .test-infra/jenkins/job_PreCommit_Java.groovy
rename to .test-infra/jenkins/pre_commit/Java.groovy
diff --git a/.test-infra/jenkins/pre_commit/PrecommitJobBuilder.groovy 
b/.test-infra/jenkins/pre_commit/PrecommitJobBuilder.groovy
new file mode 100644
index 00000000000..a22bac23036
--- /dev/null
+++ b/.test-infra/jenkins/pre_commit/PrecommitJobBuilder.groovy
@@ -0,0 +1,123 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import CommonProperties as commonProperties
+
+/** This class defines PrecommitJobBuilder.build() helper for defining 
pre-comit jobs. */
+class PrecommitJobBuilder {
+  /** scope 'this' parameter from top-level script; used for binding Job DSL 
methods. */
+  Object scope
+
+  /** Base name for each post-commit suite job, i.e. 'Go'. */
+  String nameBase
+
+  /**  The Gradle task to execute. */
+  String gradleTask
+
+  /** Overall job timeout. */
+  int timeoutMins = 90
+
+  /** If defined, set of path expressions used to trigger the job on commit. */
+  List<String> triggerPathPatterns = []
+
+  /**
+   * Define a set of pre-commit jobs.
+   *
+   * @param additionalCustomization Job DSL closure with additional 
customization to apply to the job.
+   */
+  void build(Closure additionalCustomization = {}) {
+    defineCronJob additionalCustomization
+    defineCommitJob additionalCustomization
+    definePhraseJob additionalCustomization
+  }
+
+  /** Create a pre-commit job which runs on a daily schedule. */
+  private void defineCronJob(Closure additionalCustomization) {
+    def job = createBaseJob 'Cron'
+    job.with {
+      description buildDescription('on a daily schedule.')
+        commonProperties.setAutoJob delegate
+    }
+    job.with additionalCustomization
+  }
+
+  /** Create a pre-commit job which runs on every commit to a PR. */
+  private void defineCommitJob(Closure additionalCustomization) {
+    def job = createBaseJob 'Commit', true
+    def defaultPathTriggers = [
+      '^build.gradle$',
+      '^build_rules.gradle$',
+      '^gradle.properties$',
+      '^gradlew$',
+      '^gradle.bat$',
+      '^settings.gradle$'
+    ]
+    triggerPathPatterns.addAll defaultPathTriggers
+    job.with {
+      description buildDescription('for each commit push.')
+      concurrentBuild()
+      commonProperties.setPullRequestBuildTrigger(delegate,
+        githubUiHint(),
+        '',
+        false,
+        triggerPathPatterns)
+    }
+    job.with additionalCustomization
+  }
+
+  private void definePhraseJob(Closure additionalCustomization) {
+    def job = createBaseJob 'Phrase'
+    job.with {
+      description buildDescription("on trigger phrase 
'${buildTriggerPhrase()}'.")
+      concurrentBuild()
+      commonProperties.setPullRequestBuildTrigger delegate, githubUiHint(), 
buildTriggerPhrase()
+    }
+    job.with additionalCustomization
+  }
+
+  private Object createBaseJob(nameSuffix, usesRegionFilter = false) {
+    def allowRemotePoll = !usesRegionFilter
+    return scope.job("beam_PreCommit_${nameBase}_${nameSuffix}") {
+      commonProperties.setTopLevelMainJobProperties(delegate,
+      'master',
+      timeoutMins,
+      allowRemotePoll) // needed for included regions PR triggering; see 
[JENKINS-23606]
+      steps {
+        gradle {
+          rootBuildScriptDir(commonProperties.checkoutDir)
+          tasks(gradleTask)
+          commonProperties.setGradleSwitches(delegate)
+        }
+      }
+    }
+  }
+
+  /** The magic phrase used to trigger the job when posted as a PR comment. */
+  private String buildTriggerPhrase() {
+    return "Run ${nameBase} PreCommit"
+  }
+
+  /** A human-readable description which will be used as the base of all suite 
jobs. */
+  private buildDescription(String triggerDescription) {
+    return "Runs ${nameBase} PreCommit tests ${triggerDescription}"
+  }
+
+  private String githubUiHint() {
+    "${nameBase} (\"${buildTriggerPhrase()}\")"
+  }
+}
diff --git a/.test-infra/jenkins/job_PreCommit_Python.groovy 
b/.test-infra/jenkins/pre_commit/Python.groovy
similarity index 100%
rename from .test-infra/jenkins/job_PreCommit_Python.groovy
rename to .test-infra/jenkins/pre_commit/Python.groovy
diff --git a/.test-infra/jenkins/job_PreCommit_Website_Merge.groovy 
b/.test-infra/jenkins/pre_commit/website/Merge.groovy
similarity index 94%
rename from .test-infra/jenkins/job_PreCommit_Website_Merge.groovy
rename to .test-infra/jenkins/pre_commit/website/Merge.groovy
index 71fa13eb728..b1f1a3fe719 100644
--- a/.test-infra/jenkins/job_PreCommit_Website_Merge.groovy
+++ b/.test-infra/jenkins/pre_commit/website/Merge.groovy
@@ -16,14 +16,14 @@
  * limitations under the License.
  */
 
-import common_job_properties
+import CommonProperties as commonProperties
 
 // Defines a job.
 job('beam_PreCommit_Website_Merge') {
   description('Runs website tests for mergebot.')
 
   // Set common parameters.
-  common_job_properties.setTopLevelWebsiteJobProperties(delegate, 'mergebot')
+  commonProperties.setTopLevelWebsiteJobProperties(delegate, 'mergebot')
 
   triggers {
     githubPush()
diff --git a/.test-infra/jenkins/job_PreCommit_Website_Stage.groovy 
b/.test-infra/jenkins/pre_commit/website/Stage.groovy
similarity index 95%
rename from .test-infra/jenkins/job_PreCommit_Website_Stage.groovy
rename to .test-infra/jenkins/pre_commit/website/Stage.groovy
index d1a79dac15c..c98724cb825 100644
--- a/.test-infra/jenkins/job_PreCommit_Website_Stage.groovy
+++ b/.test-infra/jenkins/pre_commit/website/Stage.groovy
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-import common_job_properties
+import CommonProperties as commonProperties
 
 // Defines a job.
 job('beam_PreCommit_Website_Stage') {
@@ -24,10 +24,10 @@ job('beam_PreCommit_Website_Stage') {
               'website to a temporary location to ease reviews.')
 
   // Set common parameters.
-  common_job_properties.setTopLevelWebsiteJobProperties(delegate)
+  commonProperties.setTopLevelWebsiteJobProperties(delegate)
 
   // Set pull request build trigger.
-  common_job_properties.setPreCommit(
+  commonProperties.setPreCommit(
       delegate,
       'Automatic staging of pull requests',
       '\nJenkins built the site at commit id ${ghprbActualCommit} with ' +
diff --git a/.test-infra/jenkins/job_PreCommit_Website_Test.groovy 
b/.test-infra/jenkins/pre_commit/website/Test.groovy
similarity index 94%
rename from .test-infra/jenkins/job_PreCommit_Website_Test.groovy
rename to .test-infra/jenkins/pre_commit/website/Test.groovy
index dd11871ef02..16bacd15d1f 100644
--- a/.test-infra/jenkins/job_PreCommit_Website_Test.groovy
+++ b/.test-infra/jenkins/pre_commit/website/Test.groovy
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-import common_job_properties
+import CommonProperties as commonProperties
 
 // Defines a job.
 job('beam_PreCommit_Website_Test') {
@@ -24,7 +24,7 @@ job('beam_PreCommit_Website_Test') {
               'website.')
 
   // Set common parameters.
-  common_job_properties.setTopLevelWebsiteJobProperties(delegate)
+  commonProperties.setTopLevelWebsiteJobProperties(delegate)
 
   // Execute concurrent builds. Multiple builds of this project may be executed
   // in parallel. This is safe because this build does not require exclusive
@@ -32,7 +32,7 @@ job('beam_PreCommit_Website_Test') {
   concurrentBuild()
 
   // Set pull request build trigger.
-  common_job_properties.setPreCommit(
+  commonProperties.setPreCommit(
       delegate,
       'Test website (dead links, etc.)')
 
diff --git a/.test-infra/jenkins/job_PostRelease_NightlySnapshot.groovy 
b/.test-infra/jenkins/release/PostReleaseNightlySnapshot.groovy
similarity index 86%
rename from .test-infra/jenkins/job_PostRelease_NightlySnapshot.groovy
rename to .test-infra/jenkins/release/PostReleaseNightlySnapshot.groovy
index d7d519a1455..7bbc126aa80 100644
--- a/.test-infra/jenkins/job_PostRelease_NightlySnapshot.groovy
+++ b/.test-infra/jenkins/release/PostReleaseNightlySnapshot.groovy
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-import common_job_properties
+import CommonProperties as commonProperties
 
 // This verifies the nightly snapshot build.
 // From https://repository.apache.org/content/groups/snapshots/org/apache/beam.
@@ -27,7 +27,7 @@ job('beam_PostRelease_NightlySnapshot') {
   concurrentBuild()
 
   // Set common parameters.
-  common_job_properties.setTopLevelMainJobProperties(delegate)
+  commonProperties.setTopLevelMainJobProperties(delegate)
 
   parameters {
     stringParam('snapshot_version',
@@ -39,13 +39,13 @@ job('beam_PostRelease_NightlySnapshot') {
   }
 
   // This is a post-commit job that runs once per day, not for every push.
-  common_job_properties.setAutoJob(
+  commonProperties.setAutoJob(
       delegate,
       '0 11 * * *')
 
 
   // Allows triggering this build against pull requests.
-  common_job_properties.enablePhraseTriggeringFromPullRequest(
+  commonProperties.enablePhraseTriggeringFromPullRequest(
       delegate,
       './gradlew :release:runJavaExamplesValidationTask',
       'Run Dataflow PostRelease')
@@ -53,9 +53,9 @@ job('beam_PostRelease_NightlySnapshot') {
   steps {
     // Run a quickstart from 
https://beam.apache.org/get-started/quickstart-java
     gradle {
-      rootBuildScriptDir(common_job_properties.checkoutDir)
+      rootBuildScriptDir(commonProperties.checkoutDir)
       tasks(':release:runJavaExamplesValidationTask')
-      common_job_properties.setGradleSwitches(delegate)
+      commonProperties.setGradleSwitches(delegate)
       switches('-Pver=$snapshot_version -Prepourl=$snapshot_url')
     }
   }
diff --git a/.test-infra/jenkins/job_ReleaseCandidate_Python.groovy 
b/.test-infra/jenkins/release/PythonReleaseCandidateVerifier.groovy
similarity index 87%
rename from .test-infra/jenkins/job_ReleaseCandidate_Python.groovy
rename to .test-infra/jenkins/release/PythonReleaseCandidateVerifier.groovy
index 22ed5790645..faf266ebb2a 100644
--- a/.test-infra/jenkins/job_ReleaseCandidate_Python.groovy
+++ b/.test-infra/jenkins/release/PythonReleaseCandidateVerifier.groovy
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-import common_job_properties
+import CommonProperties as commonProperties
 
 job('beam_PostRelease_Python_Candidate') {
     description('Runs verification of the Python release candidate.')
@@ -25,17 +25,17 @@ job('beam_PostRelease_Python_Candidate') {
     concurrentBuild()
 
     // Set common parameters.
-    common_job_properties.setTopLevelMainJobProperties(delegate)
+    commonProperties.setTopLevelMainJobProperties(delegate)
 
     // Allows triggering this build against pull requests.
-    common_job_properties.enablePhraseTriggeringFromPullRequest(
+    commonProperties.enablePhraseTriggeringFromPullRequest(
             delegate,
             'Python SDK Release Candidates Validation',
             'Run Python ReleaseCandidate')
 
     // Execute shell command to test Python SDK.
     steps {
-        shell('cd ' + common_job_properties.checkoutDir +
+        shell('cd ' + commonProperties.checkoutDir +
                 ' && bash 
release/src/main/groovy/run_release_candidate_python_quickstart.sh' +
                 ' && bash 
release/src/main/groovy/run_release_candidate_python_mobile_gaming.sh')
     }
diff --git a/.test-infra/jenkins/job_Release_Gradle_NightlySnapshot.groovy 
b/.test-infra/jenkins/release/ReleaseGradleNightlySnapshot.groovy
similarity index 84%
rename from .test-infra/jenkins/job_Release_Gradle_NightlySnapshot.groovy
rename to .test-infra/jenkins/release/ReleaseGradleNightlySnapshot.groovy
index 7a03f7410b1..9a9ab4afe7e 100644
--- a/.test-infra/jenkins/job_Release_Gradle_NightlySnapshot.groovy
+++ b/.test-infra/jenkins/release/ReleaseGradleNightlySnapshot.groovy
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-import common_job_properties
+import CommonProperties as commonProperties
 
 // This creates the nightly snapshot build.
 // Into https://repository.apache.org/content/groups/snapshots/org/apache/beam.
@@ -27,26 +27,26 @@ job('beam_Release_Gradle_NightlySnapshot') {
   concurrentBuild()
 
   // Set common parameters.
-  common_job_properties.setTopLevelMainJobProperties(delegate)
+  commonProperties.setTopLevelMainJobProperties(delegate)
 
   // This is a post-commit job that runs once per day, not for every push.
-  common_job_properties.setAutoJob(
+  commonProperties.setAutoJob(
       delegate,
       '0 7 * * *',
       'd...@beam.apache.org')
 
 
   // Allows triggering this build against pull requests.
-  common_job_properties.enablePhraseTriggeringFromPullRequest(
+  commonProperties.enablePhraseTriggeringFromPullRequest(
       delegate,
       './gradlew publish',
       'Run Gradle Publish')
 
   steps {
     gradle {
-      rootBuildScriptDir(common_job_properties.checkoutDir)
+      rootBuildScriptDir(commonProperties.checkoutDir)
       tasks('publish')
-      common_job_properties.setGradleSwitches(delegate)
+      commonProperties.setGradleSwitches(delegate)
       // Publish a snapshot build.
       switches("-Ppublishing")
       // Don't run tasks in parallel, currently the maven-publish/signing 
plugins


 

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


Issue Time Tracking
-------------------

    Worklog Id:     (was: 123534)
    Time Spent: 3h 10m  (was: 3h)

> Rename (and reorganize?) jenkins jobs
> -------------------------------------
>
>                 Key: BEAM-4691
>                 URL: https://issues.apache.org/jira/browse/BEAM-4691
>             Project: Beam
>          Issue Type: Task
>          Components: build-system
>            Reporter: Lukasz Gajowy
>            Assignee: Lukasz Gajowy
>            Priority: Minor
>          Time Spent: 3h 10m
>  Remaining Estimate: 0h
>
> Link to discussion: 
> [https://lists.apache.org/thread.html/ebe220ec1cebc73c8fb7190cf115fb9b23165fdbf950d58e05db544d@%3Cdev.beam.apache.org%3E]
> Since jobs are Groovy files their names should be CamelCase. We could also 
> place them in subdirectories instead of prefixing job names. 



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to