From d261177d685a8591c3f0665698b947a1146a61d0 Mon Sep 17 00:00:00 2001
From: Erik Borgeteien Hansen <erik@erikbhan.no>
Date: Wed, 27 Apr 2022 11:06:32 +0200
Subject: [PATCH] try something new

---
 .gitlab-ci.yml | 148 ++++++++++++++++++++++++++++++++++++++++++++-----
 1 file changed, 135 insertions(+), 13 deletions(-)

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index dcab614..08a25e8 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -1,17 +1,139 @@
-#
-# https://gitlab.com/gitlab-org/gitlab/-/tree/master/lib/gitlab/ci/templates/Nodejs.gitlab-ci.yml
-#
-image: node:latest
+image: node:lts-alpine
 
-# Cache modules in between jobs
-cache:
-  key: $CI_COMMIT_REF_SLUG
-  paths:
-    - .npm/
+stages:
+  - install
+  - build
+  - quality
+  # - deploy
+  - audit
 
-before_script:
-  - npm ci --cache .npm --prefer-offline
+variables:
+  npm_config_cache: "$CI_PROJECT_DIR/.npm"
 
-test_async:
+install:
+  stage: install
   script:
-    - npm run test:unit
\ No newline at end of file
+    - npm ci
+  artifacts:
+    name: "artifacts"
+    untracked: true
+    expire_in: 60 mins
+    paths:
+      - .npm/
+      - node_modules/
+
+build:
+  stage: build
+  script:
+    - CI=false npm run build
+  artifacts:
+    paths:
+      - build
+    expire_in: 60 mins
+  dependencies:
+    - install
+
+linting:
+  stage: quality
+  script:
+    - npm run lint
+  dependencies:
+    - install
+
+test:unit:
+  stage: quality
+  script:
+    - npm run test:unit
+  dependencies:
+    - install
+  coverage: /All files[^|]*\|[^|]*\s+([\d\.]+)/
+
+# test:e2e:
+#   stage: quality
+#   image: cypress/browsers:chrome69
+#   dependencies:
+#     - install
+#     - build
+#   script:
+#     - npm run e2e:ci
+#   artifacts:
+#     paths:
+#       - cypress/screenshots
+#       - cypress/videos
+#     expire_in: 1 day
+
+# .deploy:
+#   stage: deploy
+#   before_script:
+#     - npm install -g firebase-tools
+#     - (if [ -d "build" ]; then echo ok; else exit "no build folder, try to run pipeline again"; fi);
+#   script:
+#     - firebase deploy --token $FIREBASE_TOKEN --non-interactive --only hosting:$ENV
+#   when: manual
+
+# deploy_to_alpha:
+#   environment:
+#     name: alpha
+#     url: $ALPHA_URL
+#   extends: .deploy
+#   variables:
+#     ENV: alpha
+#   except:
+#     - develop
+#     - main
+
+# deploy_to_beta:
+#   environment:
+#     name: beta
+#     url: $BETA_URL
+#   extends: .deploy
+#   variables:
+#     ENV: beta
+#   only:
+#     - develop
+
+# deploy_to_prod:
+#   environment:
+#     name: prod
+#     url: $PROD_URL
+#   extends: .deploy
+#   variables:
+#     ENV: prod
+#   only:
+#     refs:
+#       - main
+
+.lighthouse:
+  image: markhobson/node-chrome
+  stage: audit
+  before_script:
+    - npm i -g lighthouse
+  script:
+    - lighthouse --chrome-flags="--headless --no-sandbox" $LIGHTHOUSE_TEST_URL --output html --output-path ./report.html
+  artifacts:
+    paths:
+      - ./report.html
+    expire_in: 1 week
+  when: manual
+
+# run_lighthouse_alpha:
+#   extends: .lighthouse
+#   variables:
+#     LIGHTHOUSE_TEST_URL: $ALPHA_URL
+#   except:
+#     - develop
+#     - main
+
+# run_lighthouse_beta:
+#   extends: .lighthouse
+#   variables:
+#     LIGHTHOUSE_TEST_URL: $BETA_URL
+#   only:
+#     - develop
+
+run_lighthouse_prod:
+  extends: .lighthouse
+  variables:
+    LIGHTHOUSE_TEST_URL: $PROD_URL
+  only:
+    - main
-- 
GitLab