Thank you for reading this post, don't forget to subscribe!
Сценарий
Допустим, у нас есть API-интерфейс Node.js, который извлекает список книг в базе данных.
Мы можем создать пайплайн, который проталкивает наш код на три этапа: сборка, тестирование и развертывание.
Пайплайн — это группа шагов, которые сгруппированы по сходным характеристикам.
Пайплайн проекта устанавливает зависимости, запускает линтеры и любые скрипты, которые работают с кодом.
Пайплайн непрерывной интеграции запускает автоматизированные тесты и создает распределенную версию кода.
Наконец, Deploy Pipeline развертывает код для назначенного облачного провайдера и среды.
Шаги, выполняемые тремя конвейерами, называются заданиями.
Когда вы группируете серию заданий по этим характеристикам, это называется этапами.
Рабочие места являются основным строительным блоком для трубопроводов.
Они могут быть сгруппированы по этапам, а этапы могут быть сгруппированы в конвейеры.
Вот пример иерархии заданий, этапов и конвейеров:
1 2 3 4 |
<span class="tlid-translation translation" lang="ru"><span title="">А.) Сборка</span> <span title="">я.</span> <span title="">Установка зависимостей NPM</span> <span title="">II</span><span title="">.</span> <span title="">Запуск ES-Linter</span> <span title="">III</span><span title="">.</span> <span title="">Запуск </span></span></code><code>Code-Minifier |
1 2 3 4 5 6 7 8 9 |
<span class="tlid-translation translation" lang="ru"> <span title="">B.) Тест</span> <span title="">I.</span> <span title="">Выполнить юнит, функциональный и сквозной тест.</span> <span title="">II</span><span title="">.</span> <span class="" title="">Запустите pkg для компиляции приложения Node.js</span> <span title="">C.) Развертывание</span> I<span title="">.</span> <span title="">производство</span> <span title="">1.) Запустить экземпляр EC2 на AWS</span> <span title="">II</span><span title="">.</span> <span title="">инсценировка</span> <span class="" title="">1.) Запустить на локальном сервере разработки</span></span> |
Использование GitLab CI / CD
Чтобы использовать GitLab CI / CD, создайте файл с именем .gitlab-ci.yml в корне проекта в своем репозитории GitLab и добавьте следующий yaml:
[codesyntax lang="php"]
1 2 3 4 5 6 7 8 9 |
image: node:10.5.0 stages: - build - test - deploy before_script: - npm install |
[/codesyntax]
Как я упоминал ранее, GitLab CI / CD использует раннеры для выполнения пайплайнов.
Мы можем определить, на какую операционную систему и предопределенные библиотеки мы хотим, чтобы наш раннер основывался, используя директиву image.
В нашем случае мы будем использовать последнюю версию Node.js.
Директива stages позволяет нам заранее определить этап для всей конфигурации.
Задания будут выполняться в порядке, указанном в директиве stages.
Директива before_script используется для запуска команды перед всеми заданиями.
Теперь давайте начнем с нашей работы, посвященной этапу сборки.
Мы собираемся назвать эту работу build-min-code.
В этой джобе мы хотим установить зависимости и минимизировать код.
Мы можем начать с использования директивы script.
Директива script — это скрипт оболочки, который выполняется внутри раннера.
Затем мы собираемся назначить эту работу на этап «build». Чтобы назначить работу на этап, используйте директиву stage.
[codesyntax lang="php"]
1 2 3 4 5 |
build-min-code: stage: build script: - npm install - npm run minifier |
[/codesyntax]
[codesyntax lang="php"]
1 2 3 4 |
run-unit-test: stage: test script: - npm run test |
[/codesyntax]
deploy-production
, deploy-staging
.[codesyntax lang="php"]
1 2 3 4 5 6 7 8 9 10 11 12 13 |
deploy-staging: stage: deploy script: - npm run deploy-stage only: - develop deploy-production: stage: deploy script: - npm run deploy-prod only: - master |
[/codesyntax]

[codesyntax lang="php"]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
image: node:10.5.0 stages: - build - test - deploy before_script: - npm install build-min-code: stage: build script: - npm install - npm run minifier run-unit-test: stage: test script: - npm run test deploy-staging: stage: deploy script: - npm run deploy-stage only: - develop deploy-production: stage: deploy script: - npm run deploy-prod only: - master |
[/codesyntax]