From e620ced32567e07aead73d0e625b5898d3d270a1 Mon Sep 17 00:00:00 2001 From: aldousalvarez Date: Mon, 29 Apr 2024 15:27:08 +0800 Subject: [PATCH] testing code coverage logic on ci --- .github/workflows/ci.yaml | 126 ++++++++++++++++++++ packages/cactus-cmd-api-server/package.json | 1 + tools/ci.sh | 2 + 3 files changed, 129 insertions(+) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index c3cb1d89769..1315b6190dc 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -342,6 +342,8 @@ jobs: FULL_BUILD_DISABLED: true JEST_TEST_PATTERN: packages/cactus-api-client/src/test/typescript/(unit|integration|benchmark)/.*/*.test.ts JEST_TEST_RUNNER_DISABLED: false + JEST_TEST_COVERAGE_PATH: ./code-coverage-ts/cactus-api-client + JEST_TEST_CODE_COVERAGE_DISABLED: false TAPE_TEST_PATTERN: ./packages/cactus-api-client/src/test/typescript/integration/default-consortium-provider.test.ts TAPE_TEST_RUNNER_DISABLED: false needs: build-dev @@ -363,6 +365,16 @@ jobs: ${{ runner.os }}-yarn-${{ hashFiles('./yarn.lock') }} - run: ./tools/ci.sh + + - name: Merge coverage reports + run: npx istanbul-merge --out coverage.json ./code-coverage-ts/cactus-api-client/coverage-final.json + + - name: Upload coverage reports as artifacts + uses: actions/upload-artifact@v2 + with: + name: coverage-reports + path: ./code-coverage-ts/cactus-api-client + cactus-cmd-api-server: continue-on-error: false needs: @@ -433,6 +445,8 @@ jobs: FULL_BUILD_DISABLED: true JEST_TEST_PATTERN: packages/cactus-cmd-socketio-server/src/test/typescript/(unit|integration|benchmark)/.*/*.test.ts JEST_TEST_RUNNER_DISABLED: false + JEST_TEST_COVERAGE_PATH: ./code-coverage-ts/cactus-cmd-socketio-server + JEST_TEST_CODE_COVERAGE_DISABLED: false TAPE_TEST_RUNNER_DISABLED: true needs: build-dev runs-on: ubuntu-22.04 @@ -454,6 +468,15 @@ jobs: - run: ./tools/ci.sh + - name: Merge coverage reports + run: npx istanbul-merge --out coverage.json ./code-coverage-ts/cactus-cmd-socketio-server/coverage-final.json + + - name: Upload coverage reports as artifacts + uses: actions/upload-artifact@v2 + with: + name: coverage-reports + path: ./code-coverage-ts/cactus-cmd-socketio-server + cactus-common: continue-on-error: false env: @@ -461,6 +484,8 @@ jobs: FULL_BUILD_DISABLED: true JEST_TEST_PATTERN: packages/cactus-common/src/test/typescript/(unit|integration|benchmark)/.*/*.test.ts JEST_TEST_RUNNER_DISABLED: false + JEST_TEST_COVERAGE_PATH: ./code-coverage-ts/cactus-common + JEST_TEST_CODE_COVERAGE_DISABLED: false TAPE_TEST_PATTERN: '--files={./packages/cactus-common/src/test/typescript/unit/key-converter.test.ts,./packages/cactus-common/src/test/typescript/unit/logging/logger.test.ts}' TAPE_TEST_RUNNER_DISABLED: false needs: build-dev @@ -482,12 +507,24 @@ jobs: ${{ runner.os }}-yarn-${{ hashFiles('./yarn.lock') }} - run: ./tools/ci.sh + + - name: Merge coverage reports + run: npx istanbul-merge --out coverage.json ./code-coverage-ts/cactus-common/coverage-final.json + + - name: Upload coverage reports as artifacts + uses: actions/upload-artifact@v2 + with: + name: coverage-reports + path: ./code-coverage-ts/cactus-common + cactus-core: continue-on-error: false env: FULL_BUILD_DISABLED: true JEST_TEST_PATTERN: packages/cactus-core/src/test/typescript/(unit|integration|benchmark)/.*/*.test.ts JEST_TEST_RUNNER_DISABLED: false + JEST_TEST_COVERAGE_PATH: ./code-coverage-ts/cactus-core + JEST_TEST_CODE_COVERAGE_DISABLED: false TAPE_TEST_RUNNER_DISABLED: true needs: build-dev runs-on: ubuntu-22.04 @@ -507,12 +544,24 @@ jobs: restore-keys: | ${{ runner.os }}-yarn-${{ hashFiles('./yarn.lock') }} - run: ./tools/ci.sh + + - name: Merge coverage reports + run: npx istanbul-merge --out coverage.json ./code-coverage-ts/cactus-core/coverage-final.json + + - name: Upload coverage reports as artifacts + uses: actions/upload-artifact@v2 + with: + name: coverage-reports + path: ./code-coverage-ts/cactus-core + cactus-core-api: continue-on-error: false env: FULL_BUILD_DISABLED: true JEST_TEST_PATTERN: packages/cactus-core-api/src/test/typescript/(unit|integration|benchmark)/.*/*.test.ts JEST_TEST_RUNNER_DISABLED: false + JEST_TEST_COVERAGE_PATH: ./code-coverage-ts/cactus-core-api + JEST_TEST_CODE_COVERAGE_DISABLED: false TAPE_TEST_RUNNER_DISABLED: true needs: build-dev runs-on: ubuntu-22.04 @@ -532,12 +581,24 @@ jobs: restore-keys: | ${{ runner.os }}-yarn-${{ hashFiles('./yarn.lock') }} - run: ./tools/ci.sh + + - name: Merge coverage reports + run: npx istanbul-merge --out coverage.json ./code-coverage-ts/cactus-core-api/coverage-final.json + + - name: Upload coverage reports as artifacts + uses: actions/upload-artifact@v2 + with: + name: coverage-reports + path: ./code-coverage-ts/cactus-core-api + cactus-example-carbon-accounting-backend: continue-on-error: false env: FULL_BUILD_DISABLED: true JEST_TEST_PATTERN: examples/cactus-example-carbon-accounting-backend/src/test/typescript/(unit|integration|benchmark)/.*/*.test.ts JEST_TEST_RUNNER_DISABLED: false + JEST_TEST_COVERAGE_PATH: ./code-coverage-ts/cactus-example-carbon-accounting-backend + JEST_TEST_CODE_COVERAGE_DISABLED: false TAPE_TEST_PATTERN: ./examples/cactus-example-carbon-accounting-backend/src/test/typescript/integration/admin-enroll-v1-endpoint.test.ts TAPE_TEST_RUNNER_DISABLED: false needs: build-dev @@ -558,12 +619,24 @@ jobs: restore-keys: | ${{ runner.os }}-yarn-${{ hashFiles('./yarn.lock') }} - run: ./tools/ci.sh + + - name: Merge coverage reports + run: npx istanbul-merge --out coverage.json ./code-coverage-ts/cactus-example-carbon-accounting-backend/coverage-final.json + + - name: Upload coverage reports as artifacts + uses: actions/upload-artifact@v2 + with: + name: coverage-reports + path: ./code-coverage-ts/cactus-example-carbon-accounting-backend + cactus-example-carbon-accounting-business-logic-plugin: continue-on-error: false env: FULL_BUILD_DISABLED: true JEST_TEST_PATTERN: examples/cactus-example-carbon-accounting-business-logic-plugin/src/test/typescript/(unit|integration|benchmark)/.*/*.test.ts JEST_TEST_RUNNER_DISABLED: false + JEST_TEST_COVERAGE_PATH: ./code-coverage-ts/cactus-example-carbon-accounting-business-logic-plugin + JEST_TEST_CODE_COVERAGE_DISABLED: false TAPE_TEST_RUNNER_DISABLED: true needs: build-dev runs-on: ubuntu-22.04 @@ -583,6 +656,16 @@ jobs: restore-keys: | ${{ runner.os }}-yarn-${{ hashFiles('./yarn.lock') }} - run: ./tools/ci.sh + + - name: Merge coverage reports + run: npx istanbul-merge --out coverage.json ./code-coverage-ts/cactus-example-carbon-accounting-business-logic-plugin/coverage-final.json + + - name: Upload coverage reports as artifacts + uses: actions/upload-artifact@v2 + with: + name: coverage-reports + path: ./code-coverage-ts/cactus-example-carbon-accounting-business-logic-plugin + cactus-example-carbon-accounting-frontend: continue-on-error: false env: @@ -1780,6 +1863,7 @@ jobs: restore-keys: | ${{ runner.os }}-yarn-${{ hashFiles('./yarn.lock') }} - run: ./tools/ci.sh + cactus-test-cmd-api-server: continue-on-error: false needs: @@ -2313,6 +2397,48 @@ jobs: ignore-unfixed: true vuln-type: 'os,library' severity: 'CRITICAL,HIGH' + generate_coverage_report: + runs-on: ubuntu-22.04 + needs: build-dev + steps: + - name: Use Node.js ${{ env.NODEJS_VERSION }} + uses: actions/setup-node@v4.0.2 + with: + node-version: ${{ env.NODEJS_VERSION }} + + - uses: actions/checkout@v4.1.1 + + - id: yarn-cache + name: Restore Yarn Cache + uses: actions/cache@v4.0.1 + with: + key: ${{ runner.os }}-yarn-${{ hashFiles('./yarn.lock') }} + path: ./.yarn/ + restore-keys: | + ${{ runner.os }}-yarn-${{ hashFiles('./yarn.lock') }} + + - name: Install istanbul-merge + run: yarn add istanbul-merge --dev + + - name: Run Configure + run: npm run configure + + - name: Download coverage reports + uses: actions/download-artifact@v2 + with: + name: coverage-reports + path: ./downloaded-reports + + - name: Merge coverage reports + run: npx istanbul-merge --out coverage.json ./code-coverage-ts/*/coverage-final.json + + - name: Generate HTML report + run: npx nyc report --include coverage.json --dir cacti html + + - name: Output text report + run: npx nyc report --include coverage.json --dir cacti text + + name: Cactus_CI 'on': pull_request: diff --git a/packages/cactus-cmd-api-server/package.json b/packages/cactus-cmd-api-server/package.json index 53ca83f4fef..23ab9bccc0f 100644 --- a/packages/cactus-cmd-api-server/package.json +++ b/packages/cactus-cmd-api-server/package.json @@ -1,5 +1,6 @@ { "name": "@hyperledger/cactus-cmd-api-server", + "version": "2.0.0-alpha.2", "description": "API server that combines and exposes all the functionality of a Cactus deployment through a unified REST API interface.", "keywords": [ diff --git a/tools/ci.sh b/tools/ci.sh index 305f8d424c4..e012ecebc8e 100755 --- a/tools/ci.sh +++ b/tools/ci.sh @@ -146,6 +146,8 @@ function mainTask() if [ "${JEST_TEST_RUNNER_DISABLED:-false}" = "true" ]; then echo "$(date +%FT%T%z) [CI] Jest test runner disabled. Skipping..." + elif [ "${JEST_TEST_CODE_COVERAGE_DISABLED:-true}" = "false" ]; then + yarn test:jest:all $JEST_TEST_PATTERN --coverage --coverageDirectory=$JEST_TEST_COVERAGE_PATH else yarn test:jest:all $JEST_TEST_PATTERN fi