저장소 자동 테스트

저장소 자동 테스트 (Automated repository tests)

Docker Hub가 소스 코드 저장소의 변경 사항을 컨테이너로 자동 테스트하고, 지속적 통합 테스트 서비스로 활용하는 방법을 배워볼게요.

출처: 문서

본문

경고: Docker Hub Automated Builds는 더 이상 사용되지 않는(deprecated) 기능이에요. 2027년 4월 1일에 완전히 퇴역할 예정이에요. 지원되는 CI/CD 워크플로우로 이동하려면 마이그레이션 가이드를 확인해요.

참고: 자동 빌드에는 Docker Pro, Team, Business 구독이 필요해요.

Docker Hub는 컨테이너를 사용해 소스 코드 저장소의 변경 사항을 자동으로 테스트할 수 있어요. 소스 코드 저장소에 대한 각 풀 리퀘스트에 대해 테스트를 실행하는 지속적 통합 테스트 서비스를 만들기 위해, 어떤 Docker Hub 저장소에서든 Autotest를 활성화할 수 있어요.

Autotest를 활성화하면 테스트용 이미지를 빌드하지만, 만들어진 이미지를 Docker 저장소로 자동 푸시하지는 않아요. 만들어진 이미지를 Docker Hub 저장소에 푸시하고 싶다면 Automated Builds 를 활성화해요.

자동 테스트 파일 설정

자동 테스트를 설정하려면 실행할 테스트를 나열하는 sut 서비스를 정의한 docker-compose.test.yml 파일을 만들어요. docker-compose.test.yml 파일은 이미지를 빌드하는 데 사용하는 Dockerfile이 들어 있는 같은 디렉터리에 위치해야 해요. 예를 들어:

services:
  sut:
    build: .
    command: run_tests.sh

위 예시는 저장소를 빌드하고, 만들어진 이미지를 사용하는 컨테이너 안에서 run_tests.sh 파일을 실행해요. 이 파일에서 원하는 만큼 연결된(linked) 서비스를 정의할 수 있어요. 유일한 요구사항은 sut가 정의되어야 한다는 거예요. sut의 리턴 코드가 테스트 통과 여부를 결정해요. sut 서비스가 0을 반환하면 테스트가 통과하고, 그렇지 않으면 실패해요.

참고: sut 서비스와 depends_on에 나열된 다른 모든 서비스만 시작돼요. 다른 서비스의 변경을 폴링하는 서비스가 있다면 모든 서비스가 시작되도록 depends_on 목록에 폴링 서비스를 꼭 포함시켜요.

필요하다면 docker-compose.test.yml 파일을 두 개 이상 정의할 수 있어요. .test.yml로 끝나는 모든 파일이 테스트에 사용되고, 테스트는 순차적으로 실행돼요. 커스텀 빌드 훅을 사용해 테스트 동작을 더 커스터마이즈할 수도 있어요.

참고: 자동 빌드를 활성화하면 test.yml 파일에 정의된 테스트도 함께 실행돼요.

저장소에서 자동 테스트 활성화

소스 코드 저장소에서 테스트를 활성화하려면 먼저 Docker Hub에 연결된 빌드 저장소(build-repository)를 만들어야 해요. Autotest 설정은 자동 빌드 와 같은 페이지에서 구성하지만, autotest를 사용하는 데 autobuild를 활성화할 필요는 없어요. Autobuild는 브랜치나 태그별로 활성화되며, 전혀 활성화하지 않아도 돼요. Autotest 설정과 무관하게 autobuild를 사용하도록 구성된 브랜치만 Docker 저장소로 이미지를 푸시해요.

  1. Docker Hub 에 로그인하고 My Hub > Repositories 를 선택해요.

  2. Autotest를 활성화하려는 저장소를 선택해요.

  3. 저장소 보기에서 Builds 탭을 선택해요.

  4. Configure automated builds 를 선택해요.

  5. Automated builds 문서에 설명된 대로 자동 빌드 설정을 구성해요. 최소한 다음을 구성해야 해요:

    • 소스 코드 저장소
    • 빌드 위치
    • 하나 이상의 빌드 규칙
  6. Autotest 옵션을 선택해요. 사용 가능한 옵션은 다음과 같아요:

    • Off: 추가 테스트 빌드가 없어요. 테스트는 자동 빌드의 일부로 구성된 경우에만 실행돼요.
    • Internal pull requests: 빌드 규칙과 일치하는 브랜치에 대한 풀 리퀘스트에 대해 테스트 빌드를 실행하되, 풀 리퀘스트가 같은 소스 저장소에서 온 경우에만 실행돼요.
    • Internal and external pull requests: 빌드 규칙과 일치하는 브랜치에 대한 풀 리퀘스트에 대해 테스트 빌드를 실행하되, 외부 소스 저장소에서 시작된 경우도 포함해요.

    중요: 보안상의 이유로 공개 저장소에 대한 외부 풀 리퀘스트의 autotest는 제한돼요. 비공개 이미지는 풀되지 않고 Docker Hub에 정의된 환경 변수도 사용할 수 없어요. 자동 빌드는 평소처럼 계속 동작해요.

  7. 설정을 저장하려면 Save 를 선택하고, 저장하고 초기 테스트를 실행하려면 Save and build 를 선택해요.

테스트 결과 확인

저장소의 세부 정보 페이지에서 Timeline 을 선택해요. 이 탭에서 저장소에 대한 보류 중, 진행 중, 성공, 실패한 빌드와 테스트 실행을 모두 볼 수 있어요. 타임라인 항목을 선택하면 각 테스트 실행의 로그를 볼 수 있어요.

더 알아보기 (Learn more)