docker 컨테이너 내에서 실행 된 Junit의 결과를 CircleCI에 반영
환경
하고 싶은 일
Circle CI에서 특정 설정을 구성하면 spte 실행 Junit을 실행 한 결과를 Circle CI 화면에서 볼 수 있습니다.
.circleci/config.yml
에 대한 설명은 h tps : // / rc ぇ시. 이 m / 두 cs / 2.0 / 여기 ct - st - 였어 / # g 등 d ㅇ에 나와 있습니다.steps:
- run:
name: Save test results
command: |
mkdir -p ~/junit/
find . -type f -regex ".*/build/test-results/.*xml" -exec cp {} ~/junit/ \;
when: always
- store_test_results:
path: ~/junit
- store_artifacts:
path: ~/junit
Docker 컨테이너가 아니면 이와 같습니다만, Docker 컨테이너내에서 실행했을 경우는, Junit를 실행한 컨테이너로부터 끌어내야 합니다.
했던 일
Dockerfile.junit
빌드의 편리함으로 Junit 용 Dockerfile을 만들었습니다. 내용은 소스 세트를
COPY
로 컨테이너에 넣고 CMD
에서 gradle 테스트 태스크를 실행합니다.FROM java:8 AS build
RUN mkdir /app
WORKDIR /app
COPY ./ ./
CMD ./gradlew test
.circleci/config.yml
먼저 'name: Build container and run junit'에서 Junit용 컨테이너를 만들고 실행합니다. 실행할 때
--name
선택적으로 컨테이너 이름을 지정합니다.다음에, 「name: Save junit results」로 실행한 컨테이너로부터 이미지를 작성합니다. 작성한 이미지를 사용해 공식 사이트에 있는
find . -type f -regex ".*/build/test-results/.*xml"
에서 메타데이터의 xml 파일을 찾아, tar cf -
를 실시하는 것으로, docker 명령의 표준 출력에 tar 형식의 데이터를 출력합니다.호스트 파이프에서
tar xvf -
로 전달하여 tar 형식의 파일을 확장하고 ~/junit
디렉토리에 저장합니다.steps:
- run:
name: Build container and run junit
command: |
docker build -f Dockerfile.junit -t kfc-batch-singleuse-coupon-junit .
docker run --name junit kfc-batch-singleuse-coupon-junit
- run:
name: Save test results from docker container
command: |
mkdir -p ~/junit/
docker commit junit junit-result
docker run --rm junit-result /bin/bash -c 'find . -type f -regex ".*/build/test-results/.*xml" | tar cf - -T - --null ' | tar xvf - -C ~/junit
when: always
- store_test_results:
path: ~/junit
- store_artifacts:
path: ~/junit
실행 결과
Reference
이 문제에 관하여(docker 컨테이너 내에서 실행 된 Junit의 결과를 CircleCI에 반영), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/akym03/items/eba73f82fca1f4ce95da텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)