Ultralytics YOLO27:

지속적 통합 (CI)#

지속적 통합 (CI)은 변경 사항을 통합하고 이를 자동으로 테스트하는 소프트웨어 개발의 필수적인 측면입니다. CI를 사용하면 개발 과정에서 문제를 조기에, 그리고 자주 발견하여 고품질 코드를 유지할 수 있습니다. Ultralytics에서는 코드베이스의 품질과 무결성을 보장하기 위해 다양한 CI 테스트를 사용합니다.

CI 작업#

다음은 CI 작업에 대한 간략한 설명입니다.

  • CI: 단위 테스트, 린팅 검사 및 저장소에 따라 때때로 더 포괄적인 테스트를 실행하는 기본 CI 테스트입니다.
  • Docker 배포: Docker를 사용한 프로젝트 배포를 검사하여 Dockerfile과 관련 스크립트가 올바르게 작동하는지 확인하는 테스트입니다.
  • 손상된 링크: Markdown 또는 HTML 파일에서 손상되었거나 더 이상 유효하지 않은 링크가 있는지 코드베이스를 검사하는 테스트입니다.
  • CodeQL: CodeQL은 GitHub의 도구로, 코드에 대한 의미론적 분석을 수행하여 잠재적인 보안 취약점을 찾고 고품질 코드를 유지하는 데 도움을 줍니다.
  • PyPI 게시: 오류 없이 프로젝트를 패키징하여 PyPI에 게시할 수 있는지 확인하는 테스트입니다.

CI 결과#

다음은 주요 저장소의 CI 테스트 상태를 보여주는 표입니다.

저장소CIDocker 배포손상된 링크CodeQLPyPI 및 문서 게시
yolov3YOLOv3 CIDocker 이미지 게시손상된 링크 확인CodeQL
yolov5YOLOv5 CIDocker 이미지 게시손상된 링크 확인CodeQL
ultralyticsultralytics CIDocker 이미지 게시손상된 링크 확인CodeQLPyPI에 게시 및 문서 배포 Conda 빌드
sdkSDK CIPyPI에 게시
yolo-ios-appiOS 앱 CICodeQLiOS 앱 게시
yolo-flutter-appFlutter 앱 CICodeQLpub.dev에 게시
thopUltralytics 작업CodeQLPyPI에 게시
actionsActions CICodeQLPyPI에 게시
mkdocsUltralytics 작업CodeQLPyPI에 게시
docsUltralytics 작업손상된 링크 확인
handbookUltralytics 작업손상된 링크 확인
starsUltralytics 작업분석 업데이트
CLIPCLIP CI

각 배지는 해당 저장소의 main 브랜치에서 해당 CI 테스트를 마지막으로 실행한 결과의 상태를 보여줍니다. 테스트가 실패하면 배지에 "실패" 상태가 표시되고, 통과하면 "통과" 상태가 표시됩니다.

테스트가 실패한 것을 발견하셨다면 해당 저장소의 GitHub 이슈를 통해 이를 보고해 주시면 큰 도움이 됩니다.

CI 테스트가 성공했다고 해서 모든 것이 완벽하다는 의미는 아닙니다. 배포하거나 변경 사항을 병합하기 전에 항상 코드를 수동으로 검토하는 것이 좋습니다.

코드 커버리지#

코드 커버리지는 테스트를 실행할 때 코드베이스 중 실행되는 비율을 나타내는 지표입니다. 테스트가 코드를 얼마나 잘 실행하는지 파악할 수 있으며, 애플리케이션에서 테스트되지 않은 부분을 식별하는 데 중요할 수 있습니다. 코드 커버리지 비율이 높으면 일반적으로 버그가 발생할 가능성이 낮습니다. 그러나 코드 커버리지가 결함이 없음을 보장하지는 않는다는 점을 이해해야 합니다. 이는 테스트가 코드의 어느 부분을 실행했는지만 나타냅니다.

codecov.io와의 통합#

Ultralytics에서는 코드 커버리지를 측정하고 시각화하는 인기 온라인 플랫폼인 codecov.io와 저장소를 통합했습니다. Codecov는 커밋 간 커버리지 비교와 자세한 인사이트를 제공하며, 코드에 시각적 오버레이를 직접 표시하여 어떤 줄이 커버되었는지 알려줍니다.

Codecov와 통합하여 오류가 발생하기 쉽거나 추가 테스트가 필요한 영역에 집중함으로써 코드의 품질을 유지하고 개선하고자 합니다.

커버리지 결과#

저장소의 코드 커버리지 상태를 빠르게 확인할 수 있도록 추적 중인 각 프로젝트에 Codecov 배지와 선버스트 미리보기를 포함했습니다. 각 선버스트의 가장 안쪽 원은 전체 프로젝트를 나타내며, 중심에서 바깥쪽으로 폴더와 단일 파일이 이어집니다. 각 조각의 크기와 색상은 각각 문장의 수와 커버리지를 나타냅니다. 전체 세부 정보는 Ultralytics Codecov 조직을 방문하세요.

FAQ#

  • Ultralytics의 지속적 통합 (CI)은 고품질 표준을 보장하기 위해 코드 변경 사항을 자동으로 통합하고 테스트하는 과정입니다. CI 설정에는 단위 테스트, 린팅 검사 및 포괄적인 테스트 실행이 포함됩니다. 또한 보안 취약점을 확인하기 위한 Docker 배포, 손상된 링크 검사, CodeQL 분석, 소프트웨어를 패키징하고 배포하기 위한 PyPI 게시를 수행합니다.

  • Ultralytics는 Markdown 및 HTML 파일 내에서 손상된 링크를 확인하는 특정 CI 작업을 사용합니다. 이를 통해 유효하지 않거나 손상된 링크를 검사하고 식별하여 문서의 무결성을 유지하며, 사용자가 항상 정확하고 유효한 리소스에 액세스할 수 있도록 합니다.

  • CodeQL 분석은 의미론적 코드 분석을 수행하여 잠재적인 보안 취약점을 찾고 고품질 표준을 유지하므로 Ultralytics에 매우 중요합니다. CodeQL을 사용하면 코드의 위험을 사전에 식별하고 완화하여 견고하고 안전한 소프트웨어 솔루션을 제공하는 데 도움을 받을 수 있습니다.

  • Ultralytics는 전용 CI 작업을 통해 프로젝트 배포를 검증하는 데 Docker를 사용합니다. 이 프로세스는 Dockerfile 및 관련 스크립트가 올바르게 작동하는지 확인하여, 확장 가능하고 안정적인 AI 솔루션에 중요한 일관되고 재현 가능한 배포 환경을 제공합니다.

  • 자동화된 PyPI 게시는 프로젝트를 오류 없이 패키징하고 게시할 수 있도록 합니다. 이 단계는 Ultralytics의 Python 패키지를 배포하는 데 필수적이며, 사용자가 Python 패키지 인덱스 (PyPI)를 통해 도구를 쉽게 설치하고 사용할 수 있도록 합니다.

  • Ultralytics는 Codecov와 통합하여 테스트 중 코드베이스가 얼마나 실행되는지에 대한 인사이트를 제공함으로써 코드 커버리지를 측정합니다. 높은 코드 커버리지는 코드가 충분히 테스트되었음을 나타낼 수 있으며, 버그가 발생하기 쉬운 테스트되지 않은 영역을 발견하는 데 도움이 됩니다. 자세한 코드 커버리지 지표는 주요 저장소에 표시된 배지를 통해 확인하거나 Codecov에서 직접 확인할 수 있습니다.

댓글