[PR #6582] Replace test workflow with sharded parallel CI execution #12837

Closed
opened 2026-04-11 03:52:05 -05:00 by GiteaMirror · 0 comments
Owner

Original Pull Request: https://github.com/bitwarden/android/pull/6582

State: closed
Merged: Yes


🎟️ Tracking

No Jira ticket — CI infrastructure improvement.

📔 Objective

Replace the existing sequential test.yml workflow with a sharded version that runs tests across 7 parallel matrix jobs + 1 coverage notification job, targeting ~12-14 minute wall-clock time versus the current ~45-50 minute sequential run.

New Fastlane lanes: checkLint, testAppShard, testLibraries, generateCoverageReport

Job structure:

A single test job uses a matrix strategy with 7 entries:

Matrix group Fastlane lane What it runs
app-data testAppShard :app data tests
app-ui-auth-tools testAppShard :app UI auth, tools, autofill, credentials, and root-level tests
app-ui-platform testAppShard :app UI platform tests
app-ui-vault testAppShard :app UI vault tests
authenticator testLibraries :authenticator tests
lib-core-network-bridge testLibraries :core :network :cxf :authenticatorbridge :testharness tests
lib-data-ui testLibraries :data :ui tests

Additional jobs:

  • static-analysis — detekt + lint
  • coverage-notify — Sends send-notifications to Codecov after all test jobs complete

The old test.yml is replaced in-place (no parallel workflow needed).

⚠️ Codecov behavior with per-shard uploads

Each shard uploads its own coverage report to Codecov with a unique flag (e.g., app-data, lib-core-network-bridge). Codecov processes these uploads asynchronously, so the PR comment from the Codecov bot will update incrementally as each shard's report is processed. During this intermediate state, you may see:

  • A warning about "a different number of reports uploaded between BASE and HEAD"
  • Artificially low project coverage (e.g., 27% instead of ~86%)

Intermediate Codecov comment showing partial coverage
Example: Codecov PR comment after only 3 of 7 shard uploads have been processed.

This is expected. Once all 7 shard uploads are processed and the coverage-notify job sends the send-notifications signal, Codecov merges all reports and the PR comment updates to reflect the full project coverage.

**Original Pull Request:** https://github.com/bitwarden/android/pull/6582 **State:** closed **Merged:** Yes --- ## 🎟️ Tracking No Jira ticket — CI infrastructure improvement. ## 📔 Objective Replace the existing sequential `test.yml` workflow with a sharded version that runs tests across 7 parallel matrix jobs + 1 coverage notification job, targeting ~12-14 minute wall-clock time versus the current ~45-50 minute sequential run. **New Fastlane lanes:** `checkLint`, `testAppShard`, `testLibraries`, `generateCoverageReport` **Job structure:** A single `test` job uses a matrix strategy with 7 entries: | Matrix group | Fastlane lane | What it runs | |-----|------|-------------| | `app-data` | `testAppShard` | `:app` data tests | | `app-ui-auth-tools` | `testAppShard` | `:app` UI auth, tools, autofill, credentials, and root-level tests | | `app-ui-platform` | `testAppShard` | `:app` UI platform tests | | `app-ui-vault` | `testAppShard` | `:app` UI vault tests | | `authenticator` | `testLibraries` | `:authenticator` tests | | `lib-core-network-bridge` | `testLibraries` | `:core :network :cxf :authenticatorbridge :testharness` tests | | `lib-data-ui` | `testLibraries` | `:data :ui` tests | Additional jobs: - `static-analysis` — detekt + lint - `coverage-notify` — Sends `send-notifications` to Codecov after all test jobs complete The old `test.yml` is replaced in-place (no parallel workflow needed). ## ⚠️ Codecov behavior with per-shard uploads Each shard uploads its own coverage report to Codecov with a unique flag (e.g., `app-data`, `lib-core-network-bridge`). Codecov processes these uploads asynchronously, so **the PR comment from the Codecov bot will update incrementally** as each shard's report is processed. During this intermediate state, you may see: - A warning about "a different number of reports uploaded between BASE and HEAD" - Artificially low project coverage (e.g., 27% instead of ~86%) ![Intermediate Codecov comment showing partial coverage]( https://github.com/user-attachments/assets/e889963f-ea47-4abe-a02c-5dfadcf7da36) *Example: Codecov PR comment after only 3 of 7 shard uploads have been processed.* This is expected. Once all 7 shard uploads are processed and the `coverage-notify` job sends the `send-notifications` signal, Codecov merges all reports and the PR comment updates to reflect the full project coverage.
GiteaMirror added the pull-request label 2026-04-11 03:52:05 -05:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: github-starred/android#12837