diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index a3b0552..af4c21d 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,65 +1,175 @@ -stages: - - lint - - build - - test - - compose-build - - compose-push +variables: + DOCKER_USER: pfingstfrosch + ASSIGNMENT: waecm-2021-group-04-bsp-3 -.lint: - stage: lint +stages: + - build + - lint + - test + - docker-build + - docker-push + +.python-image: + image: python:3.8-slim +.angular-image: + image: node:alpine + +######## +# BUILD +################################################################# .build: stage: build -.test: - stage: test -.compose-build: - stage: compose-build -.compose-push: - stage: compose-push + +build_fe: + image: node:alpine + script: + - cd ./frontend + - npm install + cache: + key: $CI_COMMIT_REF_SLUG-$CI_PROJECT_DIR + paths: + - frontend/node_modules/ + only: + changes: + - frontend/package-lock.json + extends: + - .build + + +build_be: + before_script: + - apt-get update + - apt-get install -y build-essential gcc + - python -m venv /opt/venv + - python -m pip install --upgrade pip + script: + - cd ./backend + - python setup.py sdist + artifacts: + untracked: true + extends: + - .build + - .python-image + +######## +# LINT +################################################################# +.lint: + stage: lint lint_fe: script: - - echo '' + - cd ./frontend + - npm install + - npm run -- ng lint extends: - .lint + - .angular-image + cache: + key: $CI_COMMIT_REF_SLUG-$CI_PROJECT_DIR + paths: + - frontend/node_modules/ + policy: pull -lint_be: - script: - - echo '' - extends: - - .lint +#lint_be: +# script: +# - echo '' +# extends: +# - .lint +# needs: +# - build_be -build_fe: - script: - - echo '' - extends: - - .build - -build_be: - script: - - echo '' - extends: - - .build +######## +# TEST +################################################################# +.test: + stage: test test_fe: script: - - echo '' + - cd ./frontend + - npm install + - npm run -- ng test + cache: + key: $CI_COMMIT_REF_SLUG-$CI_PROJECT_DIR + paths: + - frontend/node_modules/ + policy: pull extends: - .test + - .angular-image + needs: + - lint_fe -test_be: - script: - - echo '' - extends: - - .test +#test_be: +# script: +# - cd ./backend +# - ls -l +# extends: +# - .test +# needs: +# - build_be -compose-build: - script: - - echo '' - extends: - - .compose-build +######## +# DOCKER-BUILD +################################################################# +.docker-build: + image: gitlab/dind + stage: docker-build -compose-push: +.docker-setup: + services: + - docker:dind + before_script: + - docker login -u $DOCKER_USER -p $DOCKER_PW + artifacts: + untracked: true + tags: + - docker + +docker-build-fe: script: - - echo '' + - docker-compose build waecm_g4_fe + - docker save -o waecm_g4_fe ${DOCKER_USER}/${ASSIGNMENT}-fe extends: - - compose-push + - .docker-build + - .docker-setup + needs: + - test_fe + +docker-build-be: + script: + - docker-compose build waecm_g4_be + - docker save -o waecm_g4_be ${DOCKER_USER}/${ASSIGNMENT}-be + extends: + - .docker-build + - .docker-setup + needs: + - build_be + +######## +# DOCKER-PUSH +################################################################# +.docker-push: + image: docker:latest + stage: docker-push + +docker-push-fe: + script: + - docker image load --input waecm_g4_fe + - docker image push ${DOCKER_USER}/${ASSIGNMENT}-fe + extends: + - .docker-push + - .docker-setup + needs: + - docker-build-fe + +docker-push-be: + script: + - docker image load --input waecm_g4_be + - docker image push ${DOCKER_USER}/${ASSIGNMENT}-be + extends: + - .docker-push + - .docker-setup + needs: + - docker-build-be diff --git a/frontend/package-lock.json b/frontend/package-lock.json index 16ddf0c..ce01f80 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -9524,6 +9524,23 @@ "minimatch": "^3.0.4" } }, + "karma-htmlfile-reporter": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/karma-htmlfile-reporter/-/karma-htmlfile-reporter-0.3.8.tgz", + "integrity": "sha512-Hd4c/vqPXYjdNYXeDJRMMq2DMMxPxqOR+TPeiLz2qbqO0qCCQMeXwFGhNDFr+GsvYhcOyn7maTbWusUFchS/4A==", + "dev": true, + "requires": { + "xmlbuilder": "^10.0.0" + }, + "dependencies": { + "xmlbuilder": { + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-10.1.1.tgz", + "integrity": "sha512-OyzrcFLL/nb6fMGHbiRDuPup9ljBycsdCypwuyg5AAHvyWzGfChJpCXMG88AGTIMFhGZ9RccFN1e6lhg3hkwKg==", + "dev": true + } + } + }, "karma-jasmine": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/karma-jasmine/-/karma-jasmine-2.0.1.tgz", diff --git a/frontend/package.json b/frontend/package.json index df74520..e3cae9f 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -58,6 +58,7 @@ "karma": "~4.4.1", "karma-chrome-launcher": "~3.1.0", "karma-coverage-istanbul-reporter": "~2.1.1", + "karma-htmlfile-reporter": "0.3.8", "karma-jasmine": "~2.0.1", "karma-jasmine-html-reporter": "^1.5.4", "ngx-material-file-input": "^2.1.1",