name: CI on: push: branches: [main] pull_request: concurrency: group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} cancel-in-progress: true env: NODE_VERSION: 18.x jobs: install: runs-on: ubuntu-latest steps: - name: Begin CI... uses: actions/checkout@v4 - name: Use Node ${{ env.NODE_VERSION }} uses: actions/setup-node@v4 with: node-version: ${{ env.NODE_VERSION }} - uses: actions/cache@v4 with: path: '**/node_modules' key: ${{ runner.os }}-${{ env.NODE_VERSION }}-modules-${{ hashFiles('**/package-lock.json') }} - name: Install dependencies run: npm ci env: CI: true lint: runs-on: ubuntu-latest needs: [install] steps: - name: Begin CI... uses: actions/checkout@v4 - uses: actions/cache@v4 with: path: '**/node_modules' key: ${{ runner.os }}-${{ env.NODE_VERSION }}-modules-${{ hashFiles('**/package-lock.json') }} - name: Lint run: npm run lint env: CI: true test: runs-on: ubuntu-latest needs: [install] steps: - name: Begin CI... uses: actions/checkout@v4 - uses: actions/cache@v4 with: path: '**/node_modules' key: ${{ runner.os }}-${{ env.NODE_VERSION }}-modules-${{ hashFiles('**/package-lock.json') }} - name: Test run: | npm run test || npm run test || npm run test || exit 1 env: CI: true build: runs-on: ubuntu-latest needs: [install] steps: - name: Begin CI... uses: actions/checkout@v4 - uses: actions/cache@v4 with: path: '**/node_modules' key: ${{ runner.os }}-${{ env.NODE_VERSION }}-modules-${{ hashFiles('**/package-lock.json') }} - name: Build run: npm run build env: CI: true check-types: runs-on: ubuntu-latest needs: [build] steps: - name: Begin CI... uses: actions/checkout@v4 - uses: actions/cache@v4 with: path: '**/node_modules' key: ${{ runner.os }}-${{ env.NODE_VERSION }}-modules-${{ hashFiles('**/package-lock.json') }} - name: Check Types run: npm run lint-types env: CI: true