gilbarbara/react-dropdown

View on GitHub
.github/workflows/main.yml

Summary

Maintainability
Test Coverage
name: CI

on:
  push:
    branches:
      - main
    tags:
      - 'v*'
  pull_request:
    branches: ['*']

  workflow_dispatch:

concurrency:
  group: ${{ github.ref }}
  cancel-in-progress: true

jobs:
  main:
    name: Validate and Deploy
    runs-on: ubuntu-latest

    env:
      CI: true

    steps:
      - name: Setup timezone
        uses: zcong1993/setup-timezone@master
        with:
          timezone: America/Sao_Paulo

      - name: Setup repo
        uses: actions/checkout@v3

      - name: Setup Node
        uses: actions/setup-node@v3
        with:
          node-version: 18
          registry-url: 'https://registry.npmjs.org'

      - name: Install pnpm
        uses: pnpm/action-setup@v2
        with:
          version: 8
          run_install: false

      - name: Get pnpm store directory
        shell: bash
        run: |
          echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV

      - name: Setup pnpm cache
        uses: actions/cache@v3
        with:
          path: ${{ env.STORE_PATH }}
          key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
          restore-keys: |
            ${{ runner.os }}-pnpm-store-

      - name: Install Packages
        run: pnpm install
        timeout-minutes: 3

      - name: Validate and Build
        if: "!startsWith(github.ref, 'refs/tags/')"
        run: pnpm run validate
        timeout-minutes: 3

      - name: SonarCloud Scan
        if: "!startsWith(github.ref, 'refs/tags/')"
        uses: SonarSource/sonarcloud-github-action@master
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
          SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}

      - name: Publish Package
        if: startsWith(github.ref, 'refs/tags/')
        run: npm publish
        env:
          NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}