diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 9b6c796..66cbf3b 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -1,22 +1,91 @@ name: CI on: push: - branches: [main] + branches: + - main pull_request: - branches: [main] + branches: + - main +concurrency: + group: ${{ github.ref }} + cancel-in-progress: true jobs: - build: + cache: runs-on: ubuntu-latest - timeout-minutes: 10 steps: - - uses: actions/checkout@v2 - - uses: actions/setup-node@v2 + - name: Checkout commit + uses: actions/checkout@v2 + - name: Prepare Node.js + uses: actions/setup-node@v1 with: node-version: "14" - cache: "yarn" + - name: Cache dependencies + uses: actions/cache@v2 + id: cache-dependencies + with: + path: node_modules + key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }} + restore-keys: ${{ runner.os }}-yarn- - name: Install dependencies - run: yarn - - name: Run linting + if: steps.cache-dependencies.outputs.cache-hit != 'true' + run: yarn install --force --non-interactive --ignore-scripts + lint: + runs-on: ubuntu-latest + needs: cache + steps: + - name: Checkout commit + uses: actions/checkout@v2 + - name: Prepare Node.js + uses: actions/setup-node@v1 + with: + node-version: "14" + - name: Restore dependencies + uses: actions/cache@v2 + id: cache-dependencies + with: + path: node_modules + key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }} + restore-keys: ${{ runner.os }}-yarn- + - name: Lint files run: yarn lint + test: + runs-on: ubuntu-latest + timeout-minutes: 10 + needs: cache + steps: + - name: Checkout commit + uses: actions/checkout@v2 + - name: Prepare Node.js + uses: actions/setup-node@v1 + with: + node-version: "14" + - name: Restore dependencies + uses: actions/cache@v2 + id: cache-dependencies + with: + path: node_modules + key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }} + restore-keys: ${{ runner.os }}-yarn- - name: Run tests run: yarn test + build: + runs-on: ubuntu-latest + needs: + - lint + - test + steps: + - name: Checkout commit + uses: actions/checkout@v2 + - name: Prepare Node.js + uses: actions/setup-node@v1 + with: + node-version: "14" + - name: Restore dependencies + uses: actions/cache@v2 + id: cache-dependencies + with: + path: node_modules + key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }} + restore-keys: ${{ runner.os }}-yarn- + - name: Run build + run: yarn build