Git

GitLab Runner и GitLab CI

GitLab Runner и GitLab CI

Какво е непрекъсната интеграция (CI)?

Непрекъснатата интеграция е следващата логична стъпка, след като имате система за контрол на версиите като Git и система за отдалечен контрол на версиите като GitLab или GitHub за съвместни усилия. Проблемът, пред който са изправени големите проекти, е следният - Тъй като идват нови заявки за изтегляне, те трябва да бъдат тествани и след това интегрирани в главния клон и това усилие може лесно да отнеме от няколко часа до няколко седмици в зависимост от размера на проекта, местоположението на членовете на екипа и др.

Както всеки подобен проблем, логичната стъпка е да се автоматизира цялата тестова система. Правим това, като настройваме задействане, така че когато по-нови фиксирания се обединят в клон, агент (например GitLab Runner) автоматично изгражда средата и кода, изпълнява всички модулни тестове и тестове за интеграция срещу него. Ако възникне някаква грешка, тя дава предупреждение и доклад за срив, в противен случай получавате зелен сигнал, че всичко работи.

Разбира се, стигнал до своята логична крайност, можете също така да автоматизирате внедряването, да настроите автоматизирано A / B тестване и изцяло да премахнете човешката намеса от процеса. Това се нарича непрекъсната доставка и / или непрекъснато внедряване в зависимост от нивото на автоматизация. Но ние просто бихме се фокусирали върху Непрекъснатата интеграция в този урок.

Предпоставки

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

Освен това предполагаме, че сте настроили потребителски акаунт в този екземпляр на GitLab и сте го направили хранилище (клониран на вашата локална машина), управляван под вашето потребителско име. Това хранилище ще използваме, за да демонстрираме работния процес на CI. В урока името му ще бъде Моят проект.

За да изброите всичко:

  1. GitLab екземпляр
  2. Празно хранилище, наречено my-project
  3. Локален клонинг на това хранилище
  4. Вашият локален екземпляр на Git е конфигуриран да променя промените дистанционно.

Създаване на просто приложение

В това хранилище нека създадем прост възел.js приложение. Това приложение е просто Express.js сървър, който е предназначен за разполагане в контейнер на Docker. Сървърът дава HTTP полезен товар с надпис „Hello World” във вашия браузър.

Създайте файл в корена на локалното хранилище ап.js и добавете следните редове:

„използвайте стриктно“;
const express = require ('express');
// Константи
const PORT = 8080;
const HOST = '0.0.0.0 ';
// App
const app = express ();
ап.get ('/', (req, res) =>
Рез.send ('Hello world \ n');
);
ап.слушайте (PORT, HOST);
конзола.log ('Работи на http: // $ HOST: $ PORT');

След това създайте друг файл пакет.json и добавете следното към него:


"name": "docker_web_app",
"Версия 1.0.0 ",
"description": "Възел.js на Docker ",
"автор": "Джон Доу",
"main": "сървър.js ",
"скриптове":
"start": "сървър на възел.js "
,
"зависимости":
"express": "^ 4.16.1 "

И накрая, създайте a Докер файл и добавете следното съдържание към него:

ОТ възел: 8
# Създайте директория на приложението
WORKDIR / usr / src / app
# Инсталирайте зависимости на приложението
# Използва се заместващ символ, за да се осигури и двата пакета.json И заключване на пакети.json се копират
Пакет COPY *.json ./
RUN npm инсталиране
# Ако изграждате вашия код за производство
# RUN npm install --only = production
# Източник на приложението за пакет
КОПИЕ…
ЕКСПОЗИЦИЯ 8080
CMD [„възел“, „приложение“]

Процесът на изграждане на това приложение ще включва създаване на контейнер на възел и инсталиране на зависимостите (като Express.js модул). Този процес трябва да се случи без никакви грешки. За улеснение няма да обсъждаме тестване в този урок.

GitLab Runner Pipeline

Сега бихме добавили друг файл към нашето хранилище, който ще бъде извикан .gitlab-ci.yml . Този файл ще съдържа инструкциите за изграждане на нашия проект. Сега, всеки път, когато натискаме ангажимент към нашия екземпляр GitLab, GitLab би извикал Runner, за да изгради и тества проекта.

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

изображение: възел: последен
етапи:
- изграждане
кеш:
пътеки:
- node_modules /
инсталационни_зависимости:
етап: изграждане
сценарий:
- npm инсталиране

Имаме само един етап изграждане и то просто npm инсталиране като сценарий. Това е команда, която би трябвало да стартирате ръчно всеки път, когато промяна дойде във вашия проект. Бегачът на GitLab би направил това вместо вас. Runner може да бъде инсталиран в клъстер Kubernetes, VPS в облака или във вашата локална работна станция и ако е активен, той ще чака инструкции от сървъра на GitLab за изпълнение на компилация.

Бихме инсталирали и конфигурирали Runner локално, за да го автоматизираме.

Получаване на Runner Token

Отворете хранилището си в GitLab и посетете настройките на CD / CI. Това е Настройки → CD / CI във вашето хранилище за тестове.

Оставете настройката Auto DevOps по подразбиране и кликнете върху РАЗШИРЕТЕ за да разширите общите настройки на тръбопровода и ще ви бъде показан Runner Token. Копирайте стойността му и, разбира се, го запазете лично, ако оценявате проекта си.

Използвайки този маркер, вашият локален изпълним файл на GitLab Runner ще може да се регистрира сигурно във вашия екземпляр на GitLab.

Инсталиране на GitLab Runner

GitLab-Runner е малка лека програма, написана на Go, която изпълнява CI работни места на вашата локална машина и изпраща резултатите на GitLab, за да разгледа промените. Това е единичен изпълним файл, който може да бъде инсталиран на всяка основна операционна система. Следвайте инструкциите тук, за вашата конкретна операционна система. Тези инсталации се различават изключително много, така че изброяването на всички тях е невъзможно.

Като алтернатива можете да използвате Runner като услуга на Docker, но нека просто се придържаме към традиционната инсталация, тъй като командите са по-лесни за четене и разбиране за четеца. След като го инсталирате на вашата локална работна станция, трябва да изпълните командата:

$ gitlab-runner регистър

Това ще ви зададе няколко въпроса, започвайки с вашия GitLab-CI координатор, който ще бъде вашият GitLab екземпляр:

$ gitlab-runner регистър
Моля, въведете URL адреса на координатора на gitlab-ci (напр.ж. https: // gitlab.com /):
https: // gitlab.пример.com

След това ще поиска вашия Runner Token, който получихме в предишния раздел:

Моля, въведете gitlab-ci токена за този бегач:

Your_Secret_Token

След това за някакво идентифициращо описание и можете просто да пропуснете добавянето на всякакви тагове, като натиснете :

Моля, въведете описанието на gitlab-ci за този бегач:

[Име на хост]: Демонстрация за настройка на CI с помощта на Runner

Моля, въведете gitlab-ci таговете за този бегач (разделени със запетая):

Регистрирането на бегач ... успя

Най-важното е, че ще ви поиска изпълнител (повече за това след малко), ние ще изберем Docker заради нашия пример.

Моля, въведете изпълнителя: docker-ssh + машина, kubernetes, паралели, shell, ssh, virtualbox, docker + машина, docker, docker-ssh:

докер

Образът на базовия докер, в който ще се извърши компилацията, трябва да бъде посочен, нашето примерно приложение използва възел, така че ще посочим изображение на възел:

Моля, въведете изображението на Docker по подразбиране (напр.ж. рубин: 2.1):

възел: последен

Бегачът се регистрира успешно. Чувствайте се свободни да го стартирате, но ако вече работи, конфигурацията трябва да се презареди автоматично!

Сега нещо, което се нуждае от малко обяснение тук, е какво точно представляват изпълнители? Начинът на работа на CI е, че изграждането на модули, тяхното тестване и т.н. са известни като работни места и изпълнителите изпълняват тези задачи. Ако сте избрали VirtualBox като изпълнител, тогава GitLab runner ще се интегрира с локално инсталирания VirtualBox и ще изпълни CI заданията във VM, ако изберете kubernetes, това ще се случи във вашия клъстер Kubernetes, в облака, ако изберете ssh, можете делегирайте CI задачите на отдалечен сървър.

Нашият примерен проект се основава на Docker, така че има смисъл да използваме Docker като наш изпълнител. Трябва да имате Docker инсталиран локално за това.

Наличието на множество опции за изпълнители прави Runner по-гъвкав. Може да искате да изграждате локално, защото файловете на проекта са твърде големи или може да искате да изпълнявате в отдалечен сървър с 20 ядра и половин терабайт RAM, тъй като процесът на изграждане е изчислително интензивен, като посочите опция за изпълнител ви дава тази гъвкавост.

И накрая, във вашата черупка бихте искали да стартирате услугата Runner:

$ gitlab-runner start

Виждайки .gitlab-ci.yml в действие

Сега направихме всички тези промени в нашето местно репо създадохме цялото приложение.js, пакет.json, Dockerfile и .gitlab-ci.yml файлове. Предполага се, че сте извършили промените в локалното хранилище, като изпълните:

$ git етап име_на_файл
$ git commit -m “Съобщение за ангажиране”

Нека да прокараме промените в нашия отдалечен GitLab.

$ git push -u произход

След това можете да отворите проекта си в GitLab, отидете на my-project → Pipeline и ще видите това етикет с надпис „преминал“ до ангажимента, който сте направили. Следващите ангажименти също ще имат етикети.

Така че това са основите на CI с помощта на GitLab и Runner. Надявам се, че публикацията ви е харесала и сте научили нещо ново от нея.

Как да използвам GameConqueror Cheat Engine в Linux
Статията обхваща ръководство за използването на GameConqueror cheat engine в Linux. Много потребители, които играят игри под Windows, често използват ...
Най-добрите емулатори на игрови конзоли за Linux
Тази статия ще изброи популярния софтуер за емулация на игрова конзола, наличен за Linux. Емулацията е слой за софтуерна съвместимост, който емулира х...
Най-добрите дистрибуции на Linux за игри през 2021 г
Операционната система Linux е изминала дълъг път от първоначалния си, прост, базиран на сървъра външен вид. Тази операционна система се подобри неимов...