From cd87ba2f3700738ce9aa4b2f48cdfda08987f6b2 Mon Sep 17 00:00:00 2001
From: Michael Kriese <michael.kriese@visualon.de>
Date: Mon, 1 Mar 2021 13:08:23 +0100
Subject: [PATCH] ci: split pr workflow (#8905)

---
 .github/workflows/build-pr.yml | 127 +++++++++++++++++++++++++++++++++
 .github/workflows/build.yml    |  25 ++-----
 renovate.json                  |   1 +
 3 files changed, 135 insertions(+), 18 deletions(-)
 create mode 100644 .github/workflows/build-pr.yml

diff --git a/.github/workflows/build-pr.yml b/.github/workflows/build-pr.yml
new file mode 100644
index 0000000000..b7066dcbfb
--- /dev/null
+++ b/.github/workflows/build-pr.yml
@@ -0,0 +1,127 @@
+name: build-pr
+
+on:
+  pull_request:
+
+env:
+  YARN_MODULES_CACHE_KEY: v1
+  YARN_PACKAGE_CACHE_KEY: v1
+  YARN_CACHE_FOLDER: .cache/yarn
+  NODE_VERSION: 14
+  PYTHON_VERSION: 3.8
+  SKIP_JAVA_TESTS: true
+
+jobs:
+  test:
+    runs-on: ubuntu-latest
+
+    # tests shouldn't need more time
+    timeout-minutes: 30
+
+    steps:
+      - name: Set up Node.js ${{ env.NODE_VERSION }}
+        uses: actions/setup-node@v2.1.5
+        with:
+          node-version: ${{ env.NODE_VERSION }}
+
+      - name: Set up Python ${{ env.PYTHON_VERSION }}
+        uses: actions/setup-python@v2.2.1
+        with:
+          python-version: ${{ env.PYTHON_VERSION }}
+
+      - name: Init platform
+        shell: bash
+        run: |
+          git config --global core.autocrlf false
+          git config --global core.symlinks true
+          git config --global user.email 'renovate@whitesourcesoftware.com'
+          git config --global user.name  'Renovate Bot'
+          npm config set scripts-prepend-node-path true
+          echo "Node $(node --version)"
+          python --version
+          echo "Yarn $(yarn --version)"
+
+      - uses: actions/checkout@v2.3.4
+
+      - name: Cache Yarn packages
+        id: yarn_cache_packages
+        uses: actions/cache@v2.1.4
+        with:
+          path: ${{ env.YARN_CACHE_FOLDER }}
+          key: ${{ env.YARN_PACKAGE_CACHE_KEY }}-${{ runner.os }}-yarn_cache-${{ hashFiles('**/yarn.lock') }}
+          restore-keys: |
+            ${{ env.YARN_PACKAGE_CACHE_KEY }}-${{ runner.os }}-yarn_cache-
+
+      # Clear caches on cache miss, otherwise they will grow indefinitely
+      - name: Clear yarn cache
+        if: steps.yarn_cache_packages.outputs.cache-hit != 'true'
+        run: yarn cache clean
+
+      - name: Installing dependencies
+        run: yarn install --frozen-lockfile
+
+      - name: Unit tests
+        run: yarn jest --logHeapUsage --maxWorkers=2 --ci
+
+      - name: Codecov
+        uses: codecov/codecov-action@v1.2.1
+        if: always() && env.coverage == 'true'
+
+      # build after tests to exclude files
+      - name: Build
+        run: yarn build
+
+      - name: E2E Test
+        run: yarn test-e2e
+
+  lint:
+    runs-on: ubuntu-latest
+
+    # lint shouldn't need more than 10 min
+    timeout-minutes: 15
+
+    steps:
+      - name: Set up Node.js ${{ env.NODE_VERSION }}
+        uses: actions/setup-node@v2.1.5
+        with:
+          node-version: ${{ env.NODE_VERSION }}
+
+      - name: Init platform
+        run: |
+          git config --global core.autocrlf false
+          git config --global core.symlinks true
+          git config --global user.email 'renovate@whitesourcesoftware.com'
+          git config --global user.name  'Renovate Bot'
+          npm config set scripts-prepend-node-path true
+          echo "Node $(node --version)"
+          echo "Yarn $(yarn --version)"
+
+      - uses: actions/checkout@v2.3.4
+
+      - name: Cache Yarn packages
+        id: yarn_cache_packages
+        uses: actions/cache@v2.1.4
+        with:
+          path: ${{ env.YARN_CACHE_FOLDER }}
+          key: ${{ env.YARN_PACKAGE_CACHE_KEY }}-${{ runner.os }}-yarn_cache-${{ hashFiles('**/yarn.lock') }}
+          restore-keys: |
+            ${{ env.YARN_PACKAGE_CACHE_KEY }}-${{ runner.os }}-yarn_cache-
+
+      # Clear caches on cache miss, otherwise they will grow indefinitely
+      - name: Clear yarn cache
+        if: steps.yarn_cache_packages.outputs.cache-hit != 'true'
+        run: yarn cache clean
+
+      - name: Installing dependencies
+        run: yarn install --frozen-lockfile
+
+      - name: Lint
+        run: |
+          yarn eslint
+          yarn prettier
+
+      - name: Test schema
+        run: yarn test-schema
+
+      - name: Type check
+        run: yarn type-check
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index a90e450a2c..03b88d69e3 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -4,9 +4,8 @@ on:
   push:
     branches:
       - master
-      - 'renovate/**'
 
-  pull_request:
+  workflow_dispatch:
 
 env:
   YARN_MODULES_CACHE_KEY: v1
@@ -91,26 +90,16 @@ jobs:
       - name: Installing dependencies
         run: yarn install --frozen-lockfile
 
-      - name: Build
-        run: yarn build
-
       - name: Unit tests
-        run: yarn jest --maxWorkers=2 --ci --coverage ${{ env.coverage }}
-
-      - name: Upload coverage
-        uses: actions/upload-artifact@v2.2.2
-        if: always() && env.coverage == 'true'
-        with:
-          name: coverage
-          path: coverage
+        run: yarn jest --logHeapUsage --maxWorkers=2 --ci --coverage ${{ env.coverage }}
 
       - name: Codecov
-        shell: bash
+        uses: codecov/codecov-action@v1.2.1
         if: always() && env.coverage == 'true'
-        continue-on-error: true
-        run: bash <(curl -s https://codecov.io/bash)
-        env:
-          CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
+
+      # build after tests to exclude files
+      - name: Build
+        run: yarn build
 
       - name: E2E Test
         run: yarn test-e2e
diff --git a/renovate.json b/renovate.json
index f5aad2bb9d..b42c89dd7e 100644
--- a/renovate.json
+++ b/renovate.json
@@ -3,6 +3,7 @@
   "assignees": ["rarkins", "viceice"],
   "semanticCommitScope": "deps",
   "automergeType": "pr",
+  "prCreation": "immediate",
   "dockerfile": {
     "semanticCommitType": "build"
   },
-- 
GitLab