Move latest open Android queues from 29 to 36 - #127250

Open
vcsjones wants to merge 3 commits into
dotnet:mainfrom
vcsjones:android-36-tests
Open

Move latest open Android queues from 29 to 36#127250
vcsjones wants to merge 3 commits into
dotnet:mainfrom
vcsjones:android-36-tests

Conversation

@vcsjones

Copy link
Copy Markdown
Member

This bumps our open Android queue from 29 to 36. The motivation for this is to support new cryptography APIs that appeared in API level 33, and we will want test coverage for those APIs.

@vcsjones

Copy link
Copy Markdown
MemberAuthor

/azp run runtime-extra-platforms

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines successfully started running 1 pipeline(s).

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Updates Helix queue configuration to run “latest” Android testing on a newer API level, aligning CI coverage with newer Android platform cryptography APIs.

Changes:

  • Bump Ubuntu-based open Android Helix queues from API 29 to API 36 for libraries pipelines.
  • Update the Android “latest” platform alias in helix-platforms.yml to point at the API 36 queue.
  • Update CoreCLR template to use the API 36 open queue for public Android x64 runs.
Show a summary per file
FileDescription
eng/pipelines/libraries/helix-queues-setup.ymlSwitches Ubuntu Android Open queue used by libraries jobs to API 36.
eng/pipelines/helix-platforms.ymlUpdates helix_android_ubuntu_latest alias and its comment to API 36.
eng/pipelines/coreclr/templates/helix-queues-setup.ymlUpdates public Android x64 Helix queue to API 36 Open.

Copilot's findings

  • Files reviewed: 3/3 changed files
  • Comments generated: 1

Comment threadeng/pipelines/coreclr/templates/helix-queues-setup.yml
@dotnet-policy-service

Copy link
Copy Markdown
Contributor

Tagging subscribers to 'arch-android': @vitek-karas, @simonrozsival, @steveisok, @akoeplinger
See info in area-owners.md if you want to be subscribed.

@simonrozsival

Copy link
Copy Markdown
Member

/azp run runtime-extra-platforms

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines successfully started running 1 pipeline(s).

@@ -90,9 +90,9 @@ jobs:
# Use the Ubuntu-based Android queue for x86/x64/bionic_x64 on all projects,
# and also for arm/arm64/bionic_arm/bionic_arm64 on non-public projects (no internal Windows Android queue).
- ${{ if in(parameters.platform, 'android_x86', 'android_x64', 'linux_bionic_x64') }}:

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It looks like the queue Ubuntu.2204.Amd64.Android.36.Open does not have emulators with android-x86 support so I suggest keeping x86 testing on the original queue.

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@simonrozsival I think I addressed this?

CopilotAI review requested due to automatic review settings May 7, 2026 16:56
@vcsjones

Copy link
Copy Markdown
MemberAuthor

/azp run runtime-extra-platforms

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines successfully started running 1 pipeline(s).

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot's findings

  • Files reviewed: 3/3 changed files
  • Comments generated: 0 new

@akoeplinger

Copy link
Copy Markdown
Member

I think this will put some strain on Helix. The .29 queue can service both x86/x64 so we only need to spin up half of the VMs to service the same load. If you only want to temporarily test the new APIs I'd suggest opening a WIP PR which targets the new queue.

There is some idea of running the Android emulator in Docker so we can move away from the "single-queue-per-API-level" design but it's not there yet.

@vcsjones

Copy link
Copy Markdown
MemberAuthor

@akoeplinger what about adding it as an additional outerloop queue that doesn't run on PRs but only scheduled runs? I am not thrilled with checking in a bunch of cryptographic code that won't get validated periodically.

@akoeplinger

akoeplinger commented May 21, 2026

Copy link
Copy Markdown
Member

yeah. we could also move Android x86 instead since afaik it won't be supported with coreclr anyway, correct @simonrozsival?

@vcsjones

Copy link
Copy Markdown
MemberAuthor

we could also move Android x86 instead

According to @simonrozsival

Ubuntu.2204.Amd64.Android.36.Open does not have emulators with android-x86

@simonrozsival

Copy link
Copy Markdown
Member

@akoeplinger@vcsjones yes, coreclr will run only on x64, arm64, and armeabi-v7a

@simonrozsival

Copy link
Copy Markdown
Member

@vcsjones I need to double check tomorrow, but I think the devices on the Windows.11.Amd64.Android.Open queue have (mostly) API 36.

@vcsjones

Copy link
Copy Markdown
MemberAuthor

I could also go as low as API Level 33, if 33, 34, or 35 has better availability.

@akoeplinger

akoeplinger commented May 21, 2026

Copy link
Copy Markdown
Member

I think the last API level where Google published x86 images was 30.

it's not really about availability, those queues are backed by Azure scalesets so they'll spin up VMs as needed but it means if we send 200 workitems to two queues we'll need to spin up VMs on each (i.e. roughly double) versus handling the load on one queue a bit slower.

I think if x86 Android is not going to be supported in basically a few months from now I'd just move that to scheduled runs and take what you have here.

@vitek-karas

Copy link
Copy Markdown
Member

Windows.11.Amd64.Android.Open is device queue - it has physical host machines with physical devices - so it does not scale at will. But it should have enough capacity (it has ~200 devices in it).
That said, it won't run x86 (at least I don't think it will) since it has almost exclusively Pixel phones (so arm64).

Currently the devices we have in that queue (and their API level)

ModelAPI LevelsCount
Pixel 3a29, 30, 3245
Pixel 4a30, 3366
Pixel 632, 369
Pixel 6a369
Pixel 9a36122
SM S931U1362

And yes, I know it's a mess, I'm working on cleaning it up.

@github-actions

github-actionsBot commented Jul 19, 2026

Copy link
Copy Markdown
Contributor

Workflow state for the Holistic Review Orchestrator.

{
"version": 5,
"last_dispatched_commit": "e2204bd14641a44d987dd6aba37b79b4d49c73e5",
"last_dispatched_base_ref": "main",
"last_dispatched_base_sha": "0f01d22be46fc2daa2cee0c86b467a60d654afc6",
"last_reviewed_commit": "e2204bd14641a44d987dd6aba37b79b4d49c73e5",
"last_reviewed_base_ref": "main",
"last_reviewed_base_sha": "0f01d22be46fc2daa2cee0c86b467a60d654afc6",
"last_recorded_worker_run_id": "29675339961",
"review_attempt_commit": "",
"review_attempt_base_ref": "",
"review_attempt_count": 0,
"max_review_attempts": 5,
"review_history_format": "holistic-review-disclosure-v1",
"review_history": [
{
"commit": "e2204bd14641a44d987dd6aba37b79b4d49c73e5",
"review_id": 4730524141
}
]
}

@github-actionsgithub-actionsBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Holistic Review

Motivation: The PR bumps the public Ubuntu-based Android Helix test queues from API level 29 to API level 36. The goal is to gain CI coverage for cryptography APIs introduced in Android API 33+, which the project intends to support. This is a well-motivated, targeted infrastructure change.

Approach: Three pipeline YAML files are updated. In helix-platforms.yml, the single helix_android_ubuntu_latest variable is split into helix_android_ubuntu_x64_latest (API 36) and helix_android_ubuntu_x86_latest (API 29), with clarifying comments; the oldest (API 24) variable is retained. In libraries/helix-queues-setup.yml, android_x86 is separated out to remain on API 29 while android_x64, linux_bionic_x64, and the non-public arm/arm64/bionic queues move to API 36. In coreclr/templates/helix-queues-setup.yml, the public android_x64 queue moves to API 36 while the internal queue stays on API 29. The x86 exclusion is correct: API 36 emulators do not ship an android-x86 system image, so keeping x86 on API 29 avoids a broken queue.

Summary: This is a small, correct, and low-risk change. I verified that the renamed helix_android_ubuntu_* variables in helix-platforms.yml are documentation/reference-only — they are not consumed via $(...) anywhere in eng/, and no stale reference to the old helix_android_ubuntu_latest name remains at head, so the rename introduces no breakage. The x86/x64 split is applied consistently, and the x86-on-29 rationale is sound. The main residual risk is queue availability (whether Ubuntu.2204.Amd64.Android.36.Open is provisioned in Helix); this is validated by the PR's own CI runs rather than by static review. One intentional asymmetry worth noting: the internal coreclr and libraries Android queues remain on API 29 while public queues move to 36, consistent with the PR scope of "open" queues. No blocking issues found. LGTM.

Detailed Findings

No actionable code-correctness findings. The variable rename in helix-platforms.yml is safe because those variables are not referenced elsewhere in the pipeline tree. Confirm via CI that the API 36 open queue is provisioned before merging.

Note

This review was generated by this repository's Holistic Review agentic workflow to complement the built-in Copilot review.

Generated by Holistic Review · 75 AIC · ⌖ 10.4 AIC · ⊞ 10.6K

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Projects

Status: No status

Development

Successfully merging this pull request may close these issues.

5 participants

@vcsjones@simonrozsival@akoeplinger@vitek-karas
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Move latest open Android queues from 29 to 36 - #127250

Open
vcsjones wants to merge 3 commits into
dotnet:mainfrom
vcsjones:android-36-tests
Open

Move latest open Android queues from 29 to 36#127250
vcsjones wants to merge 3 commits into
dotnet:mainfrom
vcsjones:android-36-tests

Conversation

@vcsjones

Copy link
Copy Markdown
Member

This bumps our open Android queue from 29 to 36. The motivation for this is to support new cryptography APIs that appeared in API level 33, and we will want test coverage for those APIs.

@vcsjones

Copy link
Copy Markdown
MemberAuthor

/azp run runtime-extra-platforms

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines successfully started running 1 pipeline(s).

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Updates Helix queue configuration to run “latest” Android testing on a newer API level, aligning CI coverage with newer Android platform cryptography APIs.

Changes:

  • Bump Ubuntu-based open Android Helix queues from API 29 to API 36 for libraries pipelines.
  • Update the Android “latest” platform alias in helix-platforms.yml to point at the API 36 queue.
  • Update CoreCLR template to use the API 36 open queue for public Android x64 runs.
Show a summary per file
FileDescription
eng/pipelines/libraries/helix-queues-setup.ymlSwitches Ubuntu Android Open queue used by libraries jobs to API 36.
eng/pipelines/helix-platforms.ymlUpdates helix_android_ubuntu_latest alias and its comment to API 36.
eng/pipelines/coreclr/templates/helix-queues-setup.ymlUpdates public Android x64 Helix queue to API 36 Open.

Copilot's findings

  • Files reviewed: 3/3 changed files
  • Comments generated: 1

Comment threadeng/pipelines/coreclr/templates/helix-queues-setup.yml
@dotnet-policy-service

Copy link
Copy Markdown
Contributor

Tagging subscribers to 'arch-android': @vitek-karas, @simonrozsival, @steveisok, @akoeplinger
See info in area-owners.md if you want to be subscribed.

@simonrozsival

Copy link
Copy Markdown
Member

/azp run runtime-extra-platforms

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines successfully started running 1 pipeline(s).

@@ -90,9 +90,9 @@ jobs:
# Use the Ubuntu-based Android queue for x86/x64/bionic_x64 on all projects,
# and also for arm/arm64/bionic_arm/bionic_arm64 on non-public projects (no internal Windows Android queue).
- ${{ if in(parameters.platform, 'android_x86', 'android_x64', 'linux_bionic_x64') }}:

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It looks like the queue Ubuntu.2204.Amd64.Android.36.Open does not have emulators with android-x86 support so I suggest keeping x86 testing on the original queue.

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@simonrozsival I think I addressed this?

CopilotAI review requested due to automatic review settings May 7, 2026 16:56
@vcsjones

Copy link
Copy Markdown
MemberAuthor

/azp run runtime-extra-platforms

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines successfully started running 1 pipeline(s).

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot's findings

  • Files reviewed: 3/3 changed files
  • Comments generated: 0 new

@akoeplinger

Copy link
Copy Markdown
Member

I think this will put some strain on Helix. The .29 queue can service both x86/x64 so we only need to spin up half of the VMs to service the same load. If you only want to temporarily test the new APIs I'd suggest opening a WIP PR which targets the new queue.

There is some idea of running the Android emulator in Docker so we can move away from the "single-queue-per-API-level" design but it's not there yet.

@vcsjones

Copy link
Copy Markdown
MemberAuthor

@akoeplinger what about adding it as an additional outerloop queue that doesn't run on PRs but only scheduled runs? I am not thrilled with checking in a bunch of cryptographic code that won't get validated periodically.

@akoeplinger

akoeplinger commented May 21, 2026

Copy link
Copy Markdown
Member

yeah. we could also move Android x86 instead since afaik it won't be supported with coreclr anyway, correct @simonrozsival?

@vcsjones

Copy link
Copy Markdown
MemberAuthor

we could also move Android x86 instead

According to @simonrozsival

Ubuntu.2204.Amd64.Android.36.Open does not have emulators with android-x86

@simonrozsival

Copy link
Copy Markdown
Member

@akoeplinger@vcsjones yes, coreclr will run only on x64, arm64, and armeabi-v7a

@simonrozsival

Copy link
Copy Markdown
Member

@vcsjones I need to double check tomorrow, but I think the devices on the Windows.11.Amd64.Android.Open queue have (mostly) API 36.

@vcsjones

Copy link
Copy Markdown
MemberAuthor

I could also go as low as API Level 33, if 33, 34, or 35 has better availability.

@akoeplinger

akoeplinger commented May 21, 2026

Copy link
Copy Markdown
Member

I think the last API level where Google published x86 images was 30.

it's not really about availability, those queues are backed by Azure scalesets so they'll spin up VMs as needed but it means if we send 200 workitems to two queues we'll need to spin up VMs on each (i.e. roughly double) versus handling the load on one queue a bit slower.

I think if x86 Android is not going to be supported in basically a few months from now I'd just move that to scheduled runs and take what you have here.

@vitek-karas

Copy link
Copy Markdown
Member

Windows.11.Amd64.Android.Open is device queue - it has physical host machines with physical devices - so it does not scale at will. But it should have enough capacity (it has ~200 devices in it).
That said, it won't run x86 (at least I don't think it will) since it has almost exclusively Pixel phones (so arm64).

Currently the devices we have in that queue (and their API level)

ModelAPI LevelsCount
Pixel 3a29, 30, 3245
Pixel 4a30, 3366
Pixel 632, 369
Pixel 6a369
Pixel 9a36122
SM S931U1362

And yes, I know it's a mess, I'm working on cleaning it up.

@github-actions

github-actionsBot commented Jul 19, 2026

Copy link
Copy Markdown
Contributor

Workflow state for the Holistic Review Orchestrator.

{
"version": 5,
"last_dispatched_commit": "e2204bd14641a44d987dd6aba37b79b4d49c73e5",
"last_dispatched_base_ref": "main",
"last_dispatched_base_sha": "0f01d22be46fc2daa2cee0c86b467a60d654afc6",
"last_reviewed_commit": "e2204bd14641a44d987dd6aba37b79b4d49c73e5",
"last_reviewed_base_ref": "main",
"last_reviewed_base_sha": "0f01d22be46fc2daa2cee0c86b467a60d654afc6",
"last_recorded_worker_run_id": "29675339961",
"review_attempt_commit": "",
"review_attempt_base_ref": "",
"review_attempt_count": 0,
"max_review_attempts": 5,
"review_history_format": "holistic-review-disclosure-v1",
"review_history": [
{
"commit": "e2204bd14641a44d987dd6aba37b79b4d49c73e5",
"review_id": 4730524141
}
]
}

@github-actionsgithub-actionsBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Holistic Review

Motivation: The PR bumps the public Ubuntu-based Android Helix test queues from API level 29 to API level 36. The goal is to gain CI coverage for cryptography APIs introduced in Android API 33+, which the project intends to support. This is a well-motivated, targeted infrastructure change.

Approach: Three pipeline YAML files are updated. In helix-platforms.yml, the single helix_android_ubuntu_latest variable is split into helix_android_ubuntu_x64_latest (API 36) and helix_android_ubuntu_x86_latest (API 29), with clarifying comments; the oldest (API 24) variable is retained. In libraries/helix-queues-setup.yml, android_x86 is separated out to remain on API 29 while android_x64, linux_bionic_x64, and the non-public arm/arm64/bionic queues move to API 36. In coreclr/templates/helix-queues-setup.yml, the public android_x64 queue moves to API 36 while the internal queue stays on API 29. The x86 exclusion is correct: API 36 emulators do not ship an android-x86 system image, so keeping x86 on API 29 avoids a broken queue.

Summary: This is a small, correct, and low-risk change. I verified that the renamed helix_android_ubuntu_* variables in helix-platforms.yml are documentation/reference-only — they are not consumed via $(...) anywhere in eng/, and no stale reference to the old helix_android_ubuntu_latest name remains at head, so the rename introduces no breakage. The x86/x64 split is applied consistently, and the x86-on-29 rationale is sound. The main residual risk is queue availability (whether Ubuntu.2204.Amd64.Android.36.Open is provisioned in Helix); this is validated by the PR's own CI runs rather than by static review. One intentional asymmetry worth noting: the internal coreclr and libraries Android queues remain on API 29 while public queues move to 36, consistent with the PR scope of "open" queues. No blocking issues found. LGTM.

Detailed Findings

No actionable code-correctness findings. The variable rename in helix-platforms.yml is safe because those variables are not referenced elsewhere in the pipeline tree. Confirm via CI that the API 36 open queue is provisioned before merging.

Note

This review was generated by this repository's Holistic Review agentic workflow to complement the built-in Copilot review.

Generated by Holistic Review · 75 AIC · ⌖ 10.4 AIC · ⊞ 10.6K

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Projects

Status: No status

Development

Successfully merging this pull request may close these issues.

5 participants

@vcsjones@simonrozsival@akoeplinger@vitek-karas
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Move latest open Android queues from 29 to 36 - #127250

Open
vcsjones wants to merge 3 commits into
dotnet:mainfrom
vcsjones:android-36-tests
Open

Move latest open Android queues from 29 to 36#127250
vcsjones wants to merge 3 commits into
dotnet:mainfrom
vcsjones:android-36-tests

Conversation

@vcsjones

Copy link
Copy Markdown
Member

This bumps our open Android queue from 29 to 36. The motivation for this is to support new cryptography APIs that appeared in API level 33, and we will want test coverage for those APIs.

@vcsjones

Copy link
Copy Markdown
MemberAuthor

/azp run runtime-extra-platforms

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines successfully started running 1 pipeline(s).

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Updates Helix queue configuration to run “latest” Android testing on a newer API level, aligning CI coverage with newer Android platform cryptography APIs.

Changes:

  • Bump Ubuntu-based open Android Helix queues from API 29 to API 36 for libraries pipelines.
  • Update the Android “latest” platform alias in helix-platforms.yml to point at the API 36 queue.
  • Update CoreCLR template to use the API 36 open queue for public Android x64 runs.
Show a summary per file
FileDescription
eng/pipelines/libraries/helix-queues-setup.ymlSwitches Ubuntu Android Open queue used by libraries jobs to API 36.
eng/pipelines/helix-platforms.ymlUpdates helix_android_ubuntu_latest alias and its comment to API 36.
eng/pipelines/coreclr/templates/helix-queues-setup.ymlUpdates public Android x64 Helix queue to API 36 Open.

Copilot's findings

  • Files reviewed: 3/3 changed files
  • Comments generated: 1

Comment threadeng/pipelines/coreclr/templates/helix-queues-setup.yml
@dotnet-policy-service

Copy link
Copy Markdown
Contributor

Tagging subscribers to 'arch-android': @vitek-karas, @simonrozsival, @steveisok, @akoeplinger
See info in area-owners.md if you want to be subscribed.

@simonrozsival

Copy link
Copy Markdown
Member

/azp run runtime-extra-platforms

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines successfully started running 1 pipeline(s).

@@ -90,9 +90,9 @@ jobs:
# Use the Ubuntu-based Android queue for x86/x64/bionic_x64 on all projects,
# and also for arm/arm64/bionic_arm/bionic_arm64 on non-public projects (no internal Windows Android queue).
- ${{ if in(parameters.platform, 'android_x86', 'android_x64', 'linux_bionic_x64') }}:

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It looks like the queue Ubuntu.2204.Amd64.Android.36.Open does not have emulators with android-x86 support so I suggest keeping x86 testing on the original queue.

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@simonrozsival I think I addressed this?

CopilotAI review requested due to automatic review settings May 7, 2026 16:56
@vcsjones

Copy link
Copy Markdown
MemberAuthor

/azp run runtime-extra-platforms

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines successfully started running 1 pipeline(s).

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot's findings

  • Files reviewed: 3/3 changed files
  • Comments generated: 0 new

@akoeplinger

Copy link
Copy Markdown
Member

I think this will put some strain on Helix. The .29 queue can service both x86/x64 so we only need to spin up half of the VMs to service the same load. If you only want to temporarily test the new APIs I'd suggest opening a WIP PR which targets the new queue.

There is some idea of running the Android emulator in Docker so we can move away from the "single-queue-per-API-level" design but it's not there yet.

@vcsjones

Copy link
Copy Markdown
MemberAuthor

@akoeplinger what about adding it as an additional outerloop queue that doesn't run on PRs but only scheduled runs? I am not thrilled with checking in a bunch of cryptographic code that won't get validated periodically.

@akoeplinger

akoeplinger commented May 21, 2026

Copy link
Copy Markdown
Member

yeah. we could also move Android x86 instead since afaik it won't be supported with coreclr anyway, correct @simonrozsival?

@vcsjones

Copy link
Copy Markdown
MemberAuthor

we could also move Android x86 instead

According to @simonrozsival

Ubuntu.2204.Amd64.Android.36.Open does not have emulators with android-x86

@simonrozsival

Copy link
Copy Markdown
Member

@akoeplinger@vcsjones yes, coreclr will run only on x64, arm64, and armeabi-v7a

@simonrozsival

Copy link
Copy Markdown
Member

@vcsjones I need to double check tomorrow, but I think the devices on the Windows.11.Amd64.Android.Open queue have (mostly) API 36.

@vcsjones

Copy link
Copy Markdown
MemberAuthor

I could also go as low as API Level 33, if 33, 34, or 35 has better availability.

@akoeplinger

akoeplinger commented May 21, 2026

Copy link
Copy Markdown
Member

I think the last API level where Google published x86 images was 30.

it's not really about availability, those queues are backed by Azure scalesets so they'll spin up VMs as needed but it means if we send 200 workitems to two queues we'll need to spin up VMs on each (i.e. roughly double) versus handling the load on one queue a bit slower.

I think if x86 Android is not going to be supported in basically a few months from now I'd just move that to scheduled runs and take what you have here.

@vitek-karas

Copy link
Copy Markdown
Member

Windows.11.Amd64.Android.Open is device queue - it has physical host machines with physical devices - so it does not scale at will. But it should have enough capacity (it has ~200 devices in it).
That said, it won't run x86 (at least I don't think it will) since it has almost exclusively Pixel phones (so arm64).

Currently the devices we have in that queue (and their API level)

ModelAPI LevelsCount
Pixel 3a29, 30, 3245
Pixel 4a30, 3366
Pixel 632, 369
Pixel 6a369
Pixel 9a36122
SM S931U1362

And yes, I know it's a mess, I'm working on cleaning it up.

@github-actions

github-actionsBot commented Jul 19, 2026

Copy link
Copy Markdown
Contributor

Workflow state for the Holistic Review Orchestrator.

{
"version": 5,
"last_dispatched_commit": "e2204bd14641a44d987dd6aba37b79b4d49c73e5",
"last_dispatched_base_ref": "main",
"last_dispatched_base_sha": "0f01d22be46fc2daa2cee0c86b467a60d654afc6",
"last_reviewed_commit": "e2204bd14641a44d987dd6aba37b79b4d49c73e5",
"last_reviewed_base_ref": "main",
"last_reviewed_base_sha": "0f01d22be46fc2daa2cee0c86b467a60d654afc6",
"last_recorded_worker_run_id": "29675339961",
"review_attempt_commit": "",
"review_attempt_base_ref": "",
"review_attempt_count": 0,
"max_review_attempts": 5,
"review_history_format": "holistic-review-disclosure-v1",
"review_history": [
{
"commit": "e2204bd14641a44d987dd6aba37b79b4d49c73e5",
"review_id": 4730524141
}
]
}

@github-actionsgithub-actionsBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Holistic Review

Motivation: The PR bumps the public Ubuntu-based Android Helix test queues from API level 29 to API level 36. The goal is to gain CI coverage for cryptography APIs introduced in Android API 33+, which the project intends to support. This is a well-motivated, targeted infrastructure change.

Approach: Three pipeline YAML files are updated. In helix-platforms.yml, the single helix_android_ubuntu_latest variable is split into helix_android_ubuntu_x64_latest (API 36) and helix_android_ubuntu_x86_latest (API 29), with clarifying comments; the oldest (API 24) variable is retained. In libraries/helix-queues-setup.yml, android_x86 is separated out to remain on API 29 while android_x64, linux_bionic_x64, and the non-public arm/arm64/bionic queues move to API 36. In coreclr/templates/helix-queues-setup.yml, the public android_x64 queue moves to API 36 while the internal queue stays on API 29. The x86 exclusion is correct: API 36 emulators do not ship an android-x86 system image, so keeping x86 on API 29 avoids a broken queue.

Summary: This is a small, correct, and low-risk change. I verified that the renamed helix_android_ubuntu_* variables in helix-platforms.yml are documentation/reference-only — they are not consumed via $(...) anywhere in eng/, and no stale reference to the old helix_android_ubuntu_latest name remains at head, so the rename introduces no breakage. The x86/x64 split is applied consistently, and the x86-on-29 rationale is sound. The main residual risk is queue availability (whether Ubuntu.2204.Amd64.Android.36.Open is provisioned in Helix); this is validated by the PR's own CI runs rather than by static review. One intentional asymmetry worth noting: the internal coreclr and libraries Android queues remain on API 29 while public queues move to 36, consistent with the PR scope of "open" queues. No blocking issues found. LGTM.

Detailed Findings

No actionable code-correctness findings. The variable rename in helix-platforms.yml is safe because those variables are not referenced elsewhere in the pipeline tree. Confirm via CI that the API 36 open queue is provisioned before merging.

Note

This review was generated by this repository's Holistic Review agentic workflow to complement the built-in Copilot review.

Generated by Holistic Review · 75 AIC · ⌖ 10.4 AIC · ⊞ 10.6K

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Projects

Status: No status

Development

Successfully merging this pull request may close these issues.

5 participants

@vcsjones@simonrozsival@akoeplinger@vitek-karas
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Move latest open Android queues from 29 to 36 - #127250

Open
vcsjones wants to merge 3 commits into
dotnet:mainfrom
vcsjones:android-36-tests
Open

Move latest open Android queues from 29 to 36#127250
vcsjones wants to merge 3 commits into
dotnet:mainfrom
vcsjones:android-36-tests

Conversation

@vcsjones

Copy link
Copy Markdown
Member

This bumps our open Android queue from 29 to 36. The motivation for this is to support new cryptography APIs that appeared in API level 33, and we will want test coverage for those APIs.

@vcsjones

Copy link
Copy Markdown
MemberAuthor

/azp run runtime-extra-platforms

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines successfully started running 1 pipeline(s).

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Updates Helix queue configuration to run “latest” Android testing on a newer API level, aligning CI coverage with newer Android platform cryptography APIs.

Changes:

  • Bump Ubuntu-based open Android Helix queues from API 29 to API 36 for libraries pipelines.
  • Update the Android “latest” platform alias in helix-platforms.yml to point at the API 36 queue.
  • Update CoreCLR template to use the API 36 open queue for public Android x64 runs.
Show a summary per file
FileDescription
eng/pipelines/libraries/helix-queues-setup.ymlSwitches Ubuntu Android Open queue used by libraries jobs to API 36.
eng/pipelines/helix-platforms.ymlUpdates helix_android_ubuntu_latest alias and its comment to API 36.
eng/pipelines/coreclr/templates/helix-queues-setup.ymlUpdates public Android x64 Helix queue to API 36 Open.

Copilot's findings

  • Files reviewed: 3/3 changed files
  • Comments generated: 1

Comment threadeng/pipelines/coreclr/templates/helix-queues-setup.yml
@dotnet-policy-service

Copy link
Copy Markdown
Contributor

Tagging subscribers to 'arch-android': @vitek-karas, @simonrozsival, @steveisok, @akoeplinger
See info in area-owners.md if you want to be subscribed.

@simonrozsival

Copy link
Copy Markdown
Member

/azp run runtime-extra-platforms

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines successfully started running 1 pipeline(s).

@@ -90,9 +90,9 @@ jobs:
# Use the Ubuntu-based Android queue for x86/x64/bionic_x64 on all projects,
# and also for arm/arm64/bionic_arm/bionic_arm64 on non-public projects (no internal Windows Android queue).
- ${{ if in(parameters.platform, 'android_x86', 'android_x64', 'linux_bionic_x64') }}:

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It looks like the queue Ubuntu.2204.Amd64.Android.36.Open does not have emulators with android-x86 support so I suggest keeping x86 testing on the original queue.

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@simonrozsival I think I addressed this?

CopilotAI review requested due to automatic review settings May 7, 2026 16:56
@vcsjones

Copy link
Copy Markdown
MemberAuthor

/azp run runtime-extra-platforms

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines successfully started running 1 pipeline(s).

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot's findings

  • Files reviewed: 3/3 changed files
  • Comments generated: 0 new

@akoeplinger

Copy link
Copy Markdown
Member

I think this will put some strain on Helix. The .29 queue can service both x86/x64 so we only need to spin up half of the VMs to service the same load. If you only want to temporarily test the new APIs I'd suggest opening a WIP PR which targets the new queue.

There is some idea of running the Android emulator in Docker so we can move away from the "single-queue-per-API-level" design but it's not there yet.

@vcsjones

Copy link
Copy Markdown
MemberAuthor

@akoeplinger what about adding it as an additional outerloop queue that doesn't run on PRs but only scheduled runs? I am not thrilled with checking in a bunch of cryptographic code that won't get validated periodically.

@akoeplinger

akoeplinger commented May 21, 2026

Copy link
Copy Markdown
Member

yeah. we could also move Android x86 instead since afaik it won't be supported with coreclr anyway, correct @simonrozsival?

@vcsjones

Copy link
Copy Markdown
MemberAuthor

we could also move Android x86 instead

According to @simonrozsival

Ubuntu.2204.Amd64.Android.36.Open does not have emulators with android-x86

@simonrozsival

Copy link
Copy Markdown
Member

@akoeplinger@vcsjones yes, coreclr will run only on x64, arm64, and armeabi-v7a

@simonrozsival

Copy link
Copy Markdown
Member

@vcsjones I need to double check tomorrow, but I think the devices on the Windows.11.Amd64.Android.Open queue have (mostly) API 36.

@vcsjones

Copy link
Copy Markdown
MemberAuthor

I could also go as low as API Level 33, if 33, 34, or 35 has better availability.

@akoeplinger

akoeplinger commented May 21, 2026

Copy link
Copy Markdown
Member

I think the last API level where Google published x86 images was 30.

it's not really about availability, those queues are backed by Azure scalesets so they'll spin up VMs as needed but it means if we send 200 workitems to two queues we'll need to spin up VMs on each (i.e. roughly double) versus handling the load on one queue a bit slower.

I think if x86 Android is not going to be supported in basically a few months from now I'd just move that to scheduled runs and take what you have here.

@vitek-karas

Copy link
Copy Markdown
Member

Windows.11.Amd64.Android.Open is device queue - it has physical host machines with physical devices - so it does not scale at will. But it should have enough capacity (it has ~200 devices in it).
That said, it won't run x86 (at least I don't think it will) since it has almost exclusively Pixel phones (so arm64).

Currently the devices we have in that queue (and their API level)

ModelAPI LevelsCount
Pixel 3a29, 30, 3245
Pixel 4a30, 3366
Pixel 632, 369
Pixel 6a369
Pixel 9a36122
SM S931U1362

And yes, I know it's a mess, I'm working on cleaning it up.

@github-actions

github-actionsBot commented Jul 19, 2026

Copy link
Copy Markdown
Contributor

Workflow state for the Holistic Review Orchestrator.

{
"version": 5,
"last_dispatched_commit": "e2204bd14641a44d987dd6aba37b79b4d49c73e5",
"last_dispatched_base_ref": "main",
"last_dispatched_base_sha": "0f01d22be46fc2daa2cee0c86b467a60d654afc6",
"last_reviewed_commit": "e2204bd14641a44d987dd6aba37b79b4d49c73e5",
"last_reviewed_base_ref": "main",
"last_reviewed_base_sha": "0f01d22be46fc2daa2cee0c86b467a60d654afc6",
"last_recorded_worker_run_id": "29675339961",
"review_attempt_commit": "",
"review_attempt_base_ref": "",
"review_attempt_count": 0,
"max_review_attempts": 5,
"review_history_format": "holistic-review-disclosure-v1",
"review_history": [
{
"commit": "e2204bd14641a44d987dd6aba37b79b4d49c73e5",
"review_id": 4730524141
}
]
}

@github-actionsgithub-actionsBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Holistic Review

Motivation: The PR bumps the public Ubuntu-based Android Helix test queues from API level 29 to API level 36. The goal is to gain CI coverage for cryptography APIs introduced in Android API 33+, which the project intends to support. This is a well-motivated, targeted infrastructure change.

Approach: Three pipeline YAML files are updated. In helix-platforms.yml, the single helix_android_ubuntu_latest variable is split into helix_android_ubuntu_x64_latest (API 36) and helix_android_ubuntu_x86_latest (API 29), with clarifying comments; the oldest (API 24) variable is retained. In libraries/helix-queues-setup.yml, android_x86 is separated out to remain on API 29 while android_x64, linux_bionic_x64, and the non-public arm/arm64/bionic queues move to API 36. In coreclr/templates/helix-queues-setup.yml, the public android_x64 queue moves to API 36 while the internal queue stays on API 29. The x86 exclusion is correct: API 36 emulators do not ship an android-x86 system image, so keeping x86 on API 29 avoids a broken queue.

Summary: This is a small, correct, and low-risk change. I verified that the renamed helix_android_ubuntu_* variables in helix-platforms.yml are documentation/reference-only — they are not consumed via $(...) anywhere in eng/, and no stale reference to the old helix_android_ubuntu_latest name remains at head, so the rename introduces no breakage. The x86/x64 split is applied consistently, and the x86-on-29 rationale is sound. The main residual risk is queue availability (whether Ubuntu.2204.Amd64.Android.36.Open is provisioned in Helix); this is validated by the PR's own CI runs rather than by static review. One intentional asymmetry worth noting: the internal coreclr and libraries Android queues remain on API 29 while public queues move to 36, consistent with the PR scope of "open" queues. No blocking issues found. LGTM.

Detailed Findings

No actionable code-correctness findings. The variable rename in helix-platforms.yml is safe because those variables are not referenced elsewhere in the pipeline tree. Confirm via CI that the API 36 open queue is provisioned before merging.

Note

This review was generated by this repository's Holistic Review agentic workflow to complement the built-in Copilot review.

Generated by Holistic Review · 75 AIC · ⌖ 10.4 AIC · ⊞ 10.6K

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Projects

Status: No status

Development

Successfully merging this pull request may close these issues.

5 participants

@vcsjones@simonrozsival@akoeplinger@vitek-karas
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Move latest open Android queues from 29 to 36 - #127250

Open
vcsjones wants to merge 3 commits into
dotnet:mainfrom
vcsjones:android-36-tests
Open

Move latest open Android queues from 29 to 36#127250
vcsjones wants to merge 3 commits into
dotnet:mainfrom
vcsjones:android-36-tests

Conversation

@vcsjones

Copy link
Copy Markdown
Member

This bumps our open Android queue from 29 to 36. The motivation for this is to support new cryptography APIs that appeared in API level 33, and we will want test coverage for those APIs.

@vcsjones

Copy link
Copy Markdown
MemberAuthor

/azp run runtime-extra-platforms

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines successfully started running 1 pipeline(s).

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Updates Helix queue configuration to run “latest” Android testing on a newer API level, aligning CI coverage with newer Android platform cryptography APIs.

Changes:

  • Bump Ubuntu-based open Android Helix queues from API 29 to API 36 for libraries pipelines.
  • Update the Android “latest” platform alias in helix-platforms.yml to point at the API 36 queue.
  • Update CoreCLR template to use the API 36 open queue for public Android x64 runs.
Show a summary per file
FileDescription
eng/pipelines/libraries/helix-queues-setup.ymlSwitches Ubuntu Android Open queue used by libraries jobs to API 36.
eng/pipelines/helix-platforms.ymlUpdates helix_android_ubuntu_latest alias and its comment to API 36.
eng/pipelines/coreclr/templates/helix-queues-setup.ymlUpdates public Android x64 Helix queue to API 36 Open.

Copilot's findings

  • Files reviewed: 3/3 changed files
  • Comments generated: 1

Comment threadeng/pipelines/coreclr/templates/helix-queues-setup.yml
@dotnet-policy-service

Copy link
Copy Markdown
Contributor

Tagging subscribers to 'arch-android': @vitek-karas, @simonrozsival, @steveisok, @akoeplinger
See info in area-owners.md if you want to be subscribed.

@simonrozsival

Copy link
Copy Markdown
Member

/azp run runtime-extra-platforms

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines successfully started running 1 pipeline(s).

@@ -90,9 +90,9 @@ jobs:
# Use the Ubuntu-based Android queue for x86/x64/bionic_x64 on all projects,
# and also for arm/arm64/bionic_arm/bionic_arm64 on non-public projects (no internal Windows Android queue).
- ${{ if in(parameters.platform, 'android_x86', 'android_x64', 'linux_bionic_x64') }}:

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It looks like the queue Ubuntu.2204.Amd64.Android.36.Open does not have emulators with android-x86 support so I suggest keeping x86 testing on the original queue.

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@simonrozsival I think I addressed this?

CopilotAI review requested due to automatic review settings May 7, 2026 16:56
@vcsjones

Copy link
Copy Markdown
MemberAuthor

/azp run runtime-extra-platforms

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines successfully started running 1 pipeline(s).

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot's findings

  • Files reviewed: 3/3 changed files
  • Comments generated: 0 new

@akoeplinger

Copy link
Copy Markdown
Member

I think this will put some strain on Helix. The .29 queue can service both x86/x64 so we only need to spin up half of the VMs to service the same load. If you only want to temporarily test the new APIs I'd suggest opening a WIP PR which targets the new queue.

There is some idea of running the Android emulator in Docker so we can move away from the "single-queue-per-API-level" design but it's not there yet.

@vcsjones

Copy link
Copy Markdown
MemberAuthor

@akoeplinger what about adding it as an additional outerloop queue that doesn't run on PRs but only scheduled runs? I am not thrilled with checking in a bunch of cryptographic code that won't get validated periodically.

@akoeplinger

akoeplinger commented May 21, 2026

Copy link
Copy Markdown
Member

yeah. we could also move Android x86 instead since afaik it won't be supported with coreclr anyway, correct @simonrozsival?

@vcsjones

Copy link
Copy Markdown
MemberAuthor

we could also move Android x86 instead

According to @simonrozsival

Ubuntu.2204.Amd64.Android.36.Open does not have emulators with android-x86

@simonrozsival

Copy link
Copy Markdown
Member

@akoeplinger@vcsjones yes, coreclr will run only on x64, arm64, and armeabi-v7a

@simonrozsival

Copy link
Copy Markdown
Member

@vcsjones I need to double check tomorrow, but I think the devices on the Windows.11.Amd64.Android.Open queue have (mostly) API 36.

@vcsjones

Copy link
Copy Markdown
MemberAuthor

I could also go as low as API Level 33, if 33, 34, or 35 has better availability.

@akoeplinger

akoeplinger commented May 21, 2026

Copy link
Copy Markdown
Member

I think the last API level where Google published x86 images was 30.

it's not really about availability, those queues are backed by Azure scalesets so they'll spin up VMs as needed but it means if we send 200 workitems to two queues we'll need to spin up VMs on each (i.e. roughly double) versus handling the load on one queue a bit slower.

I think if x86 Android is not going to be supported in basically a few months from now I'd just move that to scheduled runs and take what you have here.

@vitek-karas

Copy link
Copy Markdown
Member

Windows.11.Amd64.Android.Open is device queue - it has physical host machines with physical devices - so it does not scale at will. But it should have enough capacity (it has ~200 devices in it).
That said, it won't run x86 (at least I don't think it will) since it has almost exclusively Pixel phones (so arm64).

Currently the devices we have in that queue (and their API level)

ModelAPI LevelsCount
Pixel 3a29, 30, 3245
Pixel 4a30, 3366
Pixel 632, 369
Pixel 6a369
Pixel 9a36122
SM S931U1362

And yes, I know it's a mess, I'm working on cleaning it up.

@github-actions

github-actionsBot commented Jul 19, 2026

Copy link
Copy Markdown
Contributor

Workflow state for the Holistic Review Orchestrator.

{
"version": 5,
"last_dispatched_commit": "e2204bd14641a44d987dd6aba37b79b4d49c73e5",
"last_dispatched_base_ref": "main",
"last_dispatched_base_sha": "0f01d22be46fc2daa2cee0c86b467a60d654afc6",
"last_reviewed_commit": "e2204bd14641a44d987dd6aba37b79b4d49c73e5",
"last_reviewed_base_ref": "main",
"last_reviewed_base_sha": "0f01d22be46fc2daa2cee0c86b467a60d654afc6",
"last_recorded_worker_run_id": "29675339961",
"review_attempt_commit": "",
"review_attempt_base_ref": "",
"review_attempt_count": 0,
"max_review_attempts": 5,
"review_history_format": "holistic-review-disclosure-v1",
"review_history": [
{
"commit": "e2204bd14641a44d987dd6aba37b79b4d49c73e5",
"review_id": 4730524141
}
]
}

@github-actionsgithub-actionsBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Holistic Review

Motivation: The PR bumps the public Ubuntu-based Android Helix test queues from API level 29 to API level 36. The goal is to gain CI coverage for cryptography APIs introduced in Android API 33+, which the project intends to support. This is a well-motivated, targeted infrastructure change.

Approach: Three pipeline YAML files are updated. In helix-platforms.yml, the single helix_android_ubuntu_latest variable is split into helix_android_ubuntu_x64_latest (API 36) and helix_android_ubuntu_x86_latest (API 29), with clarifying comments; the oldest (API 24) variable is retained. In libraries/helix-queues-setup.yml, android_x86 is separated out to remain on API 29 while android_x64, linux_bionic_x64, and the non-public arm/arm64/bionic queues move to API 36. In coreclr/templates/helix-queues-setup.yml, the public android_x64 queue moves to API 36 while the internal queue stays on API 29. The x86 exclusion is correct: API 36 emulators do not ship an android-x86 system image, so keeping x86 on API 29 avoids a broken queue.

Summary: This is a small, correct, and low-risk change. I verified that the renamed helix_android_ubuntu_* variables in helix-platforms.yml are documentation/reference-only — they are not consumed via $(...) anywhere in eng/, and no stale reference to the old helix_android_ubuntu_latest name remains at head, so the rename introduces no breakage. The x86/x64 split is applied consistently, and the x86-on-29 rationale is sound. The main residual risk is queue availability (whether Ubuntu.2204.Amd64.Android.36.Open is provisioned in Helix); this is validated by the PR's own CI runs rather than by static review. One intentional asymmetry worth noting: the internal coreclr and libraries Android queues remain on API 29 while public queues move to 36, consistent with the PR scope of "open" queues. No blocking issues found. LGTM.

Detailed Findings

No actionable code-correctness findings. The variable rename in helix-platforms.yml is safe because those variables are not referenced elsewhere in the pipeline tree. Confirm via CI that the API 36 open queue is provisioned before merging.

Note

This review was generated by this repository's Holistic Review agentic workflow to complement the built-in Copilot review.

Generated by Holistic Review · 75 AIC · ⌖ 10.4 AIC · ⊞ 10.6K

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Projects

Status: No status

Development

Successfully merging this pull request may close these issues.

5 participants

@vcsjones@simonrozsival@akoeplinger@vitek-karas
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Move latest open Android queues from 29 to 36 - #127250

Open
vcsjones wants to merge 3 commits into
dotnet:mainfrom
vcsjones:android-36-tests
Open

Move latest open Android queues from 29 to 36#127250
vcsjones wants to merge 3 commits into
dotnet:mainfrom
vcsjones:android-36-tests

Conversation

@vcsjones

Copy link
Copy Markdown
Member

This bumps our open Android queue from 29 to 36. The motivation for this is to support new cryptography APIs that appeared in API level 33, and we will want test coverage for those APIs.

@vcsjones

Copy link
Copy Markdown
MemberAuthor

/azp run runtime-extra-platforms

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines successfully started running 1 pipeline(s).

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Updates Helix queue configuration to run “latest” Android testing on a newer API level, aligning CI coverage with newer Android platform cryptography APIs.

Changes:

  • Bump Ubuntu-based open Android Helix queues from API 29 to API 36 for libraries pipelines.
  • Update the Android “latest” platform alias in helix-platforms.yml to point at the API 36 queue.
  • Update CoreCLR template to use the API 36 open queue for public Android x64 runs.
Show a summary per file
FileDescription
eng/pipelines/libraries/helix-queues-setup.ymlSwitches Ubuntu Android Open queue used by libraries jobs to API 36.
eng/pipelines/helix-platforms.ymlUpdates helix_android_ubuntu_latest alias and its comment to API 36.
eng/pipelines/coreclr/templates/helix-queues-setup.ymlUpdates public Android x64 Helix queue to API 36 Open.

Copilot's findings

  • Files reviewed: 3/3 changed files
  • Comments generated: 1

Comment threadeng/pipelines/coreclr/templates/helix-queues-setup.yml
@dotnet-policy-service

Copy link
Copy Markdown
Contributor

Tagging subscribers to 'arch-android': @vitek-karas, @simonrozsival, @steveisok, @akoeplinger
See info in area-owners.md if you want to be subscribed.

@simonrozsival

Copy link
Copy Markdown
Member

/azp run runtime-extra-platforms

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines successfully started running 1 pipeline(s).

@@ -90,9 +90,9 @@ jobs:
# Use the Ubuntu-based Android queue for x86/x64/bionic_x64 on all projects,
# and also for arm/arm64/bionic_arm/bionic_arm64 on non-public projects (no internal Windows Android queue).
- ${{ if in(parameters.platform, 'android_x86', 'android_x64', 'linux_bionic_x64') }}:

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It looks like the queue Ubuntu.2204.Amd64.Android.36.Open does not have emulators with android-x86 support so I suggest keeping x86 testing on the original queue.

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@simonrozsival I think I addressed this?

CopilotAI review requested due to automatic review settings May 7, 2026 16:56
@vcsjones

Copy link
Copy Markdown
MemberAuthor

/azp run runtime-extra-platforms

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines successfully started running 1 pipeline(s).

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot's findings

  • Files reviewed: 3/3 changed files
  • Comments generated: 0 new

@akoeplinger

Copy link
Copy Markdown
Member

I think this will put some strain on Helix. The .29 queue can service both x86/x64 so we only need to spin up half of the VMs to service the same load. If you only want to temporarily test the new APIs I'd suggest opening a WIP PR which targets the new queue.

There is some idea of running the Android emulator in Docker so we can move away from the "single-queue-per-API-level" design but it's not there yet.

@vcsjones

Copy link
Copy Markdown
MemberAuthor

@akoeplinger what about adding it as an additional outerloop queue that doesn't run on PRs but only scheduled runs? I am not thrilled with checking in a bunch of cryptographic code that won't get validated periodically.

@akoeplinger

akoeplinger commented May 21, 2026

Copy link
Copy Markdown
Member

yeah. we could also move Android x86 instead since afaik it won't be supported with coreclr anyway, correct @simonrozsival?

@vcsjones

Copy link
Copy Markdown
MemberAuthor

we could also move Android x86 instead

According to @simonrozsival

Ubuntu.2204.Amd64.Android.36.Open does not have emulators with android-x86

@simonrozsival

Copy link
Copy Markdown
Member

@akoeplinger@vcsjones yes, coreclr will run only on x64, arm64, and armeabi-v7a

@simonrozsival

Copy link
Copy Markdown
Member

@vcsjones I need to double check tomorrow, but I think the devices on the Windows.11.Amd64.Android.Open queue have (mostly) API 36.

@vcsjones

Copy link
Copy Markdown
MemberAuthor

I could also go as low as API Level 33, if 33, 34, or 35 has better availability.

@akoeplinger

akoeplinger commented May 21, 2026

Copy link
Copy Markdown
Member

I think the last API level where Google published x86 images was 30.

it's not really about availability, those queues are backed by Azure scalesets so they'll spin up VMs as needed but it means if we send 200 workitems to two queues we'll need to spin up VMs on each (i.e. roughly double) versus handling the load on one queue a bit slower.

I think if x86 Android is not going to be supported in basically a few months from now I'd just move that to scheduled runs and take what you have here.

@vitek-karas

Copy link
Copy Markdown
Member

Windows.11.Amd64.Android.Open is device queue - it has physical host machines with physical devices - so it does not scale at will. But it should have enough capacity (it has ~200 devices in it).
That said, it won't run x86 (at least I don't think it will) since it has almost exclusively Pixel phones (so arm64).

Currently the devices we have in that queue (and their API level)

ModelAPI LevelsCount
Pixel 3a29, 30, 3245
Pixel 4a30, 3366
Pixel 632, 369
Pixel 6a369
Pixel 9a36122
SM S931U1362

And yes, I know it's a mess, I'm working on cleaning it up.

@github-actions

github-actionsBot commented Jul 19, 2026

Copy link
Copy Markdown
Contributor

Workflow state for the Holistic Review Orchestrator.

{
"version": 5,
"last_dispatched_commit": "e2204bd14641a44d987dd6aba37b79b4d49c73e5",
"last_dispatched_base_ref": "main",
"last_dispatched_base_sha": "0f01d22be46fc2daa2cee0c86b467a60d654afc6",
"last_reviewed_commit": "e2204bd14641a44d987dd6aba37b79b4d49c73e5",
"last_reviewed_base_ref": "main",
"last_reviewed_base_sha": "0f01d22be46fc2daa2cee0c86b467a60d654afc6",
"last_recorded_worker_run_id": "29675339961",
"review_attempt_commit": "",
"review_attempt_base_ref": "",
"review_attempt_count": 0,
"max_review_attempts": 5,
"review_history_format": "holistic-review-disclosure-v1",
"review_history": [
{
"commit": "e2204bd14641a44d987dd6aba37b79b4d49c73e5",
"review_id": 4730524141
}
]
}

@github-actionsgithub-actionsBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Holistic Review

Motivation: The PR bumps the public Ubuntu-based Android Helix test queues from API level 29 to API level 36. The goal is to gain CI coverage for cryptography APIs introduced in Android API 33+, which the project intends to support. This is a well-motivated, targeted infrastructure change.

Approach: Three pipeline YAML files are updated. In helix-platforms.yml, the single helix_android_ubuntu_latest variable is split into helix_android_ubuntu_x64_latest (API 36) and helix_android_ubuntu_x86_latest (API 29), with clarifying comments; the oldest (API 24) variable is retained. In libraries/helix-queues-setup.yml, android_x86 is separated out to remain on API 29 while android_x64, linux_bionic_x64, and the non-public arm/arm64/bionic queues move to API 36. In coreclr/templates/helix-queues-setup.yml, the public android_x64 queue moves to API 36 while the internal queue stays on API 29. The x86 exclusion is correct: API 36 emulators do not ship an android-x86 system image, so keeping x86 on API 29 avoids a broken queue.

Summary: This is a small, correct, and low-risk change. I verified that the renamed helix_android_ubuntu_* variables in helix-platforms.yml are documentation/reference-only — they are not consumed via $(...) anywhere in eng/, and no stale reference to the old helix_android_ubuntu_latest name remains at head, so the rename introduces no breakage. The x86/x64 split is applied consistently, and the x86-on-29 rationale is sound. The main residual risk is queue availability (whether Ubuntu.2204.Amd64.Android.36.Open is provisioned in Helix); this is validated by the PR's own CI runs rather than by static review. One intentional asymmetry worth noting: the internal coreclr and libraries Android queues remain on API 29 while public queues move to 36, consistent with the PR scope of "open" queues. No blocking issues found. LGTM.

Detailed Findings

No actionable code-correctness findings. The variable rename in helix-platforms.yml is safe because those variables are not referenced elsewhere in the pipeline tree. Confirm via CI that the API 36 open queue is provisioned before merging.

Note

This review was generated by this repository's Holistic Review agentic workflow to complement the built-in Copilot review.

Generated by Holistic Review · 75 AIC · ⌖ 10.4 AIC · ⊞ 10.6K

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Projects

Status: No status

Development

Successfully merging this pull request may close these issues.

5 participants

@vcsjones@simonrozsival@akoeplinger@vitek-karas
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Move latest open Android queues from 29 to 36 - #127250

Open
vcsjones wants to merge 3 commits into
dotnet:mainfrom
vcsjones:android-36-tests
Open

Move latest open Android queues from 29 to 36#127250
vcsjones wants to merge 3 commits into
dotnet:mainfrom
vcsjones:android-36-tests

Conversation

@vcsjones

Copy link
Copy Markdown
Member

This bumps our open Android queue from 29 to 36. The motivation for this is to support new cryptography APIs that appeared in API level 33, and we will want test coverage for those APIs.

@vcsjones

Copy link
Copy Markdown
MemberAuthor

/azp run runtime-extra-platforms

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines successfully started running 1 pipeline(s).

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Updates Helix queue configuration to run “latest” Android testing on a newer API level, aligning CI coverage with newer Android platform cryptography APIs.

Changes:

  • Bump Ubuntu-based open Android Helix queues from API 29 to API 36 for libraries pipelines.
  • Update the Android “latest” platform alias in helix-platforms.yml to point at the API 36 queue.
  • Update CoreCLR template to use the API 36 open queue for public Android x64 runs.
Show a summary per file
FileDescription
eng/pipelines/libraries/helix-queues-setup.ymlSwitches Ubuntu Android Open queue used by libraries jobs to API 36.
eng/pipelines/helix-platforms.ymlUpdates helix_android_ubuntu_latest alias and its comment to API 36.
eng/pipelines/coreclr/templates/helix-queues-setup.ymlUpdates public Android x64 Helix queue to API 36 Open.

Copilot's findings

  • Files reviewed: 3/3 changed files
  • Comments generated: 1

Comment threadeng/pipelines/coreclr/templates/helix-queues-setup.yml
@dotnet-policy-service

Copy link
Copy Markdown
Contributor

Tagging subscribers to 'arch-android': @vitek-karas, @simonrozsival, @steveisok, @akoeplinger
See info in area-owners.md if you want to be subscribed.

@simonrozsival

Copy link
Copy Markdown
Member

/azp run runtime-extra-platforms

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines successfully started running 1 pipeline(s).

@@ -90,9 +90,9 @@ jobs:
# Use the Ubuntu-based Android queue for x86/x64/bionic_x64 on all projects,
# and also for arm/arm64/bionic_arm/bionic_arm64 on non-public projects (no internal Windows Android queue).
- ${{ if in(parameters.platform, 'android_x86', 'android_x64', 'linux_bionic_x64') }}:

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It looks like the queue Ubuntu.2204.Amd64.Android.36.Open does not have emulators with android-x86 support so I suggest keeping x86 testing on the original queue.

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@simonrozsival I think I addressed this?

CopilotAI review requested due to automatic review settings May 7, 2026 16:56
@vcsjones

Copy link
Copy Markdown
MemberAuthor

/azp run runtime-extra-platforms

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines successfully started running 1 pipeline(s).

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot's findings

  • Files reviewed: 3/3 changed files
  • Comments generated: 0 new

@akoeplinger

Copy link
Copy Markdown
Member

I think this will put some strain on Helix. The .29 queue can service both x86/x64 so we only need to spin up half of the VMs to service the same load. If you only want to temporarily test the new APIs I'd suggest opening a WIP PR which targets the new queue.

There is some idea of running the Android emulator in Docker so we can move away from the "single-queue-per-API-level" design but it's not there yet.

@vcsjones

Copy link
Copy Markdown
MemberAuthor

@akoeplinger what about adding it as an additional outerloop queue that doesn't run on PRs but only scheduled runs? I am not thrilled with checking in a bunch of cryptographic code that won't get validated periodically.

@akoeplinger

akoeplinger commented May 21, 2026

Copy link
Copy Markdown
Member

yeah. we could also move Android x86 instead since afaik it won't be supported with coreclr anyway, correct @simonrozsival?

@vcsjones

Copy link
Copy Markdown
MemberAuthor

we could also move Android x86 instead

According to @simonrozsival

Ubuntu.2204.Amd64.Android.36.Open does not have emulators with android-x86

@simonrozsival

Copy link
Copy Markdown
Member

@akoeplinger@vcsjones yes, coreclr will run only on x64, arm64, and armeabi-v7a

@simonrozsival

Copy link
Copy Markdown
Member

@vcsjones I need to double check tomorrow, but I think the devices on the Windows.11.Amd64.Android.Open queue have (mostly) API 36.

@vcsjones

Copy link
Copy Markdown
MemberAuthor

I could also go as low as API Level 33, if 33, 34, or 35 has better availability.

@akoeplinger

akoeplinger commented May 21, 2026

Copy link
Copy Markdown
Member

I think the last API level where Google published x86 images was 30.

it's not really about availability, those queues are backed by Azure scalesets so they'll spin up VMs as needed but it means if we send 200 workitems to two queues we'll need to spin up VMs on each (i.e. roughly double) versus handling the load on one queue a bit slower.

I think if x86 Android is not going to be supported in basically a few months from now I'd just move that to scheduled runs and take what you have here.

@vitek-karas

Copy link
Copy Markdown
Member

Windows.11.Amd64.Android.Open is device queue - it has physical host machines with physical devices - so it does not scale at will. But it should have enough capacity (it has ~200 devices in it).
That said, it won't run x86 (at least I don't think it will) since it has almost exclusively Pixel phones (so arm64).

Currently the devices we have in that queue (and their API level)

ModelAPI LevelsCount
Pixel 3a29, 30, 3245
Pixel 4a30, 3366
Pixel 632, 369
Pixel 6a369
Pixel 9a36122
SM S931U1362

And yes, I know it's a mess, I'm working on cleaning it up.

@github-actions

github-actionsBot commented Jul 19, 2026

Copy link
Copy Markdown
Contributor

Workflow state for the Holistic Review Orchestrator.

{
"version": 5,
"last_dispatched_commit": "e2204bd14641a44d987dd6aba37b79b4d49c73e5",
"last_dispatched_base_ref": "main",
"last_dispatched_base_sha": "0f01d22be46fc2daa2cee0c86b467a60d654afc6",
"last_reviewed_commit": "e2204bd14641a44d987dd6aba37b79b4d49c73e5",
"last_reviewed_base_ref": "main",
"last_reviewed_base_sha": "0f01d22be46fc2daa2cee0c86b467a60d654afc6",
"last_recorded_worker_run_id": "29675339961",
"review_attempt_commit": "",
"review_attempt_base_ref": "",
"review_attempt_count": 0,
"max_review_attempts": 5,
"review_history_format": "holistic-review-disclosure-v1",
"review_history": [
{
"commit": "e2204bd14641a44d987dd6aba37b79b4d49c73e5",
"review_id": 4730524141
}
]
}

@github-actionsgithub-actionsBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Holistic Review

Motivation: The PR bumps the public Ubuntu-based Android Helix test queues from API level 29 to API level 36. The goal is to gain CI coverage for cryptography APIs introduced in Android API 33+, which the project intends to support. This is a well-motivated, targeted infrastructure change.

Approach: Three pipeline YAML files are updated. In helix-platforms.yml, the single helix_android_ubuntu_latest variable is split into helix_android_ubuntu_x64_latest (API 36) and helix_android_ubuntu_x86_latest (API 29), with clarifying comments; the oldest (API 24) variable is retained. In libraries/helix-queues-setup.yml, android_x86 is separated out to remain on API 29 while android_x64, linux_bionic_x64, and the non-public arm/arm64/bionic queues move to API 36. In coreclr/templates/helix-queues-setup.yml, the public android_x64 queue moves to API 36 while the internal queue stays on API 29. The x86 exclusion is correct: API 36 emulators do not ship an android-x86 system image, so keeping x86 on API 29 avoids a broken queue.

Summary: This is a small, correct, and low-risk change. I verified that the renamed helix_android_ubuntu_* variables in helix-platforms.yml are documentation/reference-only — they are not consumed via $(...) anywhere in eng/, and no stale reference to the old helix_android_ubuntu_latest name remains at head, so the rename introduces no breakage. The x86/x64 split is applied consistently, and the x86-on-29 rationale is sound. The main residual risk is queue availability (whether Ubuntu.2204.Amd64.Android.36.Open is provisioned in Helix); this is validated by the PR's own CI runs rather than by static review. One intentional asymmetry worth noting: the internal coreclr and libraries Android queues remain on API 29 while public queues move to 36, consistent with the PR scope of "open" queues. No blocking issues found. LGTM.

Detailed Findings

No actionable code-correctness findings. The variable rename in helix-platforms.yml is safe because those variables are not referenced elsewhere in the pipeline tree. Confirm via CI that the API 36 open queue is provisioned before merging.

Note

This review was generated by this repository's Holistic Review agentic workflow to complement the built-in Copilot review.

Generated by Holistic Review · 75 AIC · ⌖ 10.4 AIC · ⊞ 10.6K

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Projects

Status: No status

Development

Successfully merging this pull request may close these issues.

5 participants

@vcsjones@simonrozsival@akoeplinger@vitek-karas
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Move latest open Android queues from 29 to 36 - #127250

Open
vcsjones wants to merge 3 commits into
dotnet:mainfrom
vcsjones:android-36-tests
Open

Move latest open Android queues from 29 to 36#127250
vcsjones wants to merge 3 commits into
dotnet:mainfrom
vcsjones:android-36-tests

Conversation

@vcsjones

Copy link
Copy Markdown
Member

This bumps our open Android queue from 29 to 36. The motivation for this is to support new cryptography APIs that appeared in API level 33, and we will want test coverage for those APIs.

@vcsjones

Copy link
Copy Markdown
MemberAuthor

/azp run runtime-extra-platforms

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines successfully started running 1 pipeline(s).

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Updates Helix queue configuration to run “latest” Android testing on a newer API level, aligning CI coverage with newer Android platform cryptography APIs.

Changes:

  • Bump Ubuntu-based open Android Helix queues from API 29 to API 36 for libraries pipelines.
  • Update the Android “latest” platform alias in helix-platforms.yml to point at the API 36 queue.
  • Update CoreCLR template to use the API 36 open queue for public Android x64 runs.
Show a summary per file
FileDescription
eng/pipelines/libraries/helix-queues-setup.ymlSwitches Ubuntu Android Open queue used by libraries jobs to API 36.
eng/pipelines/helix-platforms.ymlUpdates helix_android_ubuntu_latest alias and its comment to API 36.
eng/pipelines/coreclr/templates/helix-queues-setup.ymlUpdates public Android x64 Helix queue to API 36 Open.

Copilot's findings

  • Files reviewed: 3/3 changed files
  • Comments generated: 1

Comment threadeng/pipelines/coreclr/templates/helix-queues-setup.yml
@dotnet-policy-service

Copy link
Copy Markdown
Contributor

Tagging subscribers to 'arch-android': @vitek-karas, @simonrozsival, @steveisok, @akoeplinger
See info in area-owners.md if you want to be subscribed.

@simonrozsival

Copy link
Copy Markdown
Member

/azp run runtime-extra-platforms

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines successfully started running 1 pipeline(s).

@@ -90,9 +90,9 @@ jobs:
# Use the Ubuntu-based Android queue for x86/x64/bionic_x64 on all projects,
# and also for arm/arm64/bionic_arm/bionic_arm64 on non-public projects (no internal Windows Android queue).
- ${{ if in(parameters.platform, 'android_x86', 'android_x64', 'linux_bionic_x64') }}:

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It looks like the queue Ubuntu.2204.Amd64.Android.36.Open does not have emulators with android-x86 support so I suggest keeping x86 testing on the original queue.

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@simonrozsival I think I addressed this?

CopilotAI review requested due to automatic review settings May 7, 2026 16:56
@vcsjones

Copy link
Copy Markdown
MemberAuthor

/azp run runtime-extra-platforms

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines successfully started running 1 pipeline(s).

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot's findings

  • Files reviewed: 3/3 changed files
  • Comments generated: 0 new

@akoeplinger

Copy link
Copy Markdown
Member

I think this will put some strain on Helix. The .29 queue can service both x86/x64 so we only need to spin up half of the VMs to service the same load. If you only want to temporarily test the new APIs I'd suggest opening a WIP PR which targets the new queue.

There is some idea of running the Android emulator in Docker so we can move away from the "single-queue-per-API-level" design but it's not there yet.

@vcsjones

Copy link
Copy Markdown
MemberAuthor

@akoeplinger what about adding it as an additional outerloop queue that doesn't run on PRs but only scheduled runs? I am not thrilled with checking in a bunch of cryptographic code that won't get validated periodically.

@akoeplinger

akoeplinger commented May 21, 2026

Copy link
Copy Markdown
Member

yeah. we could also move Android x86 instead since afaik it won't be supported with coreclr anyway, correct @simonrozsival?

@vcsjones

Copy link
Copy Markdown
MemberAuthor

we could also move Android x86 instead

According to @simonrozsival

Ubuntu.2204.Amd64.Android.36.Open does not have emulators with android-x86

@simonrozsival

Copy link
Copy Markdown
Member

@akoeplinger@vcsjones yes, coreclr will run only on x64, arm64, and armeabi-v7a

@simonrozsival

Copy link
Copy Markdown
Member

@vcsjones I need to double check tomorrow, but I think the devices on the Windows.11.Amd64.Android.Open queue have (mostly) API 36.

@vcsjones

Copy link
Copy Markdown
MemberAuthor

I could also go as low as API Level 33, if 33, 34, or 35 has better availability.

@akoeplinger

akoeplinger commented May 21, 2026

Copy link
Copy Markdown
Member

I think the last API level where Google published x86 images was 30.

it's not really about availability, those queues are backed by Azure scalesets so they'll spin up VMs as needed but it means if we send 200 workitems to two queues we'll need to spin up VMs on each (i.e. roughly double) versus handling the load on one queue a bit slower.

I think if x86 Android is not going to be supported in basically a few months from now I'd just move that to scheduled runs and take what you have here.

@vitek-karas

Copy link
Copy Markdown
Member

Windows.11.Amd64.Android.Open is device queue - it has physical host machines with physical devices - so it does not scale at will. But it should have enough capacity (it has ~200 devices in it).
That said, it won't run x86 (at least I don't think it will) since it has almost exclusively Pixel phones (so arm64).

Currently the devices we have in that queue (and their API level)

ModelAPI LevelsCount
Pixel 3a29, 30, 3245
Pixel 4a30, 3366
Pixel 632, 369
Pixel 6a369
Pixel 9a36122
SM S931U1362

And yes, I know it's a mess, I'm working on cleaning it up.

@github-actions

github-actionsBot commented Jul 19, 2026

Copy link
Copy Markdown
Contributor

Workflow state for the Holistic Review Orchestrator.

{
"version": 5,
"last_dispatched_commit": "e2204bd14641a44d987dd6aba37b79b4d49c73e5",
"last_dispatched_base_ref": "main",
"last_dispatched_base_sha": "0f01d22be46fc2daa2cee0c86b467a60d654afc6",
"last_reviewed_commit": "e2204bd14641a44d987dd6aba37b79b4d49c73e5",
"last_reviewed_base_ref": "main",
"last_reviewed_base_sha": "0f01d22be46fc2daa2cee0c86b467a60d654afc6",
"last_recorded_worker_run_id": "29675339961",
"review_attempt_commit": "",
"review_attempt_base_ref": "",
"review_attempt_count": 0,
"max_review_attempts": 5,
"review_history_format": "holistic-review-disclosure-v1",
"review_history": [
{
"commit": "e2204bd14641a44d987dd6aba37b79b4d49c73e5",
"review_id": 4730524141
}
]
}

@github-actionsgithub-actionsBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Holistic Review

Motivation: The PR bumps the public Ubuntu-based Android Helix test queues from API level 29 to API level 36. The goal is to gain CI coverage for cryptography APIs introduced in Android API 33+, which the project intends to support. This is a well-motivated, targeted infrastructure change.

Approach: Three pipeline YAML files are updated. In helix-platforms.yml, the single helix_android_ubuntu_latest variable is split into helix_android_ubuntu_x64_latest (API 36) and helix_android_ubuntu_x86_latest (API 29), with clarifying comments; the oldest (API 24) variable is retained. In libraries/helix-queues-setup.yml, android_x86 is separated out to remain on API 29 while android_x64, linux_bionic_x64, and the non-public arm/arm64/bionic queues move to API 36. In coreclr/templates/helix-queues-setup.yml, the public android_x64 queue moves to API 36 while the internal queue stays on API 29. The x86 exclusion is correct: API 36 emulators do not ship an android-x86 system image, so keeping x86 on API 29 avoids a broken queue.

Summary: This is a small, correct, and low-risk change. I verified that the renamed helix_android_ubuntu_* variables in helix-platforms.yml are documentation/reference-only — they are not consumed via $(...) anywhere in eng/, and no stale reference to the old helix_android_ubuntu_latest name remains at head, so the rename introduces no breakage. The x86/x64 split is applied consistently, and the x86-on-29 rationale is sound. The main residual risk is queue availability (whether Ubuntu.2204.Amd64.Android.36.Open is provisioned in Helix); this is validated by the PR's own CI runs rather than by static review. One intentional asymmetry worth noting: the internal coreclr and libraries Android queues remain on API 29 while public queues move to 36, consistent with the PR scope of "open" queues. No blocking issues found. LGTM.

Detailed Findings

No actionable code-correctness findings. The variable rename in helix-platforms.yml is safe because those variables are not referenced elsewhere in the pipeline tree. Confirm via CI that the API 36 open queue is provisioned before merging.

Note

This review was generated by this repository's Holistic Review agentic workflow to complement the built-in Copilot review.

Generated by Holistic Review · 75 AIC · ⌖ 10.4 AIC · ⊞ 10.6K

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Projects

Status: No status

Development

Successfully merging this pull request may close these issues.

5 participants

@vcsjones@simonrozsival@akoeplinger@vitek-karas