지속적 통합(CI)#
지속적 통합(CI)은 변경 사항을 통합하고 자동으로 테스트하는 소프트웨어 개발의 필수 요소입니다. CI를 통해 개발 과정에서 문제를 빠르고 자주 찾아 고품질 코드를 유지할 수 있습니다. Ultralytics는 코드베이스의 품질과 무결성을 보장하기 위해 다양한 CI 테스트를 사용합니다.
CI 작업#
CI 작업을 간략히 설명하면 다음과 같습니다.
- CI: 기본 CI 테스트로, 단위 테스트를 실행하며 저장소에 따라 내보내기 검사 및 벤치마크와 같은 보다 포괄적인 테스트도 실행합니다.
- Docker 배포: Docker를 사용한 프로젝트 배포를 테스트하여 Dockerfile 및 관련 스크립트가 올바르게 작동하는지 확인합니다.
- 깨진 링크: 코드베이스를 스캔하여 Markdown 또는 HTML 파일에 끊어졌거나 유효하지 않은 링크가 있는지 확인합니다.
- CodeQL: CodeQL은 GitHub의 도구로, 코드의 의미 분석을 수행하여 잠재적인 보안 취약점을 찾고 고품질 코드를 유지하는 데 도움을 줍니다.
- PyPI 게시: 이 워크플로는 패키지를 빌드하고 새 버전이 나올 때마다 PyPI에 게시합니다.
CI 결과#
아래 표는 주요 저장소에 대한 CI 테스트 상태를 보여 줍니다.
| 저장소 | CI | Docker 배포 | 깨진 링크 | CodeQL | PyPI 및 문서 게시 |
|---|---|---|---|---|---|
| yolov3 | |||||
| yolov5 | |||||
| ultralytics | |||||
| sdk | |||||
| lite | |||||
| openapi | |||||
| 기술 | |||||
| yolo-ios-app | |||||
| yolo-flutter-app | |||||
| thop | |||||
| 작업 | |||||
| mkdocs | |||||
| 문서 | |||||
| 핸드북 | |||||
| 스타 | |||||
| CLIP |
각 배지는 해당 저장소의 main 브랜치에서 해당 CI 테스트가 마지막으로 실행된 상태를 보여줍니다. 테스트가 실패하면 배지에 "실패" 상태가 표시되고, 통과하면 "통과" 상태가 표시됩니다.
테스트 실패를 발견하시면 해당 저장소의 GitHub 이슈를 통해 보고해 주시면 큰 도움이 됩니다.
CI 테스트가 성공했다고 해서 모든 것이 완벽한 것은 아니라는 점을 기억해 주세요. 배포하거나 변경 사항을 병합하기 전에 항상 코드를 직접 검토하는 것이 좋습니다.
코드 커버리지#
코드 커버리지는 테스트 실행 시 코드베이스에서 실행되는 코드의 비율을 나타내는 지표입니다. 테스트가 코드를 얼마나 잘 검증하는지 파악하는 데 도움이 되며, 애플리케이션에서 테스트되지 않은 부분을 식별하는 데 매우 중요할 수 있습니다. 코드 커버리지 비율이 높으면 일반적으로 버그가 발생할 가능성이 낮다고 볼 수 있습니다. 하지만 코드 커버리지가 결함이 없음을 보장하지는 않는다는 점을 이해하는 것이 중요합니다. 코드 커버리지는 테스트에서 실행된 코드 부분을 보여줄 뿐입니다.
codecov.io와의 통합#
Ultralytics는 코드 커버리지를 측정하고 시각화하는 인기 온라인 플랫폼인 codecov.io와 저장소를 통합했습니다. Codecov는 상세한 인사이트, 커밋 간 커버리지 비교, 코드에서 커버된 줄을 보여주는 시각적 오버레이를 제공합니다.
Codecov와 통합하여 오류가 발생하기 쉽거나 추가 테스트가 필요한 영역에 집중함으로써 코드 품질을 유지하고 개선하고자 합니다.
커버리지 결과#
저장소의 코드 커버리지 상태를 빠르게 확인할 수 있도록 각 추적 프로젝트에 Codecov 배지와 선버스트 미리보기를 포함했습니다. 각 선버스트의 가장 안쪽 원은 전체 프로젝트를 나타내며, 중심에서 바깥쪽으로 이동하면서 폴더, 마지막으로 개별 파일이 표시됩니다. 각 조각의 크기와 색상은 각각 문장 수와 커버리지를 나타냅니다. 자세한 내용은 Ultralytics Codecov 조직을 방문하세요.
자주 묻는 질문#
Ultralytics의 지속적 통합(CI)은 코드 변경 사항을 자동으로 통합하고 테스트하여 높은 품질 기준을 보장하는 과정입니다. CI 설정에는 단위 테스트, 내보내기 테스트, 벤치마크 실행이 포함됩니다. 또한 Docker 배포, 끊어진 링크 검사, 보안 취약점을 확인하는 CodeQL 분석, 소프트웨어 패키징 및 배포를 위한 PyPI 게시를 수행합니다.
Ultralytics는 Markdown 및 HTML 파일에서 끊어진 링크를 확인하기 위해 특정 CI 액션을 사용합니다. 이 작업은 유효하지 않거나 끊어진 링크를 검색하고 식별하여 문서의 무결성을 유지하고, 사용자가 항상 정확하고 유효한 리소스에 액세스할 수 있도록 합니다.
Ultralytics는 전용 CI 액션을 통해 프로젝트의 배포를 검증하는 데 Docker를 사용합니다. 이 과정에서는 Dockerfile 및 관련 스크립트가 올바르게 작동하는지 확인하여, 확장 가능하고 안정적인 AI 솔루션에 필수적인 일관되고 재현 가능한 배포 환경을 구현합니다.
자동화된 PyPI 게시는 수동 작업 없이 패키지를 빌드하고 새 버전을 게시합니다. 이 과정은 Ultralytics의 Python 패키지를 배포하는 데 필수적이며, 사용자는 Python 패키지 색인(PyPI)을 통해 도구를 쉽게 설치하고 사용할 수 있습니다.