[CI] Add ci-extra flags for scheduled builds. (#23033)

Allows the possibility of the following workflows to be triggered by
ci-extra:

* linux_arm64_clang
* linux_x64_clang_debug
* linux_x64_clang_tsan
* linux_x64_clang_byollvm
* linux_x64_gcc

ci-extra: linux_arm64_clang, linux_x64_clang_debug,
linux_x64_clang_tsan, linux_x64_clang_byollvm, linux_x64_gcc
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 98c7c05..353d135 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -235,6 +235,24 @@
     uses: ./.github/workflows/ci_linux_x64_clang.yml
     secrets: inherit
 
+  linux_x64_gcc:
+    needs: setup
+    if: contains(fromJson(needs.setup.outputs.enabled-jobs), 'linux_x64_gcc')
+    uses: ./.github/workflows/ci_linux_x64_gcc.yml
+    secrets: inherit
+
+  linux_arm64_clang:
+    needs: setup
+    if: contains(fromJson(needs.setup.outputs.enabled-jobs), 'linux_arm64_clang')
+    uses: ./.github/workflows/ci_linux_arm64_clang.yml
+    secrets: inherit
+
+  linux_x64_clang_debug:
+    needs: setup
+    if: contains(fromJson(needs.setup.outputs.enabled-jobs), 'linux_x64_clang_debug')
+    uses: ./.github/workflows/ci_linux_x64_clang_debug.yml
+    secrets: inherit
+
   linux_x64_clang_asan:
     needs: setup
     if: contains(fromJson(needs.setup.outputs.enabled-jobs), 'linux_x64_clang_asan')
@@ -247,6 +265,18 @@
     uses: ./.github/workflows/ci_linux_x64_clang_ubsan.yml
     secrets: inherit
 
+  linux_x64_clang_tsan:
+    needs: setup
+    if: contains(fromJson(needs.setup.outputs.enabled-jobs), 'linux_x64_clang_tsan')
+    uses: ./.github/workflows/ci_linux_x64_clang_tsan.yml
+    secrets: inherit
+
+  linux_x64_clang_byollvm:
+    needs: setup
+    if: contains(fromJson(needs.setup.outputs.enabled-jobs), 'linux_x64_clang_byollvm')
+    uses: ./.github/workflows/ci_linux_x64_clang_byollvm.yml
+    secrets: inherit
+
   macos_arm64_clang:
     needs: setup
     if: contains(fromJson(needs.setup.outputs.enabled-jobs), 'macos_arm64_clang')
@@ -281,8 +311,13 @@
       # Full project builds.
       - linux_x64_bazel
       - linux_x64_clang
+      - linux_x64_gcc
+      - linux_arm64_clang
+      - linux_x64_clang_debug
       - linux_x64_clang_asan
       - linux_x64_clang_ubsan
+      - linux_x64_clang_tsan
+      - linux_x64_clang_byollvm
       - macos_arm64_clang
       - macos_x64_clang
       - windows_x64_msvc
diff --git a/.github/workflows/ci_linux_arm64_clang.yml b/.github/workflows/ci_linux_arm64_clang.yml
index bdd5041..0972afe 100644
--- a/.github/workflows/ci_linux_arm64_clang.yml
+++ b/.github/workflows/ci_linux_arm64_clang.yml
@@ -7,21 +7,12 @@
 name: CI - Linux arm64 clang
 
 on:
-  pull_request:
-    paths:
-      - ".github/workflows/ci_linux_arm64_clang.yml"
   schedule:
     # Weekday mornings at 09:15 UTC = 01:15 PST (UTC - 8).
     - cron: "15 9 * * 1-5"
   workflow_dispatch:
+  workflow_call:
 
-concurrency:
-  # A PR number if a pull request and otherwise the commit hash. This cancels
-  # queued and in-progress runs for the same PR (presubmit) or commit
-  # (postsubmit). The workflow name is prepended to avoid conflicts between
-  # different workflows.
-  group: ${{ github.workflow }}-${{ github.event.number || github.sha }}
-  cancel-in-progress: true
 
 jobs:
   linux_arm64_clang:
diff --git a/.github/workflows/ci_linux_x64_clang_byollvm.yml b/.github/workflows/ci_linux_x64_clang_byollvm.yml
index 9ef8c0e..a322e9c 100644
--- a/.github/workflows/ci_linux_x64_clang_byollvm.yml
+++ b/.github/workflows/ci_linux_x64_clang_byollvm.yml
@@ -7,21 +7,11 @@
 name: CI - Linux x64 clang BYO LLVM
 
 on:
-  pull_request:
-    paths:
-      - ".github/workflows/ci_linux_x64_clang_byollvm.yml"
   schedule:
     # Weekday mornings at 09:15 UTC = 01:15 PST (UTC - 8).
     - cron: "15 9 * * 1-5"
   workflow_dispatch:
-
-concurrency:
-  # A PR number if a pull request and otherwise the commit hash. This cancels
-  # queued and in-progress runs for the same PR (presubmit) or commit
-  # (postsubmit). The workflow name is prepended to avoid conflicts between
-  # different workflows.
-  group: ${{ github.workflow }}-${{ github.event.number || github.sha }}
-  cancel-in-progress: true
+  workflow_call:
 
 jobs:
   linux_x64_clang_byollvm:
diff --git a/.github/workflows/ci_linux_x64_clang_debug.yml b/.github/workflows/ci_linux_x64_clang_debug.yml
index f292f46..3358214 100644
--- a/.github/workflows/ci_linux_x64_clang_debug.yml
+++ b/.github/workflows/ci_linux_x64_clang_debug.yml
@@ -7,21 +7,11 @@
 name: CI - Linux x64 clang debug
 
 on:
-  pull_request:
-    paths:
-      - ".github/workflows/ci_linux_x64_clang_debug.yml"
   schedule:
     # Weekday mornings at 09:15 UTC = 01:15 PST (UTC - 8).
     - cron: "15 9 * * 1-5"
   workflow_dispatch:
-
-concurrency:
-  # A PR number if a pull request and otherwise the commit hash. This cancels
-  # queued and in-progress runs for the same PR (presubmit) or commit
-  # (postsubmit). The workflow name is prepended to avoid conflicts between
-  # different workflows.
-  group: ${{ github.workflow }}-${{ github.event.number || github.sha }}
-  cancel-in-progress: true
+  workflow_call:
 
 jobs:
   # This may run out of memory / disk space on standard GitHub-hosted runners,
diff --git a/.github/workflows/ci_linux_x64_clang_tsan.yml b/.github/workflows/ci_linux_x64_clang_tsan.yml
index 6e79e15..a1dbe97 100644
--- a/.github/workflows/ci_linux_x64_clang_tsan.yml
+++ b/.github/workflows/ci_linux_x64_clang_tsan.yml
@@ -7,21 +7,11 @@
 name: CI - Linux x64 clang TSan
 
 on:
-  pull_request:
-    paths:
-      - ".github/workflows/ci_linux_x64_clang_tsan.yml"
   schedule:
     # Weekday mornings at 09:15 UTC = 01:15 PST (UTC - 8).
     - cron: "15 9 * * 1-5"
   workflow_dispatch:
-
-concurrency:
-  # A PR number if a pull request and otherwise the commit hash. This cancels
-  # queued and in-progress runs for the same PR (presubmit) or commit
-  # (postsubmit). The workflow name is prepended to avoid conflicts between
-  # different workflows.
-  group: ${{ github.workflow }}-${{ github.event.number || github.sha }}
-  cancel-in-progress: true
+  workflow_call:
 
 jobs:
   linux_x64_clang_tsan:
diff --git a/.github/workflows/ci_linux_x64_gcc.yml b/.github/workflows/ci_linux_x64_gcc.yml
index bd57dd1..d5600d5 100644
--- a/.github/workflows/ci_linux_x64_gcc.yml
+++ b/.github/workflows/ci_linux_x64_gcc.yml
@@ -7,21 +7,11 @@
 name: CI - Linux x64 gcc
 
 on:
-  pull_request:
-    paths:
-      - ".github/workflows/ci_linux_x64_gcc.yml"
   schedule:
     # Weekday mornings at 09:15 UTC = 01:15 PST (UTC - 8).
     - cron: "15 9 * * 1-5"
   workflow_dispatch:
-
-concurrency:
-  # A PR number if a pull request and otherwise the commit hash. This cancels
-  # queued and in-progress runs for the same PR (presubmit) or commit
-  # (postsubmit). The workflow name is prepended to avoid conflicts between
-  # different workflows.
-  group: ${{ github.workflow }}-${{ github.event.number || github.sha }}
-  cancel-in-progress: true
+  workflow_call:
 
 jobs:
   linux_x64_gcc:
diff --git a/build_tools/github_actions/configure_ci.py b/build_tools/github_actions/configure_ci.py
index 611e4c9..4034b2c 100755
--- a/build_tools/github_actions/configure_ci.py
+++ b/build_tools/github_actions/configure_ci.py
@@ -129,6 +129,11 @@
     [
         "macos_arm64_clang",
         "macos_x64_clang",
+        "linux_arm64_clang",
+        "linux_x64_clang_byollvm",
+        "linux_x64_clang_debug",
+        "linux_x64_clang_tsan",
+        "linux_x64_gcc",
     ]
 )
 
@@ -136,11 +141,55 @@
 # Each tuple consists of the CI job name and a list of file paths to match.
 # The file paths should be specified using Unix shell-style wildcards. Sample:
 #   ("test_nvidia_a100", ["compiler/plugins/target/CUDA/*"]),
-# Note: these jobs should also be included in DEFAULT_POSTSUBMIT_ONLY_JOBS.
 PRESUBMIT_TOUCH_ONLY_JOBS = [
     (
+        "linux_arm64_clang",
+        [".github/workflows/ci_linux_arm64_clang.yml"],
+    ),
+    (
+        "linux_x64_bazel",
+        [".github/workflows/ci_linux_x64_bazel.yml"],
+    ),
+    (
+        "linux_x64_clang_asan",
+        [".github/workflows/ci_linux_x64_clang_asan.yml"],
+    ),
+    (
+        "linux_x64_clang_byollvm",
+        [".github/workflows/ci_linux_x64_clang_byollvm.yml"],
+    ),
+    (
+        "linux_x64_clang_debug",
+        [".github/workflows/ci_linux_x64_clang_debug.yml"],
+    ),
+    (
+        "linux_x64_clang_tsan",
+        [".github/workflows/ci_linux_x64_clang_tsan.yml"],
+    ),
+    (
+        "linux_x64_clang",
+        [".github/workflows/ci_linux_x64_clang.yml"],
+    ),
+    (
+        "linux_x64_gcc",
+        [".github/workflows/ci_linux_x64_gcc.yml"],
+    ),
+    (
+        "macos_arm64_clang",
+        [".github/workflows/ci_macos_arm64_clang.yml"],
+    ),
+    (
+        "macos_x64_clang",
+        [".github/workflows/ci_macos_x64_clang.yml"],
+    ),
+    (
         "windows_x64_msvc",
-        ["*win32*", "*windows*", "*msvc*"],
+        [
+            "*win32*",
+            "*windows*",
+            "*msvc*",
+            ".github/worklflows/ci_windows_x64_msvc.yml",
+        ],
     ),
 ]
 
diff --git a/build_tools/github_actions/configure_ci_test.py b/build_tools/github_actions/configure_ci_test.py
index 641d930..b23caa1 100644
--- a/build_tools/github_actions/configure_ci_test.py
+++ b/build_tools/github_actions/configure_ci_test.py
@@ -64,6 +64,21 @@
         )
         self.assertCountEqual(jobs, all_jobs)
 
+    def test_get_enabled_jobs_modified_ci(self):
+        trailers = {}
+        all_jobs = {"job1", "job2", "job3"}
+        is_pr = True
+        is_llvm_integrate_pr = False
+        modified_paths = [".github/workflows/ci_linux_arm64_clang.yml", "runtime/file"]
+        jobs = configure_ci.get_enabled_jobs(
+            trailers,
+            all_jobs,
+            modified_paths=modified_paths,
+            is_pr=is_pr,
+            is_llvm_integrate_pr=is_llvm_integrate_pr,
+        )
+        self.assertCountEqual(jobs, all_jobs | {"linux_arm64_clang"})
+
     def test_get_enabled_jobs_postsubmit(self):
         trailers = {}
         default_jobs = {"job1", "job2", "job3"}
diff --git a/docs/website/docs/developers/general/contributing.md b/docs/website/docs/developers/general/contributing.md
index 86b4bc9..74b8204 100644
--- a/docs/website/docs/developers/general/contributing.md
+++ b/docs/website/docs/developers/general/contributing.md
@@ -447,6 +447,12 @@
     ci-exactly: linux_x64_bazel
     ```
 
+* Opt in to the Linux arm64 build:
+
+    ``` text
+    ci-extra: linux_arm64_clang
+    ```
+
 * Opt in to the Windows compiler build and test workflow:
 
     ``` text
@@ -459,6 +465,12 @@
     ci-extra: macos_arm64_clang, macos_x64_clang
     ```
 
+* Other opt in builds:
+
+    ``` text
+    ci-extra: linux_x64_clang_byollvm, linux_x64_clang_debug, linux_x64_clang_tsan
+    ```
+
 For example, this PR opted in to running the `build_test_all_windows` job
 (which was renamed to `windows_x64_msvc`):