chore(deps): bump actions/checkout from 4 to 5 #22
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Test and Lint | |
on: | |
push: | |
branches: | |
- main | |
pull_request: | |
branches: | |
- main | |
permissions: | |
contents: read | |
jobs: | |
lint: | |
name: Lint | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@v5 | |
- name: Setup Node.js | |
uses: actions/setup-node@v4 | |
with: | |
node-version: 20 | |
cache: 'npm' | |
- name: Install dependencies | |
run: npm ci | |
- name: Run linter | |
run: npm run lint | |
test: | |
name: Test (Node ${{ matrix.node-version }} on ${{ matrix.os }}) | |
runs-on: ${{ matrix.os }} | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [ubuntu-latest, windows-latest, macos-latest] | |
node-version: [20.x, 22.x] | |
exclude: | |
# Exclude some combinations to save CI time | |
- os: windows-latest | |
node-version: 22.x | |
- os: macos-latest | |
node-version: 22.x | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@v5 | |
- name: Setup Node.js ${{ matrix.node-version }} | |
uses: actions/setup-node@v4 | |
with: | |
node-version: ${{ matrix.node-version }} | |
cache: 'npm' | |
- name: Install dependencies | |
run: npm ci | |
- name: Run tests with coverage | |
run: npm run test:coverage | |
- name: Upload coverage to Codecov | |
if: matrix.os == 'ubuntu-latest' && matrix.node-version == '20.x' | |
uses: codecov/codecov-action@v4 | |
with: | |
token: ${{ secrets.CODECOV_TOKEN }} | |
files: ./coverage/lcov.info | |
fail_ci_if_error: false | |
verbose: true | |
build: | |
name: Build | |
runs-on: ubuntu-latest | |
needs: [lint, test] | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@v5 | |
- name: Setup Node.js | |
uses: actions/setup-node@v4 | |
with: | |
node-version: 20 | |
cache: 'npm' | |
- name: Install dependencies | |
run: npm ci | |
- name: Build | |
run: npm run build | |
- name: Verify build succeeded | |
run: | | |
if [ ! -f "dist/index.js" ]; then | |
echo "::error::Build failed - dist/index.js not found" | |
exit 1 | |
fi | |
echo "Build completed successfully" | |
# This job is used as a required check in branch protection rules | |
ci-status: | |
name: CI Status | |
runs-on: ubuntu-latest | |
needs: [lint, test, build] | |
if: always() | |
steps: | |
- name: Check CI status | |
run: | | |
if [[ "${{ needs.lint.result }}" == "failure" || "${{ needs.test.result }}" == "failure" || "${{ needs.build.result }}" == "failure" ]]; then | |
echo "::error::One or more CI jobs failed" | |
exit 1 | |
fi | |
echo "All CI checks passed successfully" |