Как да настроите непрекъсната интеграция за приложението си firebase

Един хубав ден реших, че трябва да пробвам лъскавото ново дете на пазара, firebase.

Firebase дойде с много функции, вградени и всички те в лесен вид plug and play вид на изпълнение. С течение на времето, след като беше придобита от Google, видяхме множество нови функции, които се появяват, а именно голямо съхранение на файлове и подобрена автентификация.

Дотук добре.

Няколко дни назад обмислих да хакна заедно приложение за месинджър през firebase и оттам идваше влакче с влакче. Въпреки че приложението само по себе си е доста направо, частта от CI беше забавна.

Аз лично никога не настройвам CI за нито един от проектите, за които съм работил. Това е първият ми опит за настройка на такъв. Така че, преди да отидем в дълбочина, малко отказ от отговорност.

Това в никакъв случай не е урок или ръководство за експерти. Това е просто разказ за пътуването ми, за да схвана неуловимата концепция.

Не исках да играя с Дженкинс толкова рано в обучителния ми цикъл и затова реших да продължа с Gitlab CI, тъй като кодът ми вече беше там.

За да настроите CI, gitlab просто се нуждае от файл с име .gitlab-ci.yml в корена на проекта. След като бъде добавен, вграденият CI ще се опита да изгради вашия проект чрез изпълнение на задачи, както е споменато в YAML.

Стига да говорим. Да видим някакъв код :)

Нека се опитаме да го разбием по един ред

изображение: възел: най-ново

Това дърпа най-новото изображение на възел във вашия инстанция. Тъй като моето приложение е изградено над npm, както и в, аз използвам npm като моя мениджър на пакети, а оттам и възел.

before_script:
 - npm резитба
 - npm инсталиране
 - npm install -g grunt-cli
 - npm инсталирайте -g firebase-инструменти

Този блок инструктира моя CI да изпълнява набор от команди преди изпълнение на някой от етапите ми. За да го вземем от върха, имаме npm prune, чиято употреба според документацията е:

#npm резитба
Тази команда премахва „външни“ пакети. Ако е посочено име на пакет, тогава се премахват само пакети, съответстващи на едно от предоставените имена.
Външните пакети са пакети, които не са включени в списъка на зависимостите на родителския пакет.

След това имаме npm инсталиране, за да инсталираме всички зависимости на моето приложение.

Инструментите npm install -g grunt-cli & npm install -g firebase-инструменти са много обясними. Иначе го google. :)

етапа:
 - внедряване

Този блок декларира етапите в изграждането на тръбопровода. Към момента имаме само етап на разполагане. Проверете https://gitlab.com/help/ci/yaml/README.md#stages

Ако е необходимо, човек може да избере да добави целия набор.

Напред, има

кеша:
 пътеки:
 - node_modules /
 ключ: „$ CI_BUILD_REPO“

Това е забавната част. Той казва на CI двигателя да кешира папката node_modules във всички компилации. Това означава, че всичките ви node_modules не трябва да бъдат изтегляни всеки път, когато задействате компилация.

Ключовият аргумент всъщност е идентификаторът, чрез който кеш се валидират. Прочетете https://gitlab.com/help/ci/yaml/README.md#cachekey

deploy_to_firebase:
 етап: разгръщане
 само:
 - майстор
 скрипт:
 - изсумтя всички
 - разгръщане на firebase - маркер $ FIREBASE_DEPLOY_KEY

Накрая имаме частта за разгръщане. Този блок е маркиран с разгръщане_to_firebase. Това е по-скоро работа по поръчка. Той идва с набор от задачи, които CI трябва да изпълни. Преминавайки по ред,

етап: разгръщане

Това маркира етапа, на който сочи тази задача. В този случай той се разполага.

само:
 - майстор

Това казва на CI да изпълнява изграждания само когато се промени клонът на git master. Прочетете https://git-scm.com/book/en/v2/Git-Branching-Branches-in-a-Nutshell.

скрипт:
 - изсумтя всички
 - разгръщане на firebase - маркер $ FIREBASE_DEPLOY_KEY

Това е последната част от заданието за персонализиране на разполагане.

Тук, ние молим CI да изпълни нашата предварително конфигурирана задача за грунт всички.

Тази задача преобразува ES6, компилира моя JSX, минимизира css и накрая копира над вградените файлове в изградена директория за внедряване през тел към firebase.

Тогава има: firebase implemen - токен $ FIREBASE_DEPLOY_KEY

$ FIREBASE_DEPLOY_KEY всъщност е защитена променлива. Това се използва от командата на разгръщане за удостоверяване с firebase, че внедряването е валидно. Тъй като това е маркер за достъп, човек не трябва да го излага като част от код. Следователно това се поддържа като env променлива.

$ FIREBASE_DEPLOY_KEY се генерира от firebase влизане: ci команда. Прочетете https://firebase.google.com/docs/cli/#administrative_commands.

И това е.

Натиснете към основна и тя трябва да започне да се изгражда.

Успех и бог на бързината :)

PS: прочетете на ES6, Реагирайте и измърморете и ако е необходимо, върнете се обратно към мен за коментари.