cbuildbot: Add 'no-publish-prebuilts-conf' flag

This approach would enable running a production instance of the SDK
builder based on a branch and having that builder upload binary packages
but *not* write any changes to prebuilt.conf or sdk_version.conf. A
person could then manually update the prebuilt.conf paths on the branch
to point to these uploaded artifacts as a way of providing new
cross-compilers on a release branch.

BUG=chromium:1055914
TEST=None

Change-Id: I622af5b2d8a41e7afcb02c86b22a9f07f3b11e6b
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/chromite/+/2072942
Tested-by: Chris McDonald <cjmcdonald@chromium.org>
Commit-Queue: Chris McDonald <cjmcdonald@chromium.org>
Reviewed-by: Mike Frysinger <vapier@chromium.org>
(cherry picked from commit 2921fd4a59eca7f30a46156a3f642acc179548eb)
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/chromite/+/2267657
Reviewed-by: Michael Mortensen <mmortensen@google.com>
Commit-Queue: Mike Frysinger <vapier@chromium.org>
Tested-by: Mike Frysinger <vapier@chromium.org>
diff --git a/cbuildbot/stages/artifact_stages.py b/cbuildbot/stages/artifact_stages.py
index ff138f2..826e39a 100644
--- a/cbuildbot/stages/artifact_stages.py
+++ b/cbuildbot/stages/artifact_stages.py
@@ -631,7 +631,7 @@
     if version is not None:
       generated_args.extend(['--set-version', version])
 
-    if self._run.config.git_sync:
+    if self._run.config.git_sync and self._run.options.publish:
       # Git sync should never be set for pfq type builds.
       assert not config_lib.IsPFQType(self._prebuilt_type)
       generated_args.extend(['--git-sync'])
diff --git a/cbuildbot/stages/sdk_stages.py b/cbuildbot/stages/sdk_stages.py
index eb69252..efa4963 100644
--- a/cbuildbot/stages/sdk_stages.py
+++ b/cbuildbot/stages/sdk_stages.py
@@ -386,5 +386,9 @@
             'version': self._version
         },
     }
-    upload_prebuilts.RevGitFile(
-        sdk_conf, sdk_settings, dryrun=self._run.options.debug)
+    if self._run.options.publish:
+      upload_prebuilts.RevGitFile(
+          sdk_conf, sdk_settings, dryrun=self._run.options.debug)
+    else:
+      logging.info(
+          'Not updating sdk_version.conf because publishing was disabled.')
diff --git a/cli/cros/cros_tryjob.py b/cli/cros/cros_tryjob.py
index 799d5dd..b305e47 100644
--- a/cli/cros/cros_tryjob.py
+++ b/cli/cros/cros_tryjob.py
@@ -595,6 +595,12 @@
     how_group.add_argument(
         '--debug-cidb', dest='passthrough', action='append_option',
         help='Force Debug CIDB to be used.')
+    how_group.add_argument(
+        '--no-publish-prebuilt-confs',
+        dest='passthrough',
+        action='append_option',
+        help='Force the tryjob to not publish commits to prebuilt.conf or '
+             'sdk_version.conf, even if run in production.')
 
     # Overrides for the build configs testing behaviors.
     test_group = parser.add_argument_group(
diff --git a/scripts/cbuildbot.py b/scripts/cbuildbot.py
index 2a8e37c..e1e7b11 100644
--- a/scripts/cbuildbot.py
+++ b/scripts/cbuildbot.py
@@ -475,6 +475,12 @@
                           dest='cbb_snapshot_revision', default=None,
                           help='Snapshot manifest revision to sync to '
                                'for building.')
+  group.add_remote_option(
+      '--no-publish-prebuilt-confs',
+      dest='publish',
+      action='store_false',
+      default=True,
+      help="Don't publish git commits to prebuilt.conf or sdk_version.conf")
 
   parser.add_argument_group(group)