diff --git a/jenkins/BUILD b/jenkins/BUILD
index a723788..fc72662 100644
--- a/jenkins/BUILD
+++ b/jenkins/BUILD
@@ -17,7 +17,6 @@
 # Configuration for our Jenkins instance
 load("@io_bazel_rules_docker//docker:docker.bzl", "docker_build")
 load("//jenkins/build_defs:jenkins.bzl", "jenkins_node", "jenkins_docker_build", "jenkins_job", "jenkins_nodes", "jenkins_node_names")
-load("//jenkins/jobs:jobs.bzl", "JOBS_SUBSTITUTIONS", "STAGING_JOBS_SUBSTITUTIONS")
 
 #
 # Nodes
@@ -285,7 +284,7 @@
     substitutions = {
         "SECURITY_CONFIG": SECURITY_CONFIG,
         "PUBLIC_JENKINS_URL": "http://ci.bazel.io/",
-    } + JOBS_SUBSTITUTIONS,
+    },
     tars = ["//jenkins/lib"],
     visibility = ["//visibility:public"],
 )
@@ -310,7 +309,7 @@
     substitutions = {
         "SECURITY_CONFIG": SECURITY_CONFIG,
         "PUBLIC_JENKINS_URL": "http://ci-staging.bazel.io/",
-    } + STAGING_JOBS_SUBSTITUTIONS,
+    },
     tars = ["//jenkins/lib"],
     visibility = ["//gcr:__pkg__"],
 )
@@ -331,7 +330,7 @@
     substitutions = {
         "SECURITY_CONFIG": "<useSecurity>false</useSecurity>",
         "PUBLIC_JENKINS_URL": "##ENV:JENKINS_SERVER##",
-    } + JOBS_SUBSTITUTIONS,
+    },
     tars = ["//jenkins/lib"],
 )
 
diff --git a/jenkins/build_defs/BUILD b/jenkins/build_defs/BUILD
index 6f2aa1e..c5d9fa2 100644
--- a/jenkins/build_defs/BUILD
+++ b/jenkins/build_defs/BUILD
@@ -1,7 +1,6 @@
 load("//jenkins/lib:def.bzl", "bazel_job_configuration_test")
 
 exports_files(glob([
-    "github-jobs*.tpl",
     "bazel-job*.tpl",
     "folder.xml",
     "default.json",
diff --git a/jenkins/build_defs/github-jobs.bat.tpl b/jenkins/build_defs/github-jobs.bat.tpl
deleted file mode 100644
index 1e7ba74..0000000
--- a/jenkins/build_defs/github-jobs.bat.tpl
+++ /dev/null
@@ -1,98 +0,0 @@
-:: Copyright 2016 The Bazel Authors. All rights reserved.
-::
-:: Licensed 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.
-
-:: ATTENTION: This file is auto-generated from a template.
-:: See https://github.com/bazelbuild/continuous-integration/blob/master/jenkins/github-jobs.bat.tpl
-
-:: Batch script containing the main build phase for windows bazel_github_job-s
-@echo on
-set BAZEL_SH=c:\tools\msys64\usr\bin\bash.exe
-
-set BAZEL=c:\bazel_ci\installs\%BAZEL_VERSION%\bazel.exe
-set TMPDIR=c:\bazel_ci\temp
-
-:: Verify that BAZEL_VERSION is not empty and BAZEL exists.
-echo CI info: BAZEL_VERSION=(%BAZEL_VERSION%)
-echo CI info: BAZEL=(%BAZEL%)
-
-:: Check BAZEL_VERSION, it should be defined by Jenkins.
-if "%BAZEL_VERSION%" == "" (
-  echo ERROR: BAZEL_VERSION is empty
-  exit /b 1
-)
-
-:: Check if BAZEL exists.
-if exist "%BAZEL%" (
-  echo CI info: BAZEL binary found
-) else (
-  echo CI ERROR: BAZEL not found
-  exit /b 1
-)
-
-:: Remove MSYS path on Windows platform, the MSYS path
-:: was originally added by jenkins-slave-windows.ps1
-set PATH=%PATH:c:\tools\msys64\usr\bin;=%
-
-set ROOT=%cd%
-set BAZELRC=%ROOT%\.bazelrc
-del /q /f %BAZELRC%
-echo build {{ variables.BUILD_OPTS }} >> %BAZELRC%
-echo test {{ variables.TEST_OPTS }} >> %BAZELRC%
-echo test --test_tag_filters {{ variables.TEST_TAG_FILTERS }},-no_windows >> %BAZELRC%
-
-call:bazel version
-
-del /q /f .unstable
-
-:: Expand variables.WINDOWS_CONFIGURE
-{{ variables.WINDOWS_CONFIGURE }}
-
-:: Check variables.WINDOWS_BUILDS
-if not "{{ variables.WINDOWS_BUILDS }}" == "" (
-  call:bazel build --copt=-w --host_copt=-w {{ variables.WINDOWS_BUILDS }}
-)
-
-:: Check variables.WINDOWS_TESTS
-if not "{{ variables.WINDOWS_TESTS }}" == "" (
-  call:bazel test --copt=-w --host_copt=-w {{ variables.WINDOWS_TESTS }}
-)
-
-set MSYS_OPTION=--cpu=x64_windows_msys --host_cpu=x64_windows_msys
-
-:: Check variables.WINDOWS_BUILDS_MSYS
-if not "{{ variables.WINDOWS_BUILDS_MSYS }}" == "" (
-  call:bazel build %MSYS_OPTION% {{ variables.WINDOWS_BUILDS_MSYS }}
-)
-
-:: Check variables.WINDOWS_TESTS_MSYS
-if not "{{ variables.WINDOWS_TESTS_MSYS }}" == "" (
-  call:bazel test %MSYS_OPTION%  {{ variables.WINDOWS_TESTS_MSYS }}
-)
-
-exit %errorlevel%
-
-:bazel
-%BAZEL% --bazelrc=%BAZELRC% %*
-set retCode=%errorlevel%
-if %retCode%==3 (
-  :: Write 1 in the .unstable file so the following step in Jenkins
-  :: knows that it is a test failure.
-  echo 1 > %ROOT%\.unstable
-) else (
-  if not %retCode%==0 (
-    :: Else simply fail the job by exiting with a non-null return code.
-    exit %retCode%
-  )
-)
-exit /b 0
diff --git a/jenkins/build_defs/github-jobs.sh.tpl b/jenkins/build_defs/github-jobs.sh.tpl
deleted file mode 100644
index 4ca6ae2..0000000
--- a/jenkins/build_defs/github-jobs.sh.tpl
+++ /dev/null
@@ -1,81 +0,0 @@
-#!/bin/bash
-# Copyright 2016 The Bazel Authors. All rights reserved.
-#
-# Licensed 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.
-
-# Shell script containing the main build phase for all bazel_github_job-s
-
-set -e
-set +x
-
-BAZEL=~/.bazel/${BAZEL_VERSION}/bin/bazel
-
-ROOT="${PWD}"
-
-TEST_TAG_FILTERS="{{ variables.TEST_TAG_FILTERS }}"
-BUILD_TAG_FILTERS=""
-
-cat >${ROOT}/bazel.bazelrc <<EOF
-import %workspace%/.bazelrc
-build {{ variables.BUILD_OPTS }}
-test {{ variables.TEST_OPTS }}
-test --test_tag_filters ${TEST_TAG_FILTERS}
-EOF
-
-if [[ ! -z "${BUILD_TAG_FILTERS}" ]];
-then
-  echo "build --build_tag_filters ${BUILD_TAG_FILTERS}" >> ${ROOT}/bazel.bazelrc
-fi
-
-if [[ "${PLATFORM_NAME}" =~ .*darwin.* ]] && \
-      xcodebuild -showsdks 2> /dev/null | grep -q '\-sdk iphonesimulator'; then
-  cat >>${ROOT}/bazel.bazelrc <<EOF
-build --define IPHONE_SDK=1
-EOF
-fi
-
-rm -f .unstable
-mkdir -p .bin
-cat <<EOF >.bin/bazel
-#!/bin/bash
-retCode=0
-${BAZEL} --bazelrc=${ROOT}/bazel.bazelrc "\$@" || retCode=\$?
-# Bazel returns 3 if there was test failures but no breakge
-if [[ "\$retCode" -eq "3" ]]; then
-  # Write 1 in the .unstable file so the following step in Jenkins
-  # know that it is a test failure.
-  echo 1 >"${ROOT}/.unstable"
-elif [[ "\$retCode" -ne "0" ]]; then
-  # Else simply fails the job by exiting with a non null return code
-  exit \$retCode
-fi
-EOF
-chmod +x .bin/bazel
-export PATH="${PWD}/.bin:${PATH}"
-
-cd {{ variables.WORKSPACE }}
-
-touch .bazelrc
-
-echo "==== bazel version ===="
-bazel version
-echo
-echo
-
-set -x
-
-{{ variables.CONFIGURE }}
-TESTS='{{ variables.TESTS }}'
-[ -z "${TESTS}" ] || TESTS="$(bazel query "tests(${TESTS})")"
-[ -z "{{ variables.BUILDS }}" ] || bazel build {{ variables.BUILDS }}
-[ -z "${TESTS}" ] || bazel test ${TESTS}
diff --git a/jenkins/build_defs/github-jobs.test-logs.bat.tpl b/jenkins/build_defs/github-jobs.test-logs.bat.tpl
deleted file mode 100644
index a92a4ec..0000000
--- a/jenkins/build_defs/github-jobs.test-logs.bat.tpl
+++ /dev/null
@@ -1,26 +0,0 @@
-:: Copyright 2016 The Bazel Authors. All rights reserved.
-::
-:: Licensed 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.
-
-:: Batch to avoid failing bazel_github_job because of the absence of log files
-
-if NOT EXIST "{{ variables.WORKSPACE }}/bazel-testlogs/*" (
-  rmdir /q "{{ variables.WORKSPACE }}/bazel-testlogs"
-  md "{{ variables.WORKSPACE }}/bazel-testlogs"
-)
-
-set LOGFILE="{{ variables.WORKSPACE }}/bazel-testlogs/dummy.xml"
-echo ^<?xml version="1.0" encoding="UTF-8"?^> > %LOGFILE%
-echo ^<testsuites^> >> %LOGFILE%
-echo ^<testsuite name="dummy" tests="0" failures="0" errors="0"/^> >> %LOGFILE%
-echo ^</testsuites^> >> %LOGFILE%
diff --git a/jenkins/build_defs/github-jobs.test-logs.sh.tpl b/jenkins/build_defs/github-jobs.test-logs.sh.tpl
deleted file mode 100644
index 11d1ad1..0000000
--- a/jenkins/build_defs/github-jobs.test-logs.sh.tpl
+++ /dev/null
@@ -1,27 +0,0 @@
-#!/bin/bash
-# Copyright 2016 The Bazel Authors. All rights reserved.
-#
-# Licensed 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.
-
-# Script to avoid failing bazel_github_job because of the absence of log files
-if [ ! -e "{{ variables.WORKSPACE }}/bazel-testlogs" ]; then
-  # Remove dangling symlink if present.
-  rm -f "{{ variables.WORKSPACE }}/bazel-testlogs"
-  mkdir -p "{{ variables.WORKSPACE }}/bazel-testlogs"
-fi
-cat <<EOF >{{ variables.WORKSPACE }}/bazel-testlogs/dummy.xml
-<?xml version="1.0" encoding="UTF-8"?>
-<testsuites>
-  <testsuite name="dummy" tests="0" failures="0" errors="0"/>
-</testsuites>
-EOF
diff --git a/jenkins/build_defs/github-jobs.xml.tpl b/jenkins/build_defs/github-jobs.xml.tpl
deleted file mode 100644
index 8b0f9e0..0000000
--- a/jenkins/build_defs/github-jobs.xml.tpl
+++ /dev/null
@@ -1,171 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<!--
-  Copyright 2015 The Bazel Authors. All rights reserved.
-
-  Licensed 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.
--->
-<matrix-project >
-  <actions/>
-  <description>Test the {{ variables.PROJECT_NAME }} project still build with Bazel at head and latest release.</description>
-  <keepDependencies>false</keepDependencies>
-  {% if variables.github == "True" %}
-  <properties>
-    <com.coravy.hudson.plugins.github.GithubProjectProperty >
-      <projectUrl>{{ variables.GITHUB_URL }}</projectUrl>
-    </com.coravy.hudson.plugins.github.GithubProjectProperty>
-  </properties>
-  {% endif %}
-  <scm class="hudson.plugins.git.GitSCM" >
-    <configVersion>2</configVersion>
-    <userRemoteConfigs>
-      <hudson.plugins.git.UserRemoteConfig>
-        <refspec>+refs/heads/*:refs/remotes/origin/*</refspec>
-        <url>{{ variables.GIT_URL }}</url>
-      </hudson.plugins.git.UserRemoteConfig>
-    </userRemoteConfigs>
-    <branches>
-      <hudson.plugins.git.BranchSpec>
-        <name>*/{{ variables.BRANCH }}</name>
-      </hudson.plugins.git.BranchSpec>
-    </branches>
-    <doGenerateSubmoduleConfigurations>false</doGenerateSubmoduleConfigurations>
-    <submoduleCfg class="list"/>
-    <extensions>
-      <hudson.plugins.git.extensions.impl.CleanBeforeCheckout/>
-      <hudson.plugins.git.extensions.impl.AuthorInChangelog/>
-      <hudson.plugins.git.extensions.impl.SubmoduleOption>
-        <disableSubmodules>false</disableSubmodules>
-        <recursiveSubmodules>true</recursiveSubmodules>
-        <trackingSubmodules>false</trackingSubmodules>
-      </hudson.plugins.git.extensions.impl.SubmoduleOption>
-    </extensions>
-  </scm>
-  <quietPeriod>5</quietPeriod>
-  <canRoam>true</canRoam>
-  <disabled>{{ variables.disabled }}</disabled>
-  <blockBuildWhenDownstreamBuilding>false</blockBuildWhenDownstreamBuilding>
-  <blockBuildWhenUpstreamBuilding>true</blockBuildWhenUpstreamBuilding>
-  {% if variables.enable_trigger == "true" %}
-  <triggers>
-    <com.cloudbees.jenkins.GitHubPushTrigger >
-      <spec></spec>
-    </com.cloudbees.jenkins.GitHubPushTrigger>
-  </triggers>
-  {% endif %}
-  <concurrentBuild>false</concurrentBuild>
-  <axes>
-    <hudson.matrix.LabelAxis>
-      <name>PLATFORM_NAME</name>
-      <values>{% for v in variables.PLATFORMS.split("\n") %}<string>{{ v }}</string>{% endfor %}</values>
-    </hudson.matrix.LabelAxis>
-    <hudson.matrix.TextAxis>
-      <name>BAZEL_VERSION</name>
-       <values>{% for v in variables.BAZEL_VERSIONS.split("\n") %}<string>{{ v }}</string>{% endfor %}</values>
-    </hudson.matrix.TextAxis>
-  </axes>
-  <builders>
-    <org.jenkinsci.plugins.conditionalbuildstep.ConditionalBuilder plugin="conditional-buildstep@1.3.3">
-    <runner class="org.jenkins_ci.plugins.run_condition.BuildStepRunner$Fail" plugin="run-condition@1.0"/>
-    <runCondition class="org.jenkins_ci.plugins.run_condition.core.ExpressionCondition" plugin="run-condition@1.0">
-      <expression>^((?!windows).)*$</expression>
-      <label>${PLATFORM_NAME}</label>
-    </runCondition>
-    <conditionalbuilders>
-    <hudson.tasks.Shell>
-      <command>{{ imports['//jenkins/build_defs:github-jobs.sh.tpl'] }}</command>
-    </hudson.tasks.Shell>
-    <hudson.tasks.Shell>
-      <command>{{ imports['//jenkins/build_defs:github-jobs.test-logs.sh.tpl'] }}</command>
-    </hudson.tasks.Shell>
-    </conditionalbuilders>
-    </org.jenkinsci.plugins.conditionalbuildstep.ConditionalBuilder>
-
-    <org.jenkinsci.plugins.conditionalbuildstep.ConditionalBuilder plugin="conditional-buildstep@1.3.3">
-      <runner class="org.jenkins_ci.plugins.run_condition.BuildStepRunner$Fail" plugin="run-condition@1.0"/>
-      <runCondition class="org.jenkins_ci.plugins.run_condition.logic.And" plugin="run-condition@1.0">
-        <conditions>
-          <org.jenkins__ci.plugins.run__condition.logic.ConditionContainer>
-            <condition class="org.jenkins_ci.plugins.run_condition.core.ExpressionCondition">
-              <expression>windows.*</expression>
-              <label>${PLATFORM_NAME}</label>
-            </condition>
-          </org.jenkins__ci.plugins.run__condition.logic.ConditionContainer>
-        </conditions>
-      </runCondition>
-      <conditionalbuilders>
-        <hudson.tasks.BatchFile>
-          <command>{{ imports['//jenkins/build_defs:github-jobs.bat.tpl'] }}</command>
-        </hudson.tasks.BatchFile>
-        <hudson.tasks.BatchFile>
-          <command>{{ imports['//jenkins/build_defs:github-jobs.test-logs.bat.tpl'] }}</command>
-        </hudson.tasks.BatchFile>
-      </conditionalbuilders>
-    </org.jenkinsci.plugins.conditionalbuildstep.ConditionalBuilder>
-
-
-    <org.jenkinsci.plugins.conditionalbuildstep.singlestep.SingleConditionalBuilder >
-      <condition class="org.jenkins_ci.plugins.run_condition.core.FileExistsCondition" >
-        <file>.unstable</file>
-        <baseDir class="org.jenkins_ci.plugins.run_condition.common.BaseDirectory$Workspace"/>
-      </condition>
-      <buildStep class="org.jenkins_ci.plugins.fail_the_build.FixResultBuilder" >
-        <defaultResultName>UNSTABLE</defaultResultName>
-        <success></success>
-        <unstable></unstable>
-        <failure></failure>
-        <aborted></aborted>
-      </buildStep>
-      <runner class="org.jenkins_ci.plugins.run_condition.BuildStepRunner$Unstable" />
-    </org.jenkinsci.plugins.conditionalbuildstep.singlestep.SingleConditionalBuilder>
-  </builders>
-  <publishers>
-    <hudson.tasks.junit.JUnitResultArchiver >
-      <testResults>bazel-testlogs/**/test.xml, bazel-testlogs/**/dummy.xml</testResults>
-      <keepLongStdio>false</keepLongStdio>
-      <healthScaleFactor>1.0</healthScaleFactor>
-      <allowEmptyResults>true</allowEmptyResults>
-    </hudson.tasks.junit.JUnitResultArchiver>
-    {% if variables.SEND_EMAIL == "1" %}
-    <hudson.tasks.Mailer >
-      <recipients>{{ variables.BAZEL_BUILD_RECIPIENT }}</recipients>
-      <dontNotifyEveryUnstableBuild>false</dontNotifyEveryUnstableBuild>
-      <sendToIndividuals>false</sendToIndividuals>
-    </hudson.tasks.Mailer>
-    {% endif %}
-  </publishers>
-  <buildWrappers>
-    <hudson.plugins.build__timeout.BuildTimeoutWrapper>
-      <strategy class="hudson.plugins.build_timeout.impl.AbsoluteTimeOutStrategy">
-        <timeoutMinutes>240</timeoutMinutes>
-      </strategy>
-      <operationList>
-        <hudson.plugins.build__timeout.operations.FailOperation/>
-        <hudson.plugins.build__timeout.operations.WriteDescriptionOperation>
-          <description>Timed out</description>
-        </hudson.plugins.build__timeout.operations.WriteDescriptionOperation>
-      </operationList>
-    </hudson.plugins.build__timeout.BuildTimeoutWrapper>
-    {% if variables.SAUCE_ENABLED == "true" %}
-    <hudson.plugins.sauce_ondemand.SauceOnDemandBuildWrapper>
-      <enableSauceConnect>true</enableSauceConnect>
-      <credentialId>61b4846b-279d-4369-ae20-31e9d8b9bc66</credentialId>
-      <useGeneratedTunnelIdentifier>true</useGeneratedTunnelIdentifier>
-      <launchSauceConnectOnSlave>true</launchSauceConnectOnSlave>
-    </hudson.plugins.sauce_ondemand.SauceOnDemandBuildWrapper>
-    {% endif %}
-  </buildWrappers>
-  <executionStrategy class="hudson.matrix.DefaultMatrixExecutionStrategyImpl">
-    <runSequentially>{{ variables.RUN_SEQUENTIAL }}</runSequentially>
-  </executionStrategy>
-</matrix-project>
-
diff --git a/jenkins/build_defs/jenkins_job.bzl b/jenkins/build_defs/jenkins_job.bzl
index 7ac7f4c..0d23b90 100644
--- a/jenkins/build_defs/jenkins_job.bzl
+++ b/jenkins/build_defs/jenkins_job.bzl
@@ -22,7 +22,7 @@
 
 def jenkins_job(name, config, substitutions = {}, deps = [], deps_aliases = {},
                 project='bazel', org='bazelbuild', git_url=None, project_url=None,
-                folder=None, platforms=[], test_platforms=["linux-x86_64"],
+                folder=None, test_platforms=["linux-x86_64"],
                 create_filegroups=True):
   """Create a job configuration on Jenkins.
 
@@ -35,7 +35,6 @@
      org: the project organization on github, default 'bazelbuild'
      git_url: the URL to the git project, defaulted to the Github URL
      project_url: the project url, defaulted to the Git URL
-     platforms: platforms on which to run that job, default None,
      test_platforms: platforms on which to run that job when inside of a
        dockerized test, by default only 'linux-x86_64'
      create_filegroups: create filegroups named <name>/all, <name>/staging
@@ -56,7 +55,6 @@
       "GIT_URL": git_url,
       "GITHUB_PROJECT": github_project,
       "PROJECT_URL": project_url,
-      "PLATFORMS": "\n".join(platforms),
       "production": "true",
       } + MAIL_SUBSTITUTIONS
   substitutions["SEND_EMAIL"] = "1"
@@ -89,7 +87,6 @@
     native.filegroup(name = name + "/staging", srcs = [name + "-staging"])
 
   if test_platforms:
-    substitutions["PLATFORMS"] = "\n".join(test_platforms)
     substitutions["RESTRICT_CONFIGURATION"] += " + [node:%s]" % _to_groovy_list(test_platforms)
     expand_template(
       name = name + "-test",
@@ -111,16 +108,8 @@
     kwargs["git_url"] = kwargs
   bazel_github_job(**kwargs)
 
-def bazel_github_job(name, platforms=[], branch="master", project=None, org="google",
-                     project_url=None, workspace=".", configure=[], git_url=None,
-                     bazel_versions=["HEAD", "latest"],
-                     tests=["//..."], targets=["//..."], substitutions={},
-                     windows_configure=[],
-                     windows_tests=["//..."], windows_targets=["//..."],
-                     windows_tests_msys=["//..."], windows_targets_msys=["//..."],
-                     test_opts=["--test_output=errors", "--build_tests_only"],
-                     test_tag_filters=["-noci", "-manual"],
-                     build_opts=["--verbose_failures"],
+def bazel_github_job(name, branch="master", project=None, org="bazelbuild",
+                     project_url=None, workspace=".", git_url=None,
                      config="//jenkins/build_defs:default.json",
                      test_platforms=["linux-x86_64"],
                      enable_trigger=True,
@@ -129,35 +118,24 @@
                      pr_enabled=True,
                      github_enabled=True,
                      run_sequential=False,
-                     sauce_enabled=False):
+                     sauce_enabled=False,
+                     use_upstream_branch=False):
   """Create a generic github job configuration to build against Bazel head."""
   if not project:
     project = name
 
-  substitutions = substitutions + {
+  substitutions = {
     "WORKSPACE": workspace,
     "PROJECT_NAME": project,
     "BRANCH": branch,
     "NAME": name,
-    "CONFIGURE": "\n".join(configure),
-    "WINDOWS_CONFIGURE": "\n".join(windows_configure),
-    "TEST_OPTS": " ".join(test_opts),
-    "TEST_TAG_FILTERS": ",".join(test_tag_filters),
-    "BUILD_OPTS": " ".join(build_opts),
-    "TESTS": " + ".join(tests),
-    "WINDOWS_TESTS": " ".join(windows_tests),
-    # TODO(pcloudy): remove *_MSYS attributes when we don't need MSYS anymore
-    "WINDOWS_TESTS_MSYS": " ".join(windows_tests_msys),
-    "BUILDS": " ".join(targets),
-    "WINDOWS_BUILDS": " ".join(windows_targets),
-    "WINDOWS_BUILDS_MSYS": " ".join(windows_targets_msys),
-    "BAZEL_VERSIONS": "\n".join(bazel_versions),
     "disabled": str(not enabled).lower(),
     "enable_trigger": str(enable_trigger and github_enabled).lower(),
     "github": str(github_enabled),
-    "GERRIT_PROJECT": str(gerrit_project),
+    "GERRIT_PROJECT": str(gerrit_project) if gerrit_project else "",
     "RUN_SEQUENTIAL": str(run_sequential).lower(),
     "SAUCE_ENABLED": str(sauce_enabled).lower(),
+    "GLOBAL_USE_UPSTREAM_BRANCH": str(use_upstream_branch)
   }
 
   all_files = [name + ".xml"]
@@ -175,13 +153,9 @@
       project=project,
       org=org,
       project_url=project_url,
-      platforms=platforms,
       test_platforms = test_platforms,
       create_filegroups=False)
 
-  substitutions["BAZEL_VERSIONS"] = "\n".join([
-      v for v in bazel_versions if not v.startswith("HEAD")])
-
   if enabled and config:
     jenkins_job(
         name = "Global/" + name,
@@ -194,7 +168,6 @@
         project=project,
         org=org,
         project_url=project_url,
-        platforms=platforms,
         test_platforms=test_platforms,
         create_filegroups=False)
     all_files.append("Global/%s.xml" % name)
@@ -212,7 +185,6 @@
         project=project,
         org=org,
         project_url=project_url,
-        platforms=platforms,
         test_platforms=test_platforms,
         create_filegroups=False)
     all_files.append("PR/%s.xml" % name)
@@ -230,7 +202,6 @@
         project=project,
         org=org,
         project_url=project_url,
-        platforms=platforms,
         test_platforms=test_platforms)
     all_files.append("CR/%s.xml" % name)
     test_files.append("CR/%s-test.xml" % name)
diff --git a/jenkins/config/config.xml.tpl b/jenkins/config/config.xml.tpl
index 8bf32d5..6ae1215 100644
--- a/jenkins/config/config.xml.tpl
+++ b/jenkins/config/config.xml.tpl
@@ -26,9 +26,7 @@
       <filterExecutors>false</filterExecutors>
       <filterQueue>false</filterQueue>
       <properties class="hudson.model.View$PropertyList"/>
-      <jobNames>
-        {% for v in variables.GITHUB_JOBS.split(", ") %}<string>{{ v }}</string>{% endfor %}
-      </jobNames>
+      <jobNames/>
       <jobFilters/>
       <columns>
         <hudson.views.StatusColumn/>
@@ -40,6 +38,8 @@
         <hudson.views.BuildButtonColumn/>
       </columns>
       <recurse>false</recurse>
+      <includeRegex>(?!(install-bazel|Github-Trigger|PR|CR|Global|.*-Benchmark).*).*</includeRegex>
+      <statusFilter>true</statusFilter>
     </listView>
     <listView>
       <owner class="hudson" reference="../../.."/>
@@ -47,9 +47,7 @@
       <filterExecutors>false</filterExecutors>
       <filterQueue>false</filterQueue>
       <properties class="hudson.model.View$PropertyList"/>
-      <jobNames>
-        {% for v in variables.BAZEL_JOBS.split(", ") %}<string>{{ v }}</string>{% endfor %}
-      </jobNames>
+      <jobNames/>
       <jobFilters/>
       <columns>
         <hudson.views.StatusColumn/>
@@ -60,7 +58,9 @@
         <hudson.views.LastDurationColumn/>
         <hudson.views.BuildButtonColumn/>
       </columns>
+      <includeRegex>(install-bazel|Github-Trigger|PR|CR|Global|.*-Benchmark.*)</includeRegex>
       <recurse>false</recurse>
+      <statusFilter>true</statusFilter>
     </listView>
     <com.smartcodeltd.jenkinsci.plugins.buildmonitor.BuildMonitorView>
       <owner class="hudson" reference="../../.."/>
@@ -68,18 +68,17 @@
       <filterExecutors>false</filterExecutors>
       <filterQueue>false</filterQueue>
       <properties class="hudson.model.View$PropertyList"/>
-      <jobNames>
-        <comparator class="hudson.util.CaseInsensitiveComparator"/>{% for v in variables.IMPORTANT_JOBS.split(", ")|sort %}
-        <string>{{ v }}</string>{% endfor %}
-      </jobNames>
+      <jobNames/>
       <jobFilters/>
       <columns/>
-      <recurse>true</recurse>
       <title>Bazel Tests</title>
       <config>
         <displayCommitters>false</displayCommitters>
         <order class="com.smartcodeltd.jenkinsci.plugins.buildmonitor.order.ByName"/>
       </config>
+      <includeRegex>Global.*</includeRegex>
+      <recurse>true</recurse>
+      <statusFilter>true</statusFilter>
     </com.smartcodeltd.jenkinsci.plugins.buildmonitor.BuildMonitorView>
   </views>
   <primaryView>Projects</primaryView>
diff --git a/jenkins/jobs/BUILD b/jenkins/jobs/BUILD
index b0fe279..8abfaa1 100644
--- a/jenkins/jobs/BUILD
+++ b/jenkins/jobs/BUILD
@@ -1,25 +1,14 @@
 load("//jenkins/build_defs:jenkins.bzl", "jenkins_job", "bazel_github_job", "bazel_git_job")
-load(
-    ":jobs.bzl",
-    "LINUX_PLATFORMS",
-    "UNIX_PLATFORMS",
-    "DARWIN_PLATFORMS",
-    "WINDOWS_PLATFORMS",
-    "ALL_PLATFORMS",
-    "RULES",
-    "DISABLED_RULES",
-    "BAZEL_JOBS",
-    "JOBS",
-    "JOBS_SUBSTITUTIONS",
-    "STAGING_JOBS",
-)
+load(":jobs.bzl", "job_lists")
 load("//jenkins/lib:def.bzl", "bazel_job_configuration_test")
 
+# Tests
 [bazel_job_configuration_test(
     name = s + "-test",
     configs = [s],
 ) for s in glob(["configs/*.json"])]
 
+# Some common jobs
 jenkins_job(
     name = "Github-Trigger",
     config = "jobs-Github-Trigger.xml.tpl",
@@ -30,7 +19,10 @@
     name = job,
     config = "jobs-%s.xml.tpl" % job,
     project_url = "http://bazel.io",
-) for job in ["Bazel-Benchmark", "Bazel-Push-Benchmark-Output"]]
+) for job in [
+    "Bazel-Benchmark",
+    "Bazel-Push-Benchmark-Output",
+]]
 
 jenkins_job(
     name = "Global/pipeline",
@@ -56,316 +48,144 @@
     deps = [":install-bazel.groovy"],
 )
 
-# TODO(dmarting): activate Tensorflow on mac (missing dependencies)
+##
+## list of projects
+##
+
+# Jobs from the tensorflow org
 bazel_github_job(
     name = "TensorFlow",
-    build_opts = ["-c opt"],
     config = ":configs/tensorflow.json",
-    configure = ["./tensorflow/tools/ci_build/builds/configured CPU"],
     org = "tensorflow",
-    platforms = LINUX_PLATFORMS + WINDOWS_PLATFORMS,
     project_url = "https://tensorflow.org",
-    targets = ["//tensorflow/tools/pip_package:build_pip_package"],
-    test_opts = [
-        "--test_timeout=1800",
-        "--test_output=errors",
-    ],
-    tests = ["filter(\":(lib|platform)_.*\", kind(test, //tensorflow/core:all))"],
-    windows_configure = [
-        # run.bat invokes msys bash to run the shell script for building TF,
-        # But msys bash doesn't inherit PATH from cmd.exe, so we make bazel avaiable by
-        # copying it to c:\\tools\\msys64\\usr\\bin\\bazel.exe
-        "del c:\\tools\\msys64\\usr\\bin\\bazel.exe",
-        "copy %BAZEL% c:\\tools\\msys64\\usr\\bin\\bazel.exe",
-        ".\\tensorflow\\tools\\ci_build\\windows\\cpu\\pip\\run.bat",
-    ],
-    windows_targets = [],
-    windows_tests = [],
 )
 
 bazel_github_job(
     name = "TensorFlow_Serving",
     config = ":configs/tensorflow_serving.json",
-    configure = ["(cd tensorflow && ln -s ../.bazelrc && ./tensorflow/tools/ci_build/builds/configured CPU)"],
     org = "tensorflow",
-    platforms = LINUX_PLATFORMS,
     project = "serving",
-    targets = [],
-    tests = ["tensorflow_serving/..."],
 )
 
 bazel_github_job(
     name = "tf_models_syntaxnet",
     config = ":configs/tf_models_syntaxnet.json",
-    configure = ["(cd tensorflow && ln -s ../.bazelrc && ./tensorflow/tools/ci_build/builds/configured CPU)"],
     org = "tensorflow",
-    platforms = LINUX_PLATFORMS,
     project = "models",
-    targets = [],
-    tests = [
-        "syntaxnet/...",
-        "util/utf8/...",
-    ],
     workspace = "syntaxnet",
 )
 
-bazel_github_job(
-    name = "Tutorial",
-    config = ":configs/tutorial.json",
-    configure = ["source ./ci/setup_android_repositories.sh"],
-    org = "bazelbuild",
-    platforms = UNIX_PLATFORMS,
-    project = "examples",
-    targets = ["//:all"],
-    tests = [],
-    workspace = "tutorial",
-)
-
+# Job for testing Gerrit
 bazel_git_job(
     name = "gerrit",
     config = ":configs/gerrit.json",
     git_url = "https://gerrit.googlesource.com/gerrit",
     org = "GerritCodeReview",
-    platforms = UNIX_PLATFORMS,
     project = "gerrit",
     project_url = "https://www.gerritcodereview.com",
-    targets = ["//:release"],
-    tests = ["//..."],
+)
+
+# Jobs from the bazelbuild org with customization
+bazel_github_job(
+    name = "Tutorial",
+    config = ":configs/tutorial.json",
+    project = "examples",
+    workspace = "tutorial",
 )
 
 bazel_github_job(
     name = "bazel-docker-tests",
-    bazel_versions = [
-        "HEAD",
-        "latest",
-    ],
     config = ":configs/bazel-docker-tests.json",
     enable_trigger = False,
     git_url = "https://bazel.googlesource.com/bazel",
-    org = "bazelbuild",
-    platforms = ["docker"],
     pr_enabled = False,  # Do not vet PR because those tests are slow.
     project = "bazel",
-    substitutions = {"GLOBAL_USE_UPSTREAM_BRANCH": "True"},
-    targets = [],
-    tests = [
-        "filter(\"^//src/test/docker\", //src/test/...)",
-        "//tools/cpp/...",
-    ],
+    use_upstream_branch = True,
 )
 
 bazel_github_job(
     name = "eclipse",
-    bazel_versions = [
-        "HEAD",
-        "latest",
-    ],
     gerrit_project = "eclipse",
-    org = "bazelbuild",
-    platforms = UNIX_PLATFORMS,
 )
 
 bazel_github_job(
     name = "continuous-integration",
-    bazel_versions = [
-        "HEAD",
-        "latest",
-    ],
     config = ":configs/continuous-integration.json",
     gerrit_project = "continuous-integration",
-    org = "bazelbuild",
-    platforms = ["docker"],
 )
 
 bazel_github_job(
     name = "bazel-tests",
-    bazel_versions = [
-        "HEAD",
-        "latest",
-    ],
-    build_opts = [
-        "--verbose_failures",
-        # TODO(pcloudy): This is only for Windows.
-        # Remove it after wrapper-less CROSSTOOL becomes default
-        "--action_env=NO_MSVC_WRAPPER=1",
-        # TODO(pcloudy): Remove this after TEMP is properly set.
-        # A workaround for ASSERT_DEATH in gtest on Windows.
-        # When running tests, Bazel doesn't set TEMP,
-        # ASSERT_DEATH will try to write to C:/Windows, then fails.
-        "--test_env=TEMP",
-    ],
     config = ":configs/bazel-tests.json",
-    configure = [
-        "source scripts/ci/build.sh",
-        "setup_android_repositories",
-    ],
     enable_trigger = False,
     gerrit_project = "bazel",
     git_url = "https://bazel.googlesource.com/bazel",
-    org = "bazelbuild",
-    platforms = ALL_PLATFORMS,
     project = "bazel",
-    substitutions = {"GLOBAL_USE_UPSTREAM_BRANCH": "True"},
-    targets = [],
-    test_opts = [
-        "-k",
-        "--test_output=errors",
-        "--build_tests_only",
-    ],
-    tests = [
-        "filter(\"^(?!//src/test/docker).*$\", //src/test/...)",
-        "//scripts/...",
-        "//third_party/ijar/...",
-        "//tools/android/...",
-    ],
-    windows_targets = [
-        "//src:bazel",
-    ],
-    windows_targets_msys = [
-    ],
-    windows_tests = [
-        "//src/test/py/...",
-        "//src/test/java/...",
-        "//src/test/cpp/...",
-        "//src/test/native:all_tests",
-        "//src/tools/launcher/util/...",
-        "//src/test/shell/bazel:bazel_bootstrap_distfile_test",
-        "//src/test/shell/bazel:bazel_windows_example_test",
-    ],
-    windows_tests_msys = [
-        "//src/test/shell/bazel:bazel_windows_example_test",
-    ],
+    use_upstream_branch = True,
 )
 
 bazel_github_job(
     name = "buildifier",
     config = ":configs/buildifier.json",
-    org = "bazelbuild",
-    platforms = UNIX_PLATFORMS,
     # Repository was renamed
     project = "buildtools",
-    targets = [],
-    tests = [":tests"],
 )
 
-bazel_github_job(
-    name = "rules_scala",
-    config = ":configs/rules_scala.json",
-    org = "bazelbuild",
-    platforms = UNIX_PLATFORMS,
-    targets = ["//test/..."],
-    tests = ["//test/..."],
-)
-
-bazel_github_job(
-    name = "rules_rust",
-    config = ":configs/rules_rust.json",
-    org = "bazelbuild",
-    platforms = UNIX_PLATFORMS,
-    targets = [
-        "//...",
-        "@examples//...",
-    ],
-    tests = [
-        "//...",
-        "@examples//...",
-    ],
-)
-
-# Special case rules_dotnet that runs only on darwin platforms
-bazel_github_job(
-    name = "rules_dotnet",
-    config = ":configs/rules_dotnet.json",
-    org = "bazelbuild",
-    platforms = DARWIN_PLATFORMS,
-)
-
-bazel_github_job(
-    name = "rules_jsonnet",
-    config = ":configs/rules_jsonnet.json",
-    org = "bazelbuild",
-    platforms = UNIX_PLATFORMS,
-    targets = [
-        "//...",
-        "@examples//...",
-    ],
-    tests = [
-        "//...",
-        "@examples//...",
-    ],
-)
-
-[bazel_github_job(
-    name = job,
-    org = "bazelbuild",
-    platforms = UNIX_PLATFORMS,
-) for job in RULES]
-
 # rules_web was renamed to rules_webtesting, keep the legacy name
 # for the job to keep history but use the new project name.
 bazel_github_job(
     name = "rules_web",
-    org = "bazelbuild",
-    platforms = UNIX_PLATFORMS,
     project = "rules_webtesting",
     run_sequential = True,
     sauce_enabled = True,
 )
 
-[bazel_github_job(
-    name = job,
-    enabled = False,
-    org = "bazelbuild",
-    platforms = UNIX_PLATFORMS,
-) for job in DISABLED_RULES]
-
 bazel_github_job(
     name = "intellij",
-    build_opts = ["--define=ij_product=intellij-latest"],
     config = ":configs/intellij.json",
-    org = "bazelbuild",
-    platforms = UNIX_PLATFORMS,
     project = "intellij",
     project_url = "https://ij.bazel.io",
-    targets = ["ijwb:ijwb_bazel"],
-    test_opts = ["--define=ij_product=intellij-latest"],
-    tests = [":ijwb_tests"],
 )
 
-bazel_github_job(
-    name = "migration-tooling",
-    org = "bazelbuild",
-    platforms = UNIX_PLATFORMS,
-)
+# Jobs from the bazelbuild org that have a specific config on continuous-integration
+# side.
+# TODO(dmarting): merge with the next list once we move those configuration file
+# on the repository side.
+[bazel_github_job(
+    name = n,
+    config = ":configs/%s.json" % n,
+) for n in [
+    "rules_scala",
+    "rules_rust",
+    "rules_dotnet",
+    "rules_jsonnet",
+]]
 
+# Jobs from the bazelbuild org using the default configuration
+[bazel_github_job(name = n) for n in [
+    "rules_appengine",
+    "rules_closure",
+    "rules_d",
+    "rules_go",
+    "rules_sass",
+    "rules_gwt",
+    "rules_groovy",
+    "rules_perl",
+    "rules_docker",
+    "skydoc",
+    "bazel-watcher",
+    "migration-tooling",
+]]
+
+# Jobs from the google org
 [bazel_github_job(
     name = n,
     config = ":configs/%s.json" % n,
     org = "google",
-    platforms = UNIX_PLATFORMS,
-    # on Linux protobuf tries to build objc target so filter by test only
-    targets = [],
-    tests = [":all"],
 ) for n in [
     "re2",
     "protobuf",
 ]]
 
-filegroup(
-    name = "jobs",
-    srcs = ["%s/all" % j for j in JOBS],
-    visibility = ["//jenkins:__pkg__"],
-)
-
-filegroup(
-    name = "staging-jobs",
-    srcs = ["%s/staging" % j for j in STAGING_JOBS],
-    visibility = ["//jenkins:__pkg__"],
-)
-
-filegroup(
-    name = "test-jobs",
-    # We include all test but the docker ones (they needs access to the docker server).
-    srcs = ["%s/test" % j for j in JOBS if not "docker" in j],
-    visibility = ["//jenkins:__pkg__"],
-)
+# End of project list
+job_lists(visibility = ["//jenkins:__pkg__"])
diff --git a/jenkins/jobs/Bazel.unix.sh.tpl b/jenkins/jobs/Bazel.unix.sh.tpl
deleted file mode 100644
index 1d7ebb3..0000000
--- a/jenkins/jobs/Bazel.unix.sh.tpl
+++ /dev/null
@@ -1,32 +0,0 @@
-#!/usr/bin/env bash
-# Copyright 2016 The Bazel Authors. All rights reserved.
-#
-# Licensed 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.
-
-# Shell script to set-up the environment on Linux and Darwin to bootstrap
-# bazel.
-
-source scripts/ci/build.sh
-
-export BUILD_BY="Jenkins"
-export BUILD_LOG="${BUILD_URL}"
-export GIT_REPOSITORY_URL="${GIT_URL}"
-export BAZEL_COMPILE_TARGET="compile,srcs,determinism"
-export BOOTSTRAP_BAZEL="${HOME}/.bazel/latest/binary/bazel"
-
-if [[ "${NODE_LABELS}" =~ "no-release" ]]; then
-  bazel_build
-else
-  bazel_build output/ci
-fi
-
diff --git a/jenkins/jobs/Bazel.win.sh.tpl b/jenkins/jobs/Bazel.win.sh.tpl
deleted file mode 100644
index 26dba4d..0000000
--- a/jenkins/jobs/Bazel.win.sh.tpl
+++ /dev/null
@@ -1,39 +0,0 @@
-# Copyright 2016 The Bazel Authors. All rights reserved.
-#
-# Licensed 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.
-
-# Shell script to set-up the environment on Windows to call the bootstrap
-# inside MSYS.
-
-set -eux
-
-# We have to strip the environment or the windows env will override the 
-# Bazel latest to bootstrap bazel
-echo 'export BOOTSTRAP_BAZEL="/c/bazel_ci/installs/bootstrap/bazel.exe"' >env.sh
-
-# Pass PLATFORM_NAME to Windows bootstrap script for building a MSVC Bazel
-echo "export PLATFORM_NAME=\"${PLATFORM_NAME}\"" >>env.sh
-
-# Various set-up for the slave
-echo 'export TMPDIR="${TMPDIR:-/c/bazel_ci/temp}"' >>env.sh
-echo 'mkdir -p "${TMPDIR}"' >>env.sh
-echo 'export PATH="$PATH:/c/python_27_amd64/files"' >>env.sh
-
-# Get java home
-echo "export JAVA_HOME='$(dirname "$(dirname "$(which java)")")'" >>env.sh
-
-# Jenkins is capable of executing shell scripts directly, even on Windows,
-# but it uses a shell binary bundled with it and not the msys one. We don't
-# want to use two different shells, so a batch file is used instead to call
-# the msys shell.
-/c/tools/msys64/usr/bin/bash -l -c "cd $PWD; source env.sh; exec ./scripts/ci/windows/compile_windows.sh"
diff --git a/jenkins/jobs/jobs.bzl b/jenkins/jobs/jobs.bzl
index 7d89f0e..d876ae1 100644
--- a/jenkins/jobs/jobs.bzl
+++ b/jenkins/jobs/jobs.bzl
@@ -1,88 +1,39 @@
-LINUX_PLATFORMS = [
-    "linux-x86_64",
-    "ubuntu_16.04-x86_64",
-]
+def _is_staging(job):
+  job_desc = native.existing_rule(job + "-staging")
+  job_subs = job_desc["substitutions"]
+  is_bazel = "PROJECT_NAME" in job_subs
+  is_gerrit = "GERRIT_PROJECT" in job_subs and job_subs["GERRIT_PROJECT"] != ""
+  # Take job with Gerrit review, or jobs that are not bazel jovbs
+  is_gerrit_or_not_bazel = is_gerrit or not is_bazel
+  # Exclude Benchmark jobs
+  is_not_benchmark = "-Benchmark" not in job
+  # Gold jobs are some bazel job that we include for testing
+  is_gold = job in ["TensorFlow", "Tutorial"]
+  return (is_gold or is_gerrit_or_not_bazel) and is_not_benchmark
 
-BSD_PLATFORMS = ["freebsd-11", "freebsd-12"]
 
-DARWIN_PLATFORMS = ["darwin-x86_64"]
+def _is_testing(job):
+  # We include all test but the docker ones (they needs access to the docker server).
+  return not "docker" in job and job != "continuous-integration"
 
-WINDOWS_PLATFORMS = ["windows-x86_64"]
 
-UNIX_PLATFORMS = LINUX_PLATFORMS + DARWIN_PLATFORMS
+def job_lists(name = "jobs", visibility = None):
+  jobs = native.existing_rules()
 
-ALL_PLATFORMS = UNIX_PLATFORMS + WINDOWS_PLATFORMS
+  native.filegroup(
+    name = name,
+    srcs = [j for j in jobs if j.endswith("/all")],
+    visibility = visibility,
+  )
 
-RULES = [
-    "rules_appengine",
-    "rules_closure",
-    "rules_d",
-    "rules_go",
-    "rules_sass",
-    "rules_gwt",
-    "rules_groovy",
-    "rules_perl",
-    "rules_docker",
-    # These are not really rules, but it is simpler to put here.
-    "skydoc",
-    "bazel-watcher",
-]
+  native.filegroup(
+    name = "staging-" + name,
+    srcs = [j for j in jobs if j.endswith("/staging") and _is_staging(j[:-8])],
+    visibility = visibility,
+  )
 
-DISABLED_RULES = []
-
-GERRIT_JOBS = [
-    "bazel-tests",
-    "continuous-integration",
-    "eclipse",
-]
-
-GITHUB_JOBS = [
-    "TensorFlow",
-    "TensorFlow_Serving",
-    "tf_models_syntaxnet",
-    "Tutorial",
-    "re2",
-    "protobuf",
-    "gerrit",
-    # rules_dotnet is disabled on Linux until bazelbuild/rules_dotnet#13 is fixed.
-    "rules_dotnet",
-    # rules_web was renamed to rules_webtesting, keep the legacy name
-    # for the job to keep history but use the new project name.
-    "rules_web",
-    "intellij",
-    "buildifier",
-    "rules_jsonnet",
-    "rules_rust",
-    "rules_scala",
-    "migration-tooling",
-] + GERRIT_JOBS + RULES + DISABLED_RULES
-
-NO_PR_JOBS = ["bazel-docker-tests"]
-
-BAZEL_STAGING_JOBS = [
-    "Github-Trigger",
-    "Global/pipeline",
-    "CR/global-verifier",
-    "install-bazel",
-]
-
-BAZEL_JOBS = BAZEL_STAGING_JOBS + [
-    "Bazel-Benchmark",
-    "Bazel-Push-Benchmark-Output",
-]
-
-JOBS = BAZEL_JOBS + GITHUB_JOBS + NO_PR_JOBS
-
-JOBS_SUBSTITUTIONS = {
-    "GITHUB_JOBS": ", ".join(GITHUB_JOBS + NO_PR_JOBS),
-    "BAZEL_JOBS": ", ".join(BAZEL_JOBS),
-    "IMPORTANT_JOBS": ", ".join(GITHUB_JOBS + NO_PR_JOBS + ["Bazel", "Bazel-Publish-Site", "Bazel-Install-Trigger"])
-}
-
-STAGING_GITHUB_JOBS = GERRIT_JOBS + ["TensorFlow", "Tutorial"]
-STAGING_JOBS = BAZEL_STAGING_JOBS + STAGING_GITHUB_JOBS
-STAGING_JOBS_SUBSTITUTIONS = {
-    "GITHUB_JOBS": ", ".join(STAGING_GITHUB_JOBS),
-    "BAZEL_JOBS": ", ".join(BAZEL_STAGING_JOBS),
-    "IMPORTANT_JOBS": ", ".join(STAGING_GITHUB_JOBS + ["Bazel", "Bazel-Publish-Site", "Bazel-Install-Trigger"])
-}
+  native.filegroup(
+    name = "test-" + name,
+    srcs = [j for j in jobs if j.endswith("/test") and _is_testing(j[:-5])],
+    visibility = visibility,
+  )
