diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index c3cb1d89769..ed11aea97cc 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: @@ -374,6 +386,8 @@ jobs: FULL_BUILD_DISABLED: true JEST_TEST_PATTERN: packages/cactus-cmd-api-server/src/test/typescript/(unit|integration|benchmark)/.*/*.test.ts JEST_TEST_RUNNER_DISABLED: false + JEST_TEST_COVERAGE_PATH: ./code-coverage-ts/cactus-cmd-api-server + JEST_TEST_CODE_COVERAGE_DISABLED: false TAPE_TEST_PATTERN: >- --files={./packages/cactus-cmd-api-server/src/test/typescript/integration/plugin-import-from-github.test.ts,./packages/cactus-cmd-api-server/src/test/typescript/integration/plugin-import-without-install.test.ts,./packages/cactus-cmd-api-server/src/test/typescript/integration/remote-plugin-imports.test.ts,./packages/cactus-cmd-api-server/src/test/typescript/unit/config/self-signed-certificate-generator/certificates-work-for-mutual-tls.test.ts,./packages/cactus-cmd-api-server/src/test/typescript/unit/config/self-signed-certificate-generator/generates-working-certificates.test.ts,./packages/cactus-cmd-api-server/src/test/typescript/unit/grpc-js-proto-loader-client-healthcheck.test.ts,./packages/cactus-cmd-api-server/src/test/typescript/unit/grpc-proto-gen-ts-client-healthcheck.test.ts,./packages/cactus-cmd-api-server/src/test/typescript/unit/grpc-proto-gen-ts-client-m-tls-enabled.test.ts,./packages/cactus-cmd-api-server/src/test/typescript/unit/plugins/install-basic-plugin-consortium-manual.test.ts,./packages/cactus-cmd-api-server/src/test/typescript/unit/plugins/install-basic-plugin-keychain-memory.test.ts,./packages/cactus-cmd-api-server/src/test/typescript/unit/plugins/install-basic-plugin-ledger-connector-fabric-0-7-0.test.ts,./packages/cactus-cmd-api-server/src/test/typescript/unit/plugins/install-basic-plugin-ledger-connector-quorum-0-7-0.test.ts} TAPE_TEST_RUNNER_DISABLED: false @@ -427,12 +441,23 @@ jobs: fail-on-alert: true alert-comment-cc-users: '@petermetz' + - name: Merge coverage reports + run: npx istanbul-merge --out coverage.json ./code-coverage-ts/cactus-cmd-api-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-api-server + cactus-cmd-socketio-server: continue-on-error: false env: 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 +479,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 +495,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 +518,23 @@ 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 + 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 +554,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 +591,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 +629,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 +666,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 +1873,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 +2407,47 @@ jobs: ignore-unfixed: true vuln-type: 'os,library' severity: 'CRITICAL,HIGH' + generate_coverage_report: + runs-on: ubuntu-22.04 + 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 ./downloaded-reports/code-coverage-ts/*/coverage-final.json + + - name: Generate HTML report + run: npx istanbul report --include coverage.json --dir cacti html + + - name: Output text report + run: npx istanbul report --include coverage.json --dir cacti text + + name: Cactus_CI 'on': pull_request: 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