skip bringup true targets (#2303)

diff --git a/app_dart/lib/src/service/luci_build_service.dart b/app_dart/lib/src/service/luci_build_service.dart
index d018c32..4b59af7 100644
--- a/app_dart/lib/src/service/luci_build_service.dart
+++ b/app_dart/lib/src/service/luci_build_service.dart
@@ -579,13 +579,13 @@
     );
   }
 
-  /// Creates postsubmit check runs for supported repositories.
+  /// Creates postsubmit check runs for prod targets in supported repositories.
   Future<void> createPostsubmitCheckRun(
     Commit commit,
     Target target,
     Map<String, dynamic> rawUserData,
   ) async {
-    if (!config.githubPostsubmitSupportedRepo(commit.slug)) {
+    if (!config.githubPostsubmitSupportedRepo(commit.slug) || target.value.bringup) {
       return;
     }
     final github.CheckRun checkRun = await githubChecksUtil.createCheckRun(
diff --git a/app_dart/test/service/luci_build_service_test.dart b/app_dart/test/service/luci_build_service_test.dart
index 666f844..f3a723a 100644
--- a/app_dart/test/service/luci_build_service_test.dart
+++ b/app_dart/test/service/luci_build_service_test.dart
@@ -533,6 +533,49 @@
       });
     });
 
+    test('do not create postsubmit checkrun for bringup: true target', () async {
+      when(mockGithubChecksUtil.createCheckRun(any, any, any, any))
+          .thenAnswer((_) async => generateCheckRun(1, name: 'Linux 1'));
+      final Commit commit = generateCommit(0, repo: 'packages');
+      when(mockBuildBucketClient.listBuilders(any)).thenAnswer((_) async {
+        return const ListBuildersResponse(
+          builders: [
+            BuilderItem(id: BuilderId(bucket: 'prod', project: 'flutter', builder: 'Linux 1')),
+          ],
+        );
+      });
+      final Tuple<Target, Task, int> toBeScheduled = Tuple<Target, Task, int>(
+        generateTarget(
+          1,
+          properties: <String, String>{
+            'os': 'debian-10.12',
+          },
+          bringup: true,
+          slug: RepositorySlug('flutter', 'packages'),
+        ),
+        generateTask(1),
+        LuciBuildService.kDefaultPriority,
+      );
+      await service.schedulePostsubmitBuilds(
+        commit: commit,
+        toBeScheduled: <Tuple<Target, Task, int>>[
+          toBeScheduled,
+        ],
+      );
+      // Only one batch request should be published
+      expect(pubsub.messages.length, 1);
+      final BatchRequest request = pubsub.messages.first as BatchRequest;
+      expect(request.requests?.single.scheduleBuild, isNotNull);
+      final ScheduleBuildRequest scheduleBuild = request.requests!.single.scheduleBuild!;
+      expect(scheduleBuild.builderId.bucket, 'staging');
+      expect(scheduleBuild.builderId.builder, 'Linux 1');
+      expect(scheduleBuild.notify?.pubsubTopic, 'projects/flutter-dashboard/topics/luci-builds-prod');
+      final Map<String, dynamic> userData =
+          jsonDecode(String.fromCharCodes(base64Decode(scheduleBuild.notify!.userData!))) as Map<String, dynamic>;
+      // No check run related data.
+      expect(userData, <String, dynamic>{'commit_key': 'flutter/flutter/master/1', 'task_key': '1'});
+    });
+
     test('Skip non-existing builder', () async {
       final Commit commit = generateCommit(0);
       when(mockBuildBucketClient.listBuilders(any)).thenAnswer((_) async {
diff --git a/app_dart/test/src/utilities/entity_generators.dart b/app_dart/test/src/utilities/entity_generators.dart
index 07b74fd..705fd85 100644
--- a/app_dart/test/src/utilities/entity_generators.dart
+++ b/app_dart/test/src/utilities/entity_generators.dart
@@ -100,6 +100,7 @@
   Map<String, String>? properties,
   Map<String, String>? dimensions,
   List<String>? runIf,
+  bool? bringup,
   github.RepositorySlug? slug,
   pb.SchedulerSystem? schedulerSystem,
 }) {
@@ -122,6 +123,7 @@
       properties: properties,
       dimensions: dimensions,
       runIf: runIf ?? <String>[],
+      bringup: bringup ?? false,
       scheduler: schedulerSystem ?? pb.SchedulerSystem.cocoon,
     ),
   );