Skip to content

ci: managed-device selected 레인이 같은 클래스 selector 를 앞 2개만 실행 — 선언·검증 정책과 실행이 불일치 #1378

Closed

Description

@OnlyReadOneBook

작업 유형

maintenance — CI·빌드·의존성·저장소 운영 유지보수

주 담당 모듈

platform — Android 앱·CI·빌드·릴리스·저장소 운영

개요

📜 Overview (Required)

#1333(PR #1349)로 도입된 managed-device selected 레인이 같은 클래스의 selector 를 선언 순서 앞 2개만 실행한다. 정책(ci-test-plan.mjs)은 변경한 androidTest 파일의 @test 전량 선언을 강제하고, 검증기(verify-android-test-plan-result.mjs)는 선언 전량이 결과 XML 에 있기를 요구하므로 — @test 3개 이상인 테스트 파일을 건드린 PR 은 selected 레인을 구조적으로 통과할 수 없다. 실행부만 선언을 못 따라가는 상태다.

실측 (2026-08-28, 독립 3개 런)

런 선언 (api30) 실제 실행 결과
PR #1371 job 98851798348 계열 AppAndReceiverCompletionAndroidTest(이하 APP) 10개 APP 앞 2개만 (Starting 2 tests, XML tests="2") 8개 「실행 결과를 찾지 못했습니다」
PR #1373 APP 10개 + ReceiverAdvancedAndroidTest(이하 ADV) 3개 APP 앞 2개 + ADV 3개 전부 (Starting 5 tests) APP 8개 누락
PR #1374 ADV 1 + APP 2 + AfternoteAuthorExtendedAndroidTest 1 4개 전부 실행 누락 0 (별건 테스트 실패만)
  • Gradle 호출은 -Pandroid.testInstrumentationRunnerArguments.class=<selector 콤마 목록> 단일 인자, 단일 invocation (아티팩트 _temp/android-test-logs/api30.log 로 확인 — 재시도 없음).
  • ANDROID_TEST_OUTCOME=success — 실행 자체는 조용히 성공하므로 utp 발견 단계에서 이미 잘린다.
  • 메서드별 어노테이션 차이 없음(전부 평범한 @Test).

경계 추정

클래스별 개수 상한 2 는 ADV=3 전부 실행과 모순. 길이로 보면 클래스별 그룹 문자열(클래스#m1,m2,…) 기준 APP 2개=207자(실행) / 3개=297자(잘림), ADV 3개=277자(실행) — 클래스별 ~280자 부근 상한과 정합. 정확한 경계는 AGP/utp 필터 파싱 소스 확인이나 계측 실험으로 특정 필요.

처방 (안)

android-managed-device.yml 의 단일 gradle invocation 을 청크 분할 실행으로:

수정 전 .github/scripts/*-policy.test.mjs·ci-test-plan.test.mjs 대조(정책 테스트가 결정을 고정하고 있음).

영향

📍 Note (Optional)

  • 근본 원인(AGP utp 의 class 필터 파싱 어디서 잘리는지)을 특정하면 청크 상한을 정확 경계로 완화할 수 있다 — 후속 재량.

Activity

  1. added
    bugSomething isn't working
    area:platformCI·빌드·릴리스·저장소 운영 영역
    on Aug 28, 2026
  2. github-actions commented on Aug 28, 2026

    @github-actions
    Contributor

    이 이슈는 필수 메타데이터를 판정할 수 없어 자동으로 닫았습니다.

    • 작업 유형이 없거나 허용된 값이 아닙니다.
    • 주 담당 모듈이 없거나 허용된 값이 아닙니다.

    이슈 등록 양식에 맞게 본문을 보완한 뒤 다시 열어 주세요.

  3. OnlyReadOneBook commented on Aug 28, 2026

    @OnlyReadOneBook
    CollaboratorAuthor

    가설 수정 (추가 실측) — PR #1374 의 c9515f9 런에서 3클래스 4개 selector(클래스당 최대 2개) 목록이 2개만 실행됐다(직전 c868f8a 런에서는 같은 목록 4개 전부 실행). 즉 「클래스별 앞 2개 상한」·「클래스별 길이 상한」 가설은 모두 반증됐고, 실체는 다중 목록의 비결정적 드롭(연속 구간이 런마다 다르게 사라짐)이다. 전 런에서 신뢰된 형태는 단일 selector 뿐. 이에 따라 PR #1380 을 청크 분할이 아니라 누락 selector 단일 invocation 자가 치유 재실행으로 재설계했다. 근본 원인(필터 문자열이 잘리는 전달 지점) 특정은 후속으로 남긴다.

  4. OnlyReadOneBook commented on Aug 28, 2026

    @OnlyReadOneBook
    CollaboratorAuthor

    메타데이터 가드가 요구한 필수 항목(작업 유형 maintenance·주 담당 모듈 platform)을 본문에 보완해 다시 엽니다. 구현 PR 은 닫힌 #1380 의 브랜치를 이어받아 새로 엽니다(닫힌 뒤 force-push 로 재오픈 불가).

  5. added a commit that references this issue on Aug 28, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Labels

area:platformCI·빌드·릴리스·저장소 운영 영역maintenanceCI·빌드·의존성·저장소 운영 유지보수

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions