From 4a24e4682531b14d5403912ab12ab14ec06f926c Mon Sep 17 00:00:00 2001 From: Avan Date: Thu, 15 Aug 2024 13:53:48 +0800 Subject: [PATCH] test: use codecov/codecov-action (#16) Co-authored-by: afc163 --- .github/workflows/ci.yml | 117 ++++++++++++++++++++++++++++++++++----- 1 file changed, 102 insertions(+), 15 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index b8eec25..60a12d2 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -1,28 +1,115 @@ -name: Node.js CI +name: CI -on: [push, pull_request] +on: ['push', 'pull_request'] jobs: - build: + setup: runs-on: ubuntu-latest steps: - - name: Checkout + - name: checkout uses: actions/checkout@v4 - - name: Install Node.js - uses: actions/setup-node@v3 + + - uses: actions/setup-node@v4 + with: + node-version: '20' + + - name: cache package-lock.json + uses: actions/cache@v4 + with: + path: package-temp-dir + key: lock-${{ github.sha }} + + - name: create package-lock.json + run: npm i --package-lock-only --ignore-scripts + + - name: hack for singe file + run: | + if [ ! -d "package-temp-dir" ]; then + mkdir package-temp-dir + fi + cp package-lock.json package-temp-dir + + - name: cache node_modules + id: node_modules_cache_id + uses: actions/cache@v4 + with: + path: node_modules + key: node_modules-${{ hashFiles('**/package-temp-dir/package-lock.json') }} + + - name: install + if: steps.node_modules_cache_id.outputs.cache-hit != 'true' + run: npm ci + + lint: + runs-on: ubuntu-latest + steps: + - name: checkout + uses: actions/checkout@v4 + + - name: restore cache from package-lock.json + uses: actions/cache@v4 + with: + path: package-temp-dir + key: lock-${{ github.sha }} + + - name: restore cache from node_modules + uses: actions/cache@v4 with: - node-version: 18.x - - name: Install dependencies - run: npm install + path: node_modules + key: node_modules-${{ hashFiles('**/package-temp-dir/package-lock.json') }} + - name: lint run: npm run lint + + needs: setup + + compile: + runs-on: ubuntu-latest + steps: + - name: checkout + uses: actions/checkout@v4 + + - name: restore cache from package-lock.json + uses: actions/cache@v4 + with: + path: package-temp-dir + key: lock-${{ github.sha }} + + - name: restore cache from node_modules + uses: actions/cache@v4 + with: + path: node_modules + key: node_modules-${{ hashFiles('**/package-temp-dir/package-lock.json') }} + - name: compile run: npm run tsc && npm run compile - - name: test - run: npm run coverage - - name: Upload coverage reports to Codecov + + needs: setup + + coverage: + runs-on: ubuntu-latest + steps: + - name: checkout + uses: actions/checkout@v4 + + - name: restore cache from package-lock.json + uses: actions/cache@v4 + with: + path: package-temp-dir + key: lock-${{ github.sha }} + + - name: restore cache from node_modules + uses: actions/cache@v4 + with: + path: node_modules + key: node_modules-${{ hashFiles('**/package-temp-dir/package-lock.json') }} + + - name: coverage + run: npm test -- --coverage + + - name: Upload coverage to Codecov uses: codecov/codecov-action@v4 with: - fail_ci_if_error: true - env: - CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} + token: ${{ secrets.CODECOV_TOKEN }} + + needs: setup