Коротка інструкція як швидко створити додаток на Angular4 з використанням Angular CLI, налаштувати continuous integration (CI) за допомогою Travis-CI і розвернути це все на Firebase. Системою контроля версій буде Git (GitHUB).

Створюємо проект.

Перш за все встановлюємо останню версію CLI. На момент написання статті, остання версія: 1.1.1 Після цього переходимо в папку де в нас буде знаходитись проект, і створюємо його.

npm install -g @angular/cli
ng new PROJECT-NAME

При створенні можуть виникати різні помилки, такі як нижче наприклад. Це може бути пов’язано з версією NodeJS. Для роботи CLI потрібна версія ноди 6.4.0 і вище.

Приклад помилки в CLI при створенні проекту для старої ноди.

Якщо Вам не пощастило і Ви використовуєте Windows, то потрібно встановити менеджер версій ноди (NVM) і за його допомогою встановити потрібну версію ноди. Знайти його можна за посиланням https://github.com/coreybutler/nvm-windows. Потрібно буде завантажити zip файл з .exe файлом програми і запустити її. Процедура прямо родом з 2000-х, але це ж вінда.

Для *NIX (Linux, OS X, …) можна використати утиліту n.

npm install -g n  # Install n globally

Використання:


Usage:
n                            # Output versions installed
n latest                     # Install or activate the latest node release
n stable                     # Install or activate the latest stable node release
n                   # Install node 
n use  [args ...]   # Execute node  with [args ...]
n bin               # Output bin path for 
n rm            # Remove the given version(s)
n --latest                   # Output the latest node version available
n --stable                   # Output the latest stable node version available
n ls                         # Output the versions of node available

Встановлюємо SCSS основним препроцесором CSS. Можна залишити і CSS, але набагато ефективніше використовувати препроцесори. При створенні проекту потрібно вказати параметр –style=scss

ng new My_New_Project --style=scss

або для вже створеного

ng set defaults.styleExt scss

При виникненні помилки, наприклад через зміну версії NodeJs, потрібно оновити SASS.

npm rebuild node-sass --force

Публікуємо проект на GitHUB.

GitHUB нам потрібний для простої інтеграції з Travis-CI і, звичайно ж, для зберігання репозиторія. Опублікувати проект можна різними способами, я ж просто використовую можливості середовища розробки (IDE) WebStorm. Останній пункт на фото – Share Project on GitHub.

Налаштування Travis-CI.

Перш за все уточнимо що таке CI.

Неперервна інтеграція (англ. Continuous Integration) — практика розробки програмного забезпечення, яка полягає у виконанні частих автоматизованих складань проекту для якнайшвидшого виявлення та вирішення інтеграційних проблем.

Якщо простими словами, то після кожного коміту в master вітку репозиторія (або яку ми вкажемо) ми виконуємо повне збирання проекту з встановленням всіх залежностей, прогоном всіх тестів і іншими операціями, які ми хочемо виконати перед побудовою білда (наприклад встановлення нової версії).

Для початку роботи Вам потрібен аккаунт GitHub з адмін доступ принаймні в один репозиторій.

  1. Sign in to Travis CI with your GitHub account, accepting the GitHub access permissions confirmation.
  2. Після того, як Ви увійшли в систему, і синхронізовані ваші репозиторії GitHub, перейдіть на сторінку профілю і включити Travis CI для сховища з яким будете налаштовувати CI.
  3.  Додати .travis.yml файл в сховище, щоб сказати Travis CI що будувати. За приклад можна взяти даний файл.
    
    language: node_js
    node_js:
      - "6.11.0"
    branches:
      only:
        - master
    script:
      - echo "Deploing!"
      - npm install
      - ng build
    install:
      - npm install -g firebase-tools
      - npm install -g angular-cli
    after_success:
      - firebase deploy --token $FIREBASE_TOKEN
    
    

Заливаємо цей файл в Git і, перейшовши на сайті https://travis-ci.org/, відкриваємо проект і дивимось на процес розвертання додатку.

В цьому файлі ми вказали що хочемо використовувати NodeJS 6.11.0 версії, збирати проект лише з вітки master, встановити всі потрібні залежності (firebase-tools i angular-cli). Останній рядок – деплоїнг проект на Firebase, але це буде трішки пізніше.

Тут ще варто зауважити що з даною версією Angular-CLI є якась проблема, адже після скачування проекту з репозиторія, команти ng server або ng build не працюють і повертають помилку:

You have to be inside an angular-cli project in order to use the serve command.

Хоч ми і знаходимось в потрібній папці, команди не працюю, але якщо їх прописати в package.json і виконувати через npm – то все робить чудово. Тому в travis.yml можна зміники команду ng build на npm run build:prod.


"scripts": {
    "ng": "ng",
    "start": "ng serve",
    "build": "ng build",
    "build:prod": "ng build --prod",
    "test": "ng test",
    "lint": "ng lint",
    "e2e": "ng e2e"
  }

Firebase деплоїнг.

І останнім кроком ми налаштуємо розгортання нашого проекту на безкоштовному хостінгу після кожного коміта (мержа) в master вітку. Потрібно виконати наступні команди: встановити firebase, авторизуватися, вибрати проект і згенерувати токен для CI.

npm install -g firebase-tools

firebase init

firebase login

firebase login:ci

Дані команди створять файл firebase.json з налаштуваннями проекту. Це дозволить розвертати проект з локальної машини під час розробки (ну це якщо буде потрібно). При налаштуванні проекта треба змінити назву папки, по замовчуванню це public але нам потрібна dist – саме в ню Angular-CLI збирає проект. Остання команда згенерує токен для СІ.

Отримавши токен, можна його додати в змінні оточення Travis-CI. Заходимо в налаштування проекту на Travis і знаходимо наступну секцію:

Створюємо змінну FIREBASE_TOKEN яку використовуємо у файлі .travis.yml зі знаком долара на початку $FIREBASE_TOKEN. Це останній рядок у файлі.

Тепер після кожних змін і мержу в дев буде автоматично збиратися проект і розвертатись на Firebase.

Якщо ви знайшли помилку, будь ласка, виділіть фрагмент тексту та натисніть Ctrl+Enter.

Схожі статті

Leave a Reply

Your email address will not be published. Required fields are marked *