[CircleCI 2.0][Java][Maven][JUnit] CircleCI 2.0でJUnitのテスト結果を集計する

  • 0
    いいね
  • 0
    コメント

    Javaの自動テスト実施のためにCircleCI 2.0を使ってみたんですが、公式ドキュメントの方法だとmkdirのところでpermission deniedとなってしまったので対応手順をメモ。(たぶんドキュメントのミスか情報不足だと思うんですけど・・・)

    Collecting Test Metadata - CircleCI

    公式ドキュメントの方法
        steps:
          - run: |
              mkdir -p /junit/
              find . -type f -regex ".*/target/surefire-reports/.*xml" -exec cp {} /junit/ \;
          - store_test_results:
              path: /junit
          - store_artifacts:
              path: /junit   
    
    修正した方法(ルートディレクトリからではなく、ワークスペース内のディレクトリ以下に作成)
           - run: |
              mkdir -p ~/repo/junit/
              find . -type f -regex ".*/target/surefire-reports/.*xml" -exec cp {} ~/repo/junit/ \;
    
           - store_test_results:
              path: ~/repo/junit
    
           - store_artifacts:
              path: ~/repo/junit 
    

    1.0のとき$CIRCLE_TEST_REPORTS というのがあってそちらを指定していたんですが、この環境変数は2.0だと削除されている様子です。

    Java 8環境向けの .circleci/config.yml

    テストの集計部分だけだとあれなので、今回検証した設定全文も載せときます。
    (サンプルにMaven向けのテスト集計タスクを追加しただけです)

    # Java Maven CircleCI 2.0 configuration file
    #
    # Check https://circleci.com/docs/2.0/language-java/ for more details
    #
     version: 2
     jobs:
       build:
         docker:
           # specify the version you desire here
           - image: circleci/openjdk:8-jdk
    
           # Specify service dependencies here if necessary
           # CircleCI maintains a library of pre-built images
           # documented at https://circleci.com/docs/2.0/circleci-images/
           # - image: circleci/postgres:9.4
    
         working_directory: ~/repo
    
         environment:
           # Customize the JVM maximum heap limit
           MAVEN_OPTS: -Xmx3200m
    
         steps:
           - checkout
    
           # Download and cache dependencies
           - restore_cache:
               keys:
               - v1-dependencies-{{ checksum "pom.xml" }}
               # fallback to using the latest cache if no exact match is found
               - v1-dependencies-
    
           - run: mvn dependency:go-offline
    
           - save_cache:
               paths:
                 - ~/.m2
               key: v1-dependencies-{{ checksum "pom.xml" }}
    
           # run tests!
           - run: mvn integration-test
    
           - run: |
              mkdir -p ~/repo/junit/
              find . -type f -regex ".*/target/surefire-reports/.*xml" -exec cp {} ~/repo/junit/ \;
    
           - store_test_results:
              path: ~/repo/junit
    
           - store_artifacts:
              path: ~/repo/junit