[libc++][ci] Re-split the CI pipeline to try and reduce load on more builders
authorLouis Dionne <ldionne.2@gmail.com>
Tue, 20 Apr 2021 12:35:39 +0000 (08:35 -0400)
committerLouis Dionne <ldionne.2@gmail.com>
Tue, 20 Apr 2021 12:37:52 +0000 (08:37 -0400)
libcxx/utils/ci/buildkite-pipeline.yml

index 5a74a01..6dfb1bf 100644 (file)
 # into scripts. This is critical to being able to reproduce CI issues outside
 # of the CI environment, which is important for debugging.
 #
+# It is also worth noting that this script is split into several sections, the
+# goal being to reduce the load on testers when a commit is known to fail.
+#
 
 steps:
+  #
+  # Light pre-commit tests for things like formatting or when people forget
+  # to update generated files.
+  #
   - label: "Format"
     command: "libcxx/utils/ci/run-buildbot check-format"
     artifact_paths:
@@ -39,11 +46,11 @@ steps:
         - exit_status: -1  # Agent was lost
           limit: 2
 
-  # All jobs defined before this `wait` will run whenever a CI job is started.
-  # Jobs defined after the `wait` will run only if all the jobs above
-  # succeeded. The build failures before this `wait` can be fixed by running
-  # the proper scripts or clang-format. We use this to reduce the load on the
-  # testers and avoid running builds that we know fail anyway.
+  #
+  # General testing with the default configuration, under all the supported
+  # Standard modes, with Clang and GCC and on Apple. This catches most issues
+  # upfront.
+  #
   - wait
 
   - label: "C++03"
@@ -118,8 +125,20 @@ steps:
         - exit_status: -1  # Agent was lost
           limit: 2
 
-  - label: "-fno-exceptions"
-    command: "libcxx/utils/ci/run-buildbot generic-noexceptions"
+  - label: "MacOS C++20"
+    command: "libcxx/utils/ci/run-buildbot generic-cxx20"
+    artifact_paths:
+      - "**/test-results.xml"
+      - "**/*.abilist"
+    agents:
+      queue: "libcxx-builders-macos"
+    retry:
+      automatic:
+        - exit_status: -1  # Agent was lost
+          limit: 2
+
+  - label: "GCC/C++20"
+    command: "libcxx/utils/ci/run-buildbot generic-gcc"
     artifact_paths:
       - "**/test-results.xml"
     agents:
@@ -129,8 +148,13 @@ steps:
         - exit_status: -1  # Agent was lost
           limit: 2
 
-  - label: "Static libraries"
-    command: "libcxx/utils/ci/run-buildbot generic-static"
+  #
+  # All other supported configurations of libc++.
+  #
+  - wait
+
+  - label: "-fno-exceptions"
+    command: "libcxx/utils/ci/run-buildbot generic-noexceptions"
     artifact_paths:
       - "**/test-results.xml"
     agents:
@@ -140,8 +164,8 @@ steps:
         - exit_status: -1  # Agent was lost
           limit: 2
 
-  - label: "GCC/C++20"
-    command: "libcxx/utils/ci/run-buildbot generic-gcc"
+  - label: "Static libraries"
+    command: "libcxx/utils/ci/run-buildbot generic-static"
     artifact_paths:
       - "**/test-results.xml"
     agents:
@@ -250,18 +274,6 @@ steps:
         - exit_status: -1  # Agent was lost
           limit: 2
 
-  - label: "MacOS C++20"
-    command: "libcxx/utils/ci/run-buildbot generic-cxx20"
-    artifact_paths:
-      - "**/test-results.xml"
-      - "**/*.abilist"
-    agents:
-      queue: "libcxx-builders-macos"
-    retry:
-      automatic:
-        - exit_status: -1  # Agent was lost
-          limit: 2
-
   - label: "Benchmarks"
     command: "libcxx/utils/ci/run-buildbot benchmarks"
     artifact_paths:
@@ -330,12 +342,6 @@ steps:
         - exit_status: -1  # Agent was lost
           limit: 2
 
-  # All jobs defined before this `wait` will run whenever a CI job is started.
-  # Jobs defined after the `wait` will run only if all the jobs above succeeded.
-  # We use this to reduce the load on testers that have more constrained resources
-  # and avoid running builds that we know fail anyway.
-  - wait
-
   # Build with the configuration we use to generate libc++.dylib on Apple platforms
   - label: "Apple system"
     command: "libcxx/utils/ci/run-buildbot x86_64-apple-system"