Skip to content

[CI][Europa] ablestack-europa baseline Build·License·Lint 실패 정비 #926

Description

@dhslove

배경

SharedFS #911 구현 PR #925의 CI를 검토하는 과정에서 ablestack-europa 저장소 baseline의 Build, License Check와 Lint가 #911 변경과 무관한 기존 파일·테스트 때문에 실패하는 것을 확인했습니다.

PR #925의 실패 대상 파일과 테스트를 upstream/ablestack-europa...PR HEAD 변경 목록과 대조한 결과 교집합은 0개였습니다. PR 자체의 UI Build, Rocky 9.7 RPM Packaging, Merge Conflict Check, #911 전용 단위 테스트와 최신 전체 noredist/SystemVM/runtime bundle 릴리즈는 성공했습니다.

전역 CI가 기존 baseline 문제로 항상 red이면 신규 PR의 회귀 여부를 정확하게 판단하기 어렵고, 실제 결함이 기존 실패에 묻힐 수 있으므로 별도 정비가 필요합니다.

관리 범위

검토 판정

현재 실패 목록

License Check

Apache RAT가 다음 기존 6개 파일을 unapproved로 판정합니다.

  • ui/src/views/infra/zone/components/RackListCardIcon.vue
  • scripts/vm/hypervisor/kvm/netbackup-host-restore-watcher.py
  • scripts/vm/hypervisor/kvm/netbackup-host-bpstart-notify.policy
  • scripts/vm/hypervisor/kvm/netbackup-host-policy.conf
  • scripts/vm/hypervisor/kvm/netbackup-host-bpend-notify.policy
  • scripts/vm/hypervisor/kvm/netbackup-host-config.py

Lint / pre-commit

  • oxipng가 기존 PNG를 수정함
  • 기존 Markdown, properties, shell, SQL, Vue, YAML 파일에 license hook 변경 발생
  • ablestack_netbackup.sh, ablestack_cvtbackup.sh의 executable bit 누락
  • packaging/el10 broken symlink
  • 기존 파일의 EOF, trailing whitespace 문제
  • SMB API 및 기존 설계·검증 문서의 codespell 오류
  • 기존 history/design/validation 문서의 markdownlint MD012 오류

Build

cloud-server 테스트에서 다음 기존 영역이 실패합니다.

  • LoadBalancingRulesManagerImplTest: network mock 누락으로 6 errors
  • UserVmManagerImplTest: unnecessary Mockito stubbing 1 error
  • VolumeApiServiceImplTest: volume details DAO 등 mock 누락으로 9 errors
  • BackupManagerTest: 결과/job parameter mock 누락으로 1 failure, 1 error

개선 방향

  1. RAT 대상 파일에 실제 파일 유형에 맞는 Apache header를 추가하고, generated/binary 예외는 근거가 있는 경우에만 RAT exclude로 관리합니다.
  2. pre-commit 자동 수정 결과를 무작정 전체 반영하지 않고 hook별 파일을 검토해 작은 커밋으로 분리합니다.
  3. 실행 스크립트의 Git executable bit와 packaging/el10 symlink 목적지를 복구합니다.
  4. codespell과 markdownlint 오류를 의미 변경 없이 정리합니다.
  5. Build 실패 테스트의 mock/fixture를 현재 production contract에 맞게 보완합니다.
  6. full-repository Lint를 PR 필수 체크로 유지하려면 먼저 baseline을 clean하게 만듭니다.
  7. changed-files Lint로 전환할 경우 repository 전체 검사는 별도 scheduled CI로 유지해 기존 부채가 숨겨지지 않도록 합니다.

구현 원칙

  • SharedFS [SharedFS][SystemVM] 운영 중 Storage Service 런타임 코드 인플레이스 업그레이드 지원 #911 기능 코드는 이 이슈에서 변경하지 않습니다.
  • 테스트를 skip하거나 failure ignore로 숨기지 않습니다.
  • 광범위한 formatter 실행과 무관한 코드 재정렬을 피합니다.
  • 각 실패군을 License, Lint metadata, Java test fixture 단위로 분리해 검토 가능하게 커밋합니다.
  • production 동작 변경이 필요한 경우 해당 기능 영역의 별도 이슈로 다시 분리합니다.

테스트 게이트

  • License Check: PASS, unapproved 0
  • Lint / Run pre-commit: PASS, 작업 트리 변경 0
  • Build: PASS
  • 기존 UI Build와 Rocky 9.7 RPM Packaging: PASS 유지
  • 수정 대상 Java 테스트를 단독 및 cloud-server 전체에서 재검증
  • git diff --check: PASS

완료 조건

  • 깨끗한 ablestack-europa 기준 PR에서 Build, License Check와 Lint가 모두 green입니다.
  • failure ignore, test skip 또는 범위 축소만으로 green을 만들지 않습니다.
  • CI workflow의 검사 범위와 scheduled full scan 정책이 문서화됩니다.
  • [SharedFS] Storage Service 런타임 인플레이스 업그레이드 지원 #925 이후 PR에서 baseline 실패와 신규 회귀를 구분할 수 있습니다.

관련 항목

Activity

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

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions