diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index fcd7d56..a3ab6bb 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,102 +1,134 @@ stages: - - install - build - - test - - package + # - test + # - package -cache: - key: - files: - - package-lock.json - paths: - - node_modules/ - policy: pull - -image: node:alpine +image: + name: gcr.io/kaniko-project/executor:debug + entrypoint: [""] 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 + KANIKO_CACHE_ARGS: "--cache=true --cache-copy-layers=true --cache-ttl=24h" -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: +ng_build_merge_request: 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: - stage: package - image: docker:latest - services: - - docker:dind variables: - IMAGE_TAG: "$CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG-$CI_COMMIT_SHORT_SHA" - before_script: - - docker login -u $CI_DEPLOY_USER -p $CI_DEPLOY_PASSWORD $CI_REGISTRY script: - - docker build -t $IMAGE_TAG -f Dockerfile . - - docker push $IMAGE_TAG - only: - - master + - mkdir -p /kaniko/.docker + - echo "{\"auths\":{\"$CI_REGISTRY\":{\"username\":\"$CI_REGISTRY_USER\",\"password\":\"$CI_REGISTRY_PASSWORD\"}}}" > "/kaniko/.docker/config.json" + - /kaniko/executor --context . $KANIKO_CACHE_ARGS --cache-repo $CI_REGISTRY_IMAGE --no-push + rules: + - if: $CI_PIPELINE_SOURCE == "merge_request_event" + when: always + +ng_build: + stage: build + variables: + IMAGE_TAG_BASE: $CI_REGISTRY_IMAGE:$CI_COMMIT_BRANCH-$CI_COMMIT_SHORT_SHA + LATEST_TAG: $CI_REGISTRY_IMAGE:latest + script: + - export IMAGE_TAG="$IMAGE_TAG_BASE-$(date +%F.%H%M%S)" + - mkdir -p /kaniko/.docker + - echo "{\"auths\":{\"$CI_REGISTRY\":{\"username\":\"$CI_REGISTRY_USER\",\"password\":\"$CI_REGISTRY_PASSWORD\"}}}" > "/kaniko/.docker/config.json" + - /kaniko/executor --context . $KANIKO_CACHE_ARGS --destination $IMAGE_TAG --destination $CI_REGISTRY_IMAGE/$APP_NAME:latest + rules: + - if: $CI_COMMIT_BRANCH == "master" + when: always + + +# 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: +# stage: package +# image: docker:latest +# services: +# - docker:dind +# variables: +# IMAGE_TAG: "$CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG-$CI_COMMIT_SHORT_SHA" +# before_script: +# - docker login -u $CI_DEPLOY_USER -p $CI_DEPLOY_PASSWORD $CI_REGISTRY +# script: +# - docker build -t $IMAGE_TAG -f Dockerfile . +# - docker push $IMAGE_TAG +# only: +# - master