docker 컨테이너 내에서 실행 된 Junit의 결과를 CircleCI에 반영

4479 단어 CircleCIJUnit도커

환경


  • Circle CI 2.0
  • Circle CI 이미지 "docker : 17.05.0-ce-git"

  • 하고 싶은 일



    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
    

    실행 결과

    좋은 웹페이지 즐겨찾기