diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 66acfb7..caab773 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -1,98 +1,121 @@ -name: ci +name: CI on: push: branches: - - main - - master - - next - - 'v*' + - main + - master + - next + - "v*" paths-ignore: - - 'docs/**' - - '*.md' + - "docs/**" + - "*.md" pull_request: paths-ignore: - - 'docs/**' - - '*.md' - -# This allows a subsequently queued workflow run to interrupt previous runs -concurrency: - group: "${{ github.workflow }} @ ${{ github.event.pull_request.head.label || github.head_ref || github.ref }}" - cancel-in-progress: true + - "docs/**" + - "*.md" jobs: dependency-review: - name: Dependency Review - if: github.event_name == 'pull_request' - runs-on: ubuntu-latest - permissions: - contents: read - steps: - - name: Check out repo - uses: actions/checkout@v4 - with: - persist-credentials: false - - - name: Dependency review - uses: actions/dependency-review-action@v4 - - build: - runs-on: ${{ matrix.os }} + name: Dependency Review + if: github.event_name == 'pull_request' + runs-on: ubuntu-latest + permissions: + contents: read + steps: + - name: Check out repo + uses: actions/checkout@v4 + with: + persist-credentials: false + - name: Dependency review + uses: actions/dependency-review-action@v4 + + lint: + name: Lint Code + runs-on: ubuntu-latest permissions: contents: read + steps: + - name: Check out repo + uses: actions/checkout@v4 + with: + persist-credentials: false + - name: Setup Node + uses: actions/setup-node@v4 + with: + node-version: lts/* + + - name: Install dependencies + run: npm i --ignore-scripts + + - name: Lint code + run: npm run lint + + test: + name: Test + runs-on: ubuntu-latest + permissions: + contents: read strategy: matrix: node-version: [14, 16, 18, 20] - os: [macos-latest, ubuntu-latest, windows-latest] - exclude: - - os: windows-latest - node-version: 14 - steps: - - uses: actions/checkout@v4 + - name: Check out repo + uses: actions/checkout@v4 with: persist-credentials: false - - name: Use Node.js ${{ matrix.node-version }} + + - name: Setup Node ${{ matrix.node-version }} uses: actions/setup-node@v4 with: node-version: ${{ matrix.node-version }} - - run: | - npm install --ignore-scripts - npm run build --if-present - npm run test - - name: Coveralls Parallel - uses: coverallsapp/github-action@v2.2.3 - with: - github-token: ${{ secrets.GITHUB_TOKEN }} - parallel: true - flag-name: run-${{ matrix.node-version }}-${{ matrix.os }} - coverage: - name: Aggregate Coverage Calculations - needs: build + - name: Upgrade npm + if: ${{ success() && matrix.node-version == '6' }} + run: npm i npm@6.13.4 -g + + - name: Install dependencies + run: npm i --ignore-scripts + + - name: Run tests + run: npm run test:unit + + typescript: + name: Test TypeScript runs-on: ubuntu-latest permissions: contents: read steps: - - name: Coveralls Finished - uses: coverallsapp/github-action@v2.2.3 + - name: Check out repo + uses: actions/checkout@v4 with: - github-token: ${{ secrets.GITHUB_TOKEN }} - parallel-finished: true + persist-credentials: false + + - name: Setup Node + uses: actions/setup-node@v4 + with: + node-version: lts/* + + - name: Install dependencies + run: npm i --ignore-scripts + + - name: tsd + run: npm run test:typescript automerge: - name: Automatically merge Dependabot pull requests + name: Automerge Dependabot PRs if: > - github.event_name == 'pull_request' && - github.event.pull_request.user.login == 'dependabot[bot]' - needs: build - runs-on: ubuntu-latest + github.event_name == 'pull_request' && + github.event.pull_request.user.login == 'dependabot[bot]' + needs: [lint, test, typescript] permissions: pull-requests: write contents: write + runs-on: ubuntu-latest steps: - uses: fastify/github-action-merge-dependabot@v3 with: github-token: ${{ secrets.GITHUB_TOKEN }} + target: major diff --git a/package.json b/package.json index e55459e..d9410a8 100644 --- a/package.json +++ b/package.json @@ -42,18 +42,18 @@ ] }, "devDependencies": { - "@fastify/pre-commit": "^2.0.2", - "ajv": "^8.0.0", + "@fastify/pre-commit": "^2.1.0", + "ajv": "^8.12.0", "ajv-formats": "^3.0.1", - "jest": "^29.0.1", - "jsdoc-to-markdown": "^8.0.0", + "jest": "^29.7.0", + "jsdoc-to-markdown": "^8.0.1", "lodash.merge": "^4.6.2", "snazzy": "^9.0.0", - "standard": "^17.0.0", + "standard": "^17.1.0", "tsd": "^0.31.0" }, "dependencies": { - "@fastify/deepmerge": "^1.1.0" + "@fastify/deepmerge": "^1.3.0" }, "pre-commit": [ "lint",