지속적 통합(CI)
지속적 통합(CI)은 변경 사항을 통합하고 자동으로 테스트하는 소프트웨어 개발의 필수적인 측면입니다. CI를 사용하면 개발 과정에서 문제를 조기에 자주 발견하여 고품질 코드를 유지할 수 있습니다. Ultralytics 에서는 코드베이스의 품질과 무결성을 보장하기 위해 다양한 CI 테스트를 사용합니다.
CI 액션
다음은 CI 활동에 대한 간략한 설명입니다:
- CI: 단위 테스트, 린팅 검사, 때로는 리포지토리에 따라 더 포괄적인 테스트를 실행하는 기본 CI 테스트입니다.
- Docker 배포: 이 테스트는 Docker를 사용하여 프로젝트의 배포를 확인하여 Docker파일 및 관련 스크립트가 올바르게 작동하는지 확인합니다.
- 끊어진 링크: 이 테스트는 코드베이스에서 markdown 또는 HTML 파일에 끊어지거나 죽은 링크가 있는지 검사합니다.
- CodeQL: CodeQL은 코드에 대한 의미 분석을 수행하여 잠재적인 보안 취약점을 찾아내고 고품질 코드를 유지하도록 도와주는 GitHub의 도구입니다.
- PyPI 게시: 이 테스트는 프로젝트를 패키징하고 오류 없이 PyPi에 게시할 수 있는지 확인합니다.
CI 결과
아래는 주요 리포지토리에 대한 이러한 CI 테스트의 상태를 보여주는 표입니다:
각 배지에는 해당 CI 테스트의 마지막 실행 상태가 표시됩니다. main
브랜치로 이동합니다. 테스트에 실패하면 배지에 '실패' 상태가 표시되고, 통과하면 '합격' 상태가 표시됩니다.
테스트가 실패하는 것을 발견하면 해당 리포지토리의 GitHub 이슈를 통해 보고해 주시면 큰 도움이 될 것입니다.
성공적인 CI 테스트가 모든 것이 완벽하다는 것을 의미하지는 않습니다. 배포하거나 변경 사항을 병합하기 전에 항상 코드를 수동으로 검토하는 것이 좋습니다.
코드 적용 범위
코드 커버리지는 테스트가 실행될 때 실행되는 코드베이스의 비율을 나타내는 메트릭입니다. 테스트가 코드를 얼마나 잘 실행하는지에 대한 인사이트를 제공하며 애플리케이션에서 테스트되지 않은 부분을 식별하는 데 중요할 수 있습니다. 코드 커버리지 비율이 높을수록 버그 발생 가능성이 낮은 경우가 많습니다. 하지만 코드 커버리지가 결함의 부재를 보장하지는 않는다는 점을 이해해야 합니다. 단지 코드의 어느 부분이 테스트에 의해 실행되었는지를 나타낼 뿐입니다.
codecov.io와 통합
Ultralytics 에서 코드 커버리지를 측정하고 시각화할 수 있는 인기 있는 온라인 플랫폼인 codecov.io와 리포지토리를 통합했습니다. Codecov는 자세한 인사이트, 커밋 간의 커버리지 비교, 코드에 직접 시각적 오버레이를 제공하여 어떤 줄이 커버되었는지 알려줍니다.
코데코브와의 통합을 통해 오류가 발생하기 쉽거나 추가 테스트가 필요한 영역에 집중하여 코드의 품질을 유지하고 개선하는 것을 목표로 합니다.
커버리지 결과
코드 커버리지 상태를 빠르게 파악하려면 ultralytics
python 패키지에는 배지와 선버스트 비주얼이 포함되어 있습니다. ultralytics
커버리지 결과. 이 이미지는 테스트가 커버하는 코드의 비율을 보여 주며, 테스트 노력을 한눈에 파악할 수 있는 지표를 제공합니다. 자세한 내용은 다음을 참조하세요. https://codecov.io/github/ultralytics/ultralytics.
리포지토리 | 코드 적용 범위 |
---|---|
ultralytics |
아래 해바라기 그래픽에서 가장 안쪽 원은 전체 프로젝트이고, 가운데에서 멀어질수록 폴더, 그리고 마지막으로 단일 파일입니다. 각 슬라이스의 크기와 색상은 각각 명령문의 수와 범위를 나타냅니다.
자주 묻는 질문
Ultralytics 에서 지속적 통합(CI)이란 무엇인가요?
Ultralytics 의 지속적 통합(CI)은 고품질 표준을 보장하기 위해 코드 변경 사항을 자동으로 통합하고 테스트하는 것을 포함합니다. 저희의 CI 설정에는 단위 테스트 실행 , 린팅 검사, 종합 테스트가 포함됩니다. 또한, Docker 배포, 깨진 링크 검사, 보안 취약점에 대한 CodeQL 분석, 소프트웨어 패키징 및 배포를 위한 PyPI 퍼블리싱을 수행합니다.
Ultralytics 에서는 문서와 코드에서 끊어진 링크를 어떻게 확인하나요?
Ultralytics 는 특정 CI 작업을 사용하여 markdown 및 HTML 파일 내에서 끊어진 링크를 확인합니다. 이를 통해 죽은 링크나 끊어진 링크를 스캔하고 식별하여 사용자가 항상 정확한 라이브 리소스에 액세스할 수 있도록 함으로써 문서의 무결성을 유지하는 데 도움이 됩니다.
CodeQL 분석이 Ultralytics' 코드베이스에 중요한 이유는 무엇인가요?
CodeQL 분석은 시맨틱 코드 분석을 수행하여 잠재적인 보안 취약점을 찾아내고 고품질 표준을 유지하기 때문에 Ultralytics 매우 중요합니다. CodeQL을 사용하면 코드의 위험을 사전에 식별하고 완화하여 강력하고 안전한 소프트웨어 솔루션을 제공할 수 있습니다.
Ultralytics 배포에 Docker를 어떻게 활용하나요?
Ultralytics 는 전용 CI 작업을 통해 프로젝트 배포를 검증하기 위해 Docker를 사용합니다. 이 프로세스를 통해 Docker파일과 관련 스크립트가 올바르게 작동하는지 확인하여 확장 가능하고 안정적인 AI 솔루션에 필수적인 일관되고 재현 가능한 배포 환경을 구축할 수 있습니다.
Ultralytics 에서 자동화된 PyPI 퍼블리싱의 역할은 무엇인가요?
자동화된 PyPI 게시를 통해 프로젝트를 오류 없이 패키징하고 게시할 수 있습니다. 이 단계는 사용자가 PyPI(Python 패키지 색인)를 통해 쉽게 도구를 설치하고 사용할 수 있도록 하는 Ultralytics Python 패키지를 배포하는 데 필수적인 단계입니다.
Ultralytics 코드 커버리지를 어떻게 측정하며 왜 중요한가요?
Ultralytics 는 Codecov와 통합하여 코드 커버리지를 측정하여 테스트 중에 코드베이스가 얼마나 실행되는지에 대한 인사이트를 제공합니다. 코드 커버리지가 높으면 테스트가 잘된 코드를 의미하며, 버그가 발생하기 쉬운 테스트되지 않은 영역을 발견하는 데 도움이 됩니다. 자세한 코드 커버리지 메트릭은 주요 리포지토리에 표시되는 배지 또는 Codecov에서 직접 살펴볼 수 있습니다.