perf(ci): fan out macos from preflight scope#52467
Conversation
Greptile SummaryThis PR improves CI parallelism by removing the
Confidence Score: 5/5
Reviews (1): Last reviewed commit: "Merge branch 'main' into fix-ci-prefligh..." | Re-trigger Greptile |
🔒 Aisle Security AnalysisWe found 2 potential security issue(s) in this PR:
1. 🟡 GitHub Actions workflow uses mutable tags instead of pinned commit SHAs
DescriptionThe CI workflow references multiple third-party GitHub Actions by mutable version tags (e.g., Why this is a security issue:
Vulnerable example (one of several occurrences): - name: Checkout
uses: actions/checkout@v6
- name: Setup Python
uses: actions/setup-python@v6RecommendationPin all third-party actions to an immutable commit SHA, and (optionally) keep a comment with the intended tag for readability. Example: - name: Checkout
uses: actions/checkout@<FULL_COMMIT_SHA> # v6
- name: Setup Python
uses: actions/setup-python@<FULL_COMMIT_SHA> # v6
- name: Cache
uses: actions/cache@<FULL_COMMIT_SHA> # v5Additionally:
2. 🟡 Unverified download and execution of Android SDK commandline-tools in CI (supply-chain RCE risk)
DescriptionThe Android CI job downloads and installs Android SDK This creates a supply-chain/RCE risk:
If the download were ever tampered with (upstream compromise, dependency swap, TLS termination compromise, etc.), the attacker would gain code execution on the CI runner in the context of this workflow. Vulnerable snippet: curl -fsSL "$URL" -o "/tmp/${ARCHIVE}"
unzip -q "/tmp/${ARCHIVE}" -d "$ANDROID_SDK_ROOT/cmdline-tools"
...
echo "$ANDROID_SDK_ROOT/cmdline-tools/latest/bin" >> "$GITHUB_PATH"
...
sdkmanager --sdk_root="${ANDROID_SDK_ROOT}" --install ...RecommendationAdd integrity verification for the downloaded archive, or use a dedicated setup action that performs verification. Option A: Pin and verify a SHA-256 hash in the workflow (update hash when bumping CMDLINE_TOOLS_VERSION="12266719"
ARCHIVE="commandlinetools-linux-${CMDLINE_TOOLS_VERSION}_latest.zip"
URL="https://dl.google.com/android/repository/${ARCHIVE}"
EXPECTED_SHA256="<PINNED_SHA256_FOR_THIS_ARCHIVE>"
curl --fail --location --silent --show-error "$URL" -o "/tmp/${ARCHIVE}"
echo "${EXPECTED_SHA256} /tmp/${ARCHIVE}" | sha256sum -c -
unzip -q "/tmp/${ARCHIVE}" -d "$ANDROID_SDK_ROOT/cmdline-tools"Option B: Prefer a maintained GitHub Action for Android SDK setup (reduces custom install logic and can centralize best practices), and still pin action versions. Analyzed PR: #52467 at commit Last updated on: 2026-03-22T20:43:28Z |
* perf(ci): fan out macos from preflight scope * refactor(ci): reorder preflight and native lanes
* perf(ci): fan out macos from preflight scope * refactor(ci): reorder preflight and native lanes
Summary
checkdependency from the macOS CI lanecheckWhy
changed-scopefinished at 20:01:36Z butmacosstill did not become eligible until 20:02:15Z because it was gated oncheckTesting