name: CI on: push: branches: [ main, develop ] pull_request: branches: [ main ] jobs: test: runs-on:
ubuntu-latest strategy: matrix: node-version: [{{nodeVersion}}, 20] steps: - name: Checkout code
uses: actions/checkout@v4 - name: Setup Node.js uses: actions/setup-node@v4 with: node-version: ${{matrix.node-version}}
{{#if (eq packageManager 'pnpm')}}
  cache: 'pnpm'
{{else}}
  cache: 'npm'
{{/if}}

{{#if (eq packageManager 'pnpm')}}
  - name: Install pnpm uses: pnpm/action-setup@v2 with: version: latest
{{/if}}

- name: Install dependencies run:
{{packageManager}}
install - name: Run linting run:
{{packageManager}}
run lint continue-on-error: false - name: Run type checking run:
{{packageManager}}
run types continue-on-error: false

{{#if features.testing}}
  - name: Run tests run:
  {{packageManager}}
  run test - name: Generate test coverage run:
  {{packageManager}}
  run test:coverage - name: Upload coverage to Codecov uses: codecov/codecov-action@v3 with: file:
  ./coverage/lcov.info flags: unittests name: codecov-umbrella fail_ci_if_error: false
{{/if}}

- name: Build project run:
{{packageManager}}
run build

{{#if features.validation}}
  - name: Validate package.json run:
  {{packageManager}}
  run validate package.json
{{/if}}

security: runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v4 - name:
Setup Node.js uses: actions/setup-node@v4 with: node-version:
{{nodeVersion}}
{{#if (eq packageManager 'pnpm')}}
  cache: 'pnpm'
{{else}}
  cache: 'npm'
{{/if}}

{{#if (eq packageManager 'pnpm')}}
  - name: Install pnpm uses: pnpm/action-setup@v2 with: version: latest
{{/if}}

- name: Install dependencies run:
{{packageManager}}
install - name: Run security audit run:
{{packageManager}}
audit continue-on-error: true - name: Run CodeQL Analysis uses: github/codeql-action/init@v2 with:
languages: javascript - name: Perform CodeQL Analysis uses: github/codeql-action/analyze@v2