From 6afc0c9a603d5534db199f384de837d7b3cf52d7 Mon Sep 17 00:00:00 2001 From: Kazuki Yamada Date: Fri, 11 Oct 2024 17:22:17 +0900 Subject: [PATCH] ci(test): Refactor CI workflow and separate lint jobs --- .github/workflows/{test.yml => ci.yml} | 124 +++++++++++++------------ package.json | 5 +- 2 files changed, 70 insertions(+), 59 deletions(-) rename .github/workflows/{test.yml => ci.yml} (56%) diff --git a/.github/workflows/test.yml b/.github/workflows/ci.yml similarity index 56% rename from .github/workflows/test.yml rename to .github/workflows/ci.yml index 6f7842d5..15cd8cc3 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/ci.yml @@ -1,4 +1,4 @@ -name: Test +name: CI on: push: @@ -8,27 +8,73 @@ on: workflow_dispatch: jobs: - lint: + lint-biome: + name: Lint Biome runs-on: ubuntu-24.04 timeout-minutes: 10 steps: - - name: Checkout code - uses: actions/checkout@v4 + - uses: actions/checkout@v4 + - uses: actions/setup-node@v4 + with: + node-version-file: .tool-versions + - run: npm ci + - run: npm run lint-biome && git diff --exit-code - - name: Setup node - uses: actions/setup-node@v4 + lint-ts: + name: Lint TypeScript + runs-on: ubuntu-24.04 + timeout-minutes: 10 + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-node@v4 with: node-version-file: .tool-versions - cache: npm + - run: npm ci + - run: npm run lint-ts - - name: Clean install dependencies - run: npm ci + lint-secretlint: + name: Lint Secretlint + runs-on: ubuntu-24.04 + timeout-minutes: 10 + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-node@v4 + with: + node-version-file: .tool-versions + - run: npm ci + - run: npm run lint-secretlint + + lint-renovate-config: + name: Lint Renovate config + runs-on: ubuntu-24.04 + timeout-minutes: 10 + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-node@v4 + with: + node-version-file: .tool-versions + - name: Validate Renovate config + run: npx --yes --package renovate -- renovate-config-validator --strict + + check-npm-audit: + name: Check npm audit + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-node@v4 + with: + node-version-file: .tool-versions + - run: npm audit - - name: Lint - run: npm run lint && git diff --exit-code + check-typos: + name: Check typos + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: crate-ci/typos@v1 test: - needs: lint + name: Test strategy: matrix: os: [ubuntu-latest, windows-latest, macos-latest] @@ -40,39 +86,29 @@ jobs: uses: actions/setup-node@v4 with: node-version: ${{ matrix.node-version }} - - - name: Clean install dependencies - run: npm ci - + - run: npm ci - run: npm run test --reporter=verbose env: CI_OS: ${{ runner.os }} - coverage: + test-coverage: + name: Test coverage needs: test runs-on: ubuntu-latest steps: - - name: Checkout code - uses: actions/checkout@v4 - - - name: Setup node - uses: actions/setup-node@v4 + - uses: actions/checkout@v4 + - uses: actions/setup-node@v4 with: node-version-file: .tool-versions cache: npm - - - name: Clean install dependencies - run: npm ci - + - run: npm ci - run: npm run test-coverage -- --reporter=verbose env: CI_OS: ${{ runner.os }} - - uses: actions/upload-artifact@v4 with: name: test-coverage path: coverage/ - - uses: codecov/codecov-action@v4 with: fail_ci_if_error: true @@ -81,7 +117,7 @@ jobs: CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} build-and-run: - needs: lint + name: Build and run strategy: matrix: os: [ubuntu-latest, windows-latest, macos-latest] @@ -93,39 +129,11 @@ jobs: uses: actions/setup-node@v4 with: node-version: ${{ matrix.node-version }} - - - name: Clean install dependencies - run: npm ci - + - run: npm ci - run: npm run build - - run: node bin/repopack - - name: Upload build artifact uses: actions/upload-artifact@v4 with: name: repopack-output-${{ matrix.os }}-${{ matrix.node-version }}.txt path: repopack-output.txt - - security: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - name: Use Node.js - uses: actions/setup-node@v4 - with: - node-version-file: .tool-versions - - run: npm ci - - name: Run npm audit - run: npm audit - - typos: - name: "Check for typos" - runs-on: "ubuntu-latest" - - steps: - - name: "Checkout" - uses: actions/checkout@v4 - - - name: "Check for typos" - uses: "crate-ci/typos@v1.25.0" diff --git a/package.json b/package.json index fbb336b2..96a07eea 100644 --- a/package.json +++ b/package.json @@ -13,7 +13,10 @@ "scripts": { "clean": "rimraf lib", "build": "npm run clean && tsc -p tsconfig.build.json --sourceMap --declaration", - "lint": "biome check --write && tsc --noEmit && secretlint **/*", + "lint": "npm run lint-biome && npm run lint-ts && npm run lint-secretlint", + "lint-biome": "biome check --write", + "lint-ts": "tsc --noEmit", + "lint-secretlint": "secretlint '**/*'", "test": "vitest", "test-coverage": "vitest run --coverage", "cli-run": "npm run build && node --trace-warnings bin/repopack",