Skip to content

Add Copilot skill: reproduce CI runs locally for dotnet/android lanes #11137

Description

@simonrozsival

Problem

When a CI lane fails (e.g. CoreCLRTrimmable, NativeAOT, or a specific device test suite), an agent/contributor trying to reproduce it locally has to reverse-engineer:

  • Which dotnet-local.sh target to invoke
  • Which MSBuild properties to pass (_AndroidTypeMapImplementation, UseMonoRuntime, RuntimeIdentifier, etc.)
  • Which configuration to use (Debug vs Release)
  • How to run the device test (with emulator attached) vs the host test
  • Where to find the results XML

This burned a significant amount of time during PR #11091 and forced CI-driven iteration (hours per cycle) instead of local iteration (minutes per cycle).

Proposal

Add a .github/skills/reproduce-ci-run/SKILL.md that maps a CI lane name to the exact local commands. Sketch:

Given: CoreCLRTrimmable lane failure
Produce:
  make prepare && make all CONFIGURATION=Release
  ./dotnet-local.sh build tests/Mono.Android-Tests/Mono.Android-Tests/Mono.Android.NET-Tests.csproj \
      -t:RunTestApp -c Release \
      -p:_AndroidTypeMapImplementation=trimmable \
      -p:UseMonoRuntime=false
  Parse TestResult-Mono.Android.NET_Tests-ReleaseCoreCLRTrimmable.xml

Coverage should include at minimum:

  • Mono vs CoreCLR vs NativeAOT
  • legacy vs trimmable typemap
  • Debug vs Release
  • Device tests (emulator/phone attached) vs host tests
  • Build-only smoke vs full test matrix

Acceptance criteria

  • Skill exists with frontmatter (name, description) and is triggered by phrases like "reproduce CI locally", "run CoreCLRTrimmable tests locally".
  • Covers the lane/configuration combinations listed above.
  • Documents where results land and how to parse them.
  • Validated by reproducing at least one recent CI failure end-to-end.

Discovered during

PR #11091 — adding the CoreCLRTrimmable CI lane. See also companion issue about investigation/debugging practices (already added to .github/copilot-instructions.md).

Activity

  1. simonrozsival commented on Oct 6, 2026

    @simonrozsival
    MemberAuthor

    Closing as substantially addressed by #13006, which makes local SDK preparation/builds and relevant host/device validation the default for agents, updates the existing test skill and repository instructions, and refreshes the test command examples.

    This addresses most of the original goal through the existing guidance rather than adding a separate reproduction skill. A complete CI-lane-to-local-command mapping is not claimed by that PR; any concrete remaining gaps can be added to the existing test skill as focused follow-ups.

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    Area: Unit TestsIssues with repo unit tests.enhancementProposed change to current functionality.needs-triageIssues that need to be assigned.

    Type

    No type

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions