Skip to content

feat: enhance interactive tools with visual indicators, tour guide, a… #62

feat: enhance interactive tools with visual indicators, tour guide, a…

feat: enhance interactive tools with visual indicators, tour guide, a… #62

Workflow file for this run

name: Enhanced CI
on:
push:
branches: [main, develop, workflow/*, feat/*]
pull_request:
branches: [main, develop, workflow/*]
workflow_dispatch:
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: ${{ github.ref != 'refs/heads/main' }}
permissions:
contents: read
actions: read
security-events: write
checks: write
pull-requests: write
env:
FORCE_COLOR: 1
CI: true
NODE_VERSION: 20
jobs:
lint:
name: Lint
runs-on: ubuntu-latest
timeout-minutes: 10
permissions:
contents: read
checks: write
steps:
- name: Harden runner
uses: step-security/harden-runner@91182cccc01eb5e619899d80e4e971d6181294a7 # v2.10.1
with:
egress-policy: audit
- name: Checkout code
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
- name: Setup Node.js
uses: actions/setup-node@1e60f620b9541d16bece96c5465dc8ee9832be0b # v4.0.3
with:
node-version: ${{ env.NODE_VERSION }}
cache: npm
- name: Install dependencies
run: npm ci --prefer-offline
- name: Run ESLint
run: npm run lint
- name: Check formatting
run: npm run format --if-present -- --check
- name: Type check
run: npm run typecheck --if-present
test:
name: Test
runs-on: ubuntu-latest
timeout-minutes: 20
permissions:
contents: read
checks: write
strategy:
fail-fast: false
matrix:
node: [22, 20, 18]
steps:
- name: Harden runner
uses: step-security/harden-runner@91182cccc01eb5e619899d80e4e971d6181294a7 # v2.10.1
with:
egress-policy: audit
- name: Checkout code
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
- name: Setup Node.js
uses: actions/setup-node@1e60f620b9541d16bece96c5465dc8ee9832be0b # v4.0.3
with:
node-version: ${{ matrix.node }}
cache: npm
- name: Install dependencies
run: npm ci --prefer-offline
- name: Run tests
run: npm test -- --ci --coverage
- name: Upload coverage
if: matrix.node == 20
uses: codecov/codecov-action@e28ff129e5465c2c0dcc6f003fc735cb6ae0c673 # v4.5.0
with:
token: ${{ secrets.CODECOV_TOKEN }}
files: ./coverage/lcov.info
flags: unittests
name: codecov-umbrella
fail_ci_if_error: false
continue-on-error: true
- name: Upload test results
if: always()
uses: actions/upload-artifact@50769540e7f4bd5e21e526ee35c689e35e0d6874 # v4.4.0
with:
name: test-results-${{ matrix.node }}
path: |
coverage/
junit.xml
retention-days: 7
build:
name: Build
runs-on: ubuntu-latest
timeout-minutes: 10
permissions:
contents: read
steps:
- name: Harden runner
uses: step-security/harden-runner@91182cccc01eb5e619899d80e4e971d6181294a7 # v2.10.1
with:
egress-policy: audit
- name: Checkout code
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
- name: Setup Node.js
uses: actions/setup-node@1e60f620b9541d16bece96c5465dc8ee9832be0b # v4.0.3
with:
node-version: ${{ env.NODE_VERSION }}
cache: npm
- name: Install dependencies
run: npm ci --prefer-offline
- name: Build package
run: npm run build
- name: Verify package
run: npm run verify:pack --if-present
- name: Upload build artifacts
uses: actions/upload-artifact@50769540e7f4bd5e21e526ee35c689e35e0d6874 # v4.4.0
with:
name: build-artifacts
path: |
dist/
*.tgz
retention-days: 7
# Fail the workflow if any job fails
ci-gate:
name: CI Gate
runs-on: ubuntu-latest
needs: [lint, test, build]
if: always()
steps:
- name: Check all jobs status
if: contains(needs.*.result, 'failure') || contains(needs.*.result, 'cancelled')
run: |
echo "One or more CI jobs failed"
exit 1
- name: CI passed
run: echo "All CI checks passed"