cic-staff-client/.gitlab-ci.yml

103 lines
2.0 KiB
YAML

stages:
- install
- build
- test
- package
cache:
key:
files:
- package-lock.json
paths:
- node_modules/
policy: pull
image: node:alpine
variables:
PROJECT_PATH: "$CI_PROJECT_DIR"
APP_OUTPUT_PATH: "$CI_PROJECT_DIR/dist/cic-staff-client"
OUTPUT_PATH: "$CI_PROJECT_DIR/dist"
CLI_VERSION: 10.2.0
install_dependencies:
stage: install
tags:
- docker
script:
- npm install -g @angular/cli@$CLI_VERSION
- npm install
only:
refs:
- merge_requests
- master
changes:
- package-lock.json
build:
stage: build
tags:
- docker
script:
- npm ng build --prod
after_script:
- mv $PROJECT_PATH/nginx.conf $PROJECT_PATH/default.conf
- cp $PROJECT_PATH/default.conf $APP_OUTPUT_PATH
- cp $PROJECT_PATH/Dockerfile $APP_OUTPUT_PATH
artifacts:
name: "cic-staff-client-pipeline"
expire_in: 1 days
paths:
- $APP_OUTPUT_PATH
test:karma:
stage: test
allow_failure: false
tags:
- docker
before_script:
- apk add chromium
- export CHROME_BIN=/usr/bin/chromium-browser
script:
- npm ng test --code-coverage --progress false --watch false --browsers=GitlabChromeHeadless
coverage: '/Statements\s+:\s\d+.\d+%/'
artifacts:
name: "tests-and-coverage"
reports:
junit:
- $OUTPUT_PATH/tests/junit-test-results.xml
cobertura:
- $OUTPUT_PATH/coverage/cobetura-coverage.xml
paths:
- coverage/
test:e2e:
stage: test
allow_failure: false
tags:
- docker
script:
- npm ng e2e
test:nglint:
stage: test
tags:
- docker
script:
- npm ng lint
docker-build:
image: docker:latest
stage: package
services:
- docker:dind
only:
- master
before_script:
- echo $CI_BUILD_TOKEN | docker login -u "$CI_REGISTRY_USER"
--password-stdin $CI_REGISTRY
script:
- IMAGE_NAME="$CI_REGISTRY_IMAGE:$CI_COMMIT_REF_NAME"
- docker build --pull -t "$IMAGE_NAME" -f Dockerfile .
- docker push "$IMAGE_NAME"