Ng-shadow (4 серии деталей)
Фотография Даниэль МакКаллоу на Неспособный
Этот пост происходит в серии, направленной на то, чтобы показать, как построить угловое применение с нуля.
Мы увидим, как использовать угловое применение в масштабе предприятия со всеми активами, необходимыми для его разработки и поддержания его.
Этот пост покажет вам, как настроить базовый инструмент CI (тестирование и пробег вашего кода) для вашего приложения на Gitlab.
git checkout master git pull # Retrieve the last master version git checkout -b develop # Branch develop creation
Нам нужно будет адаптировать нашу среду тестирования для работы в среде Gitlab CI.
Добавьте линии Follwing в свой Package.json
:
"scripts": { ... "ci:test": "ng test --browsers PhantomJS --watch=false", "ci:lint": "ng lint", ... }
Добавить поддержку Phantomjs:
npm install karma-phantomjs-launcher phantomjs core-js --save --save-exact
Обновить karma.conf.js:
plugins: [ ..., require('karma-phantomjs-launcher') ],
Обновить Polyfill.ts:
# Add core-js imports import 'core-js/es/symbol'; import 'core-js/es/object'; import 'core-js/es/function'; import 'core-js/es/parse-int'; import 'core-js/es/parse-float'; import 'core-js/es/number'; import 'core-js/es/math'; import 'core-js/es/string'; import 'core-js/es/date'; import 'core-js/es/array'; import 'core-js/es/regexp'; import 'core-js/es/map'; import 'core-js/es/weak-map'; import 'core-js/es/set'; # Uncomment zone polyfills (window as any).__Zone_disable_requestAnimationFrame = true; // disable patch requestAnimationFrame (window as any).__Zone_disable_on_property = true; // disable patch onProperty such as onclick (window as any).__zone_symbol__BLACK_LISTED_EVENTS = ['scroll', 'mousemove']; // disable patch specified eventNames (window as any).__Zone_enable_cross_context_check = true;
Обновите свой tsconfig.json:
{ "compileOnSave": false, "compilerOptions": { "baseUrl": "./", "outDir": "./dist/out-tsc", "sourceMap": true, "experimentalDecorators": true, "emitDecoratorMetadata": true, "declaration": false, "module": "es2015", "moduleResolution": "node", "target": "es5", "typeRoots": [ "node_modules/@types" ], "lib": [ "es2017", "es2019", "dom", "esnext.asynciterable" ], "resolveJsonModule": true } }
Создайте файл .gitlab-ci.yml
со следующим контентом:
image: node:latest stages: - CodeQuality test: stage: CodeQuality script: - npm ci - npm run ci:test lint: stage: CodeQuality script: - npm ci - npm run ci:lint
Каждый раз, когда кто -то совершает филиал, Codequality
Стадии выше будут запускаются.
Из NPM документация о npm ci
: Эта команда похожа на NPM Установка
, за исключением того, что он предназначен для использования в автоматизированных средах, таких как тестовые платформы, непрерывная интеграция и развертывание — или в любой ситуации, когда вы хотите убедиться, что вы выполняете чистую установку своих зависимостей. Это может быть значительно быстрее, чем обычная установка NPM, пропустив определенные пользовательские функции. Он также более строгой, чем регулярная установка, которая может помочь уловить ошибки или несоответствия, вызванные постепенно установленными локальными средами большинства пользователей NPM.
git add .gitlab-ci.yml package.json package-lock.json karma.conf.js src/polyfills.ts tsconfig.json git commit -m "core(ci): Add gitlab CI file and scripts" git push -u origin develop
Пока ваш CI будет работать
npm run ci:test
а также
npm run ci:lint
Теперь вы можете следовать состоянию вашего CI на Gitlab. Перейти к CI/CD
> Трубопроводы
: Нажмите на соответствующий трубопровод, чтобы показать детали этапов:
Ng-shadow (4 серии деталей)
Оригинал: «https://dev.to/fairen/setup-a-basic-ci-40m6»