74 lines
1.2 KiB
YAML
74 lines
1.2 KiB
YAML
image: node:lts-alpine
|
|
|
|
stages:
|
|
- install
|
|
- lint
|
|
- test
|
|
- build
|
|
|
|
install:
|
|
stage: install
|
|
script:
|
|
- npm install --prefer-offline
|
|
cache:
|
|
key:
|
|
files:
|
|
- package.json
|
|
paths:
|
|
- node_modules
|
|
|
|
lint:
|
|
stage: lint
|
|
needs: ["install"]
|
|
script:
|
|
- npm run lint
|
|
cache:
|
|
key:
|
|
files:
|
|
- package.json
|
|
paths:
|
|
- node_modules
|
|
policy: pull
|
|
|
|
test:
|
|
stage: test
|
|
needs: ["install"]
|
|
before_script:
|
|
# Download Chrome
|
|
- apk add chromium
|
|
- export CHROME_BIN=/usr/bin/chromium-browser
|
|
- export CHROME_PATH=/usr/lib/chromium/
|
|
# Download Firefox
|
|
- apk add firefox-esr
|
|
- export FIREFOX_BIN=/usr/bin/firefox
|
|
- export FIREFOX_PATH=/usr/lib/firefox/
|
|
# X Server
|
|
- apk add xvfb
|
|
- export DISPLAY=:99
|
|
- Xvfb :99 -screen 0 1024x768x24 > /dev/null 2>&1 &
|
|
script:
|
|
- npm run test -- --browsers=Headless_Chrome --no-watch
|
|
cache:
|
|
key:
|
|
files:
|
|
- package.json
|
|
paths:
|
|
- node_modules
|
|
policy: pull
|
|
|
|
build:
|
|
stage: build
|
|
needs: ["test", "lint"]
|
|
script:
|
|
- npm run build
|
|
artifacts:
|
|
paths:
|
|
- $CI_PROJECT_DIR/dist
|
|
cache:
|
|
key:
|
|
files:
|
|
- package.json
|
|
paths:
|
|
- node_modules
|
|
policy: pull
|