stages: - install - build - test image: node:15-alpine3.10 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 - npm install cache: key: files: - package-lock.json paths: - node_modules policy: pull 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 cache: key: files: - package-lock.json paths: - node_modules policy: pull 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/ cache: key: files: - package-lock.json paths: - node_modules policy: pull test:e2e: stage: test allow_failure: false tags: - docker script: - npm ng e2e cache: key: files: - package-lock.json paths: - node_modules policy: pull test:nglint: stage: test tags: - docker script: - npm ng lint cache: key: files: - package-lock.json paths: - node_modules policy: pull