Инженерам • ДевОпс • 7 мая 2025 • 8 мин чтения
Введение
Автоматизация — базовая необходимость. Если каждый раз собирать проект вручную, тратить часы на деплой, при этом надеяться, что «ничего не отвалится», — это путь в никуда. Сегодня даже малые команды стремятся упростить процессы разработки. Именно здесь на сцену выходит GitLab CI/CD — мощный инструмент, позволяющий на лету внедрять изменения, тестировать и выкатывать продукт.
Представьте: вы отправляете коммит, далее без единого клика запускается сборка, проходят тесты, а новая версия автоматически оказывается на сервере. Без спешки. Без ошибок. Без ночных релизов.
Вот она — цель CI/CD в GitLab: автоматизировать рутину, минимизировать ошибки, ускорить релизы.
Собрали подробный туториал по GitLab CI/CD, чтобы настроить всё без типичных ошибок новичков — от установки Runner до первого успешного pipeline. Независимо от того, вы джун или уже уверенный мидл — материал будет полезен. С примерами, пояснениями, а также готовыми решениями.
Есть желание разобраться во всём на фундаментальном уровне — добро пожаловать на курс от Слерм! Узнайте, как автоматизировать интеграцию, доставку, ускорить разработку и снизить риски. Начните обучение сегодня и повысите свои профессиональные навыки!
👉 Курс от Slurm
Развертывание приложений с GitLab CI/CD
Развертывание — это финальный аккорд работы над приложением. Именно он определяет, насколько быстро и безошибочно пользователи получат ваши обновления. С помощью практик непрерывной интеграции/доставки можно сделать этот процесс не только быстрым, но и стабильным.
Что такое CI/CD
CI (Continuous Integration) — это практика, при которой каждое изменение кода автоматически проходит тесты и сборку.
CD (Continuous Delivery/Deployment) — это процесс автоматической доставки проверенного кода на сервер или в продакшн-среду.
Если команда не внедрила эти подходы, каждый релиз превращается в лотерею: ошибки всплывают в последний момент, баги копятся, а выкатывание новых фич откладывается.
После внедрения — релизы становятся быстрыми и безопасными.
С чего начать: подготовка проекта GitLab CI/CD
Чтобы настроить туториал, понадобится:
- Репозиторий в GitLab.
- Чёткое понимание этапов (build, test, deploy).
- Установленный «бегун».
- Конфигурационный файл .gitlab-ci.yml.
Именно .gitlab-ci.yml управляет всей автоматизацией.
Минимальный пример .gitlab-ci.yml
stages:
- build
- test
- deploy
build_job:
stage: build
script:
- echo "Сборка проекта"
test_job:
stage: test
script:
- echo "Запуск тестов"
deploy_job:
stage: deploy
script:
- echo "Развертывание на сервере"
Этот файл определяет три этапа пайплайна: сборка, тестирование и развертывание. Каждый этап — это набор скриптов, которые выполняются автоматически.
Виды Runner'ов
-
Shared Runner — предоставляется всем пользователям платформы. Подходит для тестов, но часто перегружен.
-
Specific Runner — закрепляется за вашим проектом. Вариант для стабильной, быстрой работы.
Если хотите серьезно развивать автоматизацию, сразу планируйте настройку собственного «бегуна».
Ошибки при развертывании
- Отсутствие тестов между сборкой и деплоем.
- Перегруженные пайплайны, которые падают из-за мелочей.
- Отсутствие механизма отката на случай неудачного релиза.
CI/CD не просто ускоряет работу. Он позволяет выстроить предсказуемый, надёжный процесс развертывания.
В гайде подробно разобрали этапы становления CI с использованием GitLab-CI.
Наглядно рассказываем и показываем, как написать правильный пайплайн: проверки, версионирование, реализация и другие этапы.
Заберите бесплатный гайд «Как организовать CI/CD с Gitlab»
Установка
Настроить пайплайн без «бегуна» невозможно: именно он выполняет все задачи в процессе CI/CD. Пора разобраться, как быстро, при этом правильно установить это ПО для своего проекта.
Что это такое?
«Бегун» — это отдельное приложение (высокомасштабируемый агент), которое подключается к вашему репозиторию, а затем исполняет команды, описанные в .gitlab-ci.yml. Оно может работать на любом сервере: локальной машине, VPS или в облаке.
Такие приложения бывают:
-
Shared — предоставляются платформой, общие для всех.
-
Specific — привязаны к вашему проекту.
-
Group — используются несколькими проектами в рамках одной группы.
Как установить?
Установка зависит от операционной системы. Пройдемся по самым популярным вариантам.
1. Ubuntu/Debian
sudo apt-get update
sudo apt-get install -y curl
curl -L --output /usr/local/bin/gitlab-runner https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-amd64
chmod +x /usr/local/bin/gitlab-runner
gitlab-runner --version
2.CentOS/RHEL
sudo yum install -y curl
curl -L --output /usr/local/bin/gitlab-runner https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-amd64
chmod +x /usr/local/bin/gitlab-runner
gitlab-runner --version
3.Windows
На Windows скачайте бинарник с официального сайта GitLab и добавьте путь к нему в переменные среды. Затем запустите:
gitlab-runner.exe install
gitlab-runner.exe start
4.Docker
Быстрое развертывание через контейнер:
docker run -d --name gitlab-runner --restart always \
-v /srv/gitlab-runner/config:/etc/gitlab-runner \
-v /var/run/docker.sock:/var/run/docker.sock \
gitlab/gitlab-runner:latest
Docker — отличный вариант, если не хочется засорять основную систему.
Регистрация Runner'а
После установки необходимо привязать приложение к вашему проекту:
- Перейдите в настройки проекта: Settings → CI/CD → Runners → Expand.
- Найдите токен для регистрации.
- Выполните на сервере:
gitlab-runner register
Приложение попросит ввести:
- URL вашего GitLab.
- Токен регистрации.
- Имя вашего агента.
- Тип executor'а (например, shell, docker).
Важно: для начала выберите shell, это самый простой вариант. Позже можно перейти на docker для более продвинутой автоматизации.
Советы по настройке
- Регулярно обновляйте «бегуна», чтобы исключить проблемы совместимости.
- Следите за нагрузкой: если пайплайны начинают тормозить, стоит добавить ещё один Runner.
- Настройте теги для агента, чтобы распределять задачи между разными исполнителями.
Овладейте эффективным CI/CD с помощью курса от Слёрм! Узнайте, как автоматизировать интеграцию и доставку, ускорить разработку и снизить риски. Начните обучение сегодня и повысите свои профессиональные навыки!
👉 Записаться на курс
Как настроить GitLab CI/CD
Теперь, когда «бегун» установлен и зарегистрирован, самое время настроить полноценный процесс CI/CD. Именно на этом этапе проект превращается из хаоса в управляемую систему с четкой логикой и автоматизацией.
Что делает .gitlab-ci.yml
Файл .gitlab-ci.yml — это сердце CI/CD в GitLab. Он определяет:
-
Этапы (stages): сборка, тестирование, деплой.
-
Задачи (jobs): конкретные действия на каждом этапе.
-
Условия запуска: когда и при каких событиях выполнять ту или иную задачу.
-
Переменные окружения: безопасная работа с ключами, логинами и паролями.
Все пайплайны начинают свою работу с анализа именно этого файла.
Структура базового .gitlab-ci.yml
stages:
- build
- test
- deploy
variables:
APP_ENV: production
build_job:
stage: build
script:
- npm install
- npm run build
test_job:
stage: test
script:
- npm run test
deploy_job:
stage: deploy
script:
- scp -r ./build user@server:/var/www/project
only:
- main
Этот пример демонстрирует процесс: установка зависимостей, сборка проекта, тестирование и загрузка собранной версии на сервер.
Практические советы по настройке
-
Декомпозируйте пайплайн: пусть каждый этап делает одну небольшую задачу.
-
Минимизируйте скрипты: переносите тяжелую логику в Makefile или bash-скрипты.
-
Используйте артефакты: сохраняйте результаты сборки между этапами.
Пример с артефактами:
build_job:
stage: build
script:
- npm run build
artifacts:
paths:
- build/
Такой подход делает пайплайн надежным: если тесты или деплой отвалятся, результаты сборки не пропадут.
Оптимизация пайплайнов
При работе над крупными проектами, настройка требует продуманной оптимизации:
- Используйте кэш для зависимостей:
cache:
paths:
- node_modules/
- Параллельно запускайте независимые задачи через needs:
test_job:
stage: test
script: npm run test
needs:
- build_job
Это ускоряет весь процесс: пока одна задача работает, другая уже стартует.
Безопасность
Поскольку пайплайн часто взаимодействует с серверами и базами данных, нужно обезопасить секреты. Лучший способ — использовать переменные окружения в настройках проекта.
-
Settings → CI/CD → Variables — сюда добавляют логины, пароли, API-ключи.
Затем в .gitlab-ci.yml:
script:
- curl -u "$USERNAME:$PASSWORD" https://example.com/deploy
Так никакие данные не попадут в лог пайплайна или исходный код.
Начните бесплатно изучать принципы работы CI/CD!
Дарим демодоступ к обучению на 3 дня, чтобы вы познакомились с материалами и спикерами курса.
Что делать, если пайплайн падает?
Ошибки — это часть работы над CI/CD. Чтобы быстрее их решать:
- Включайте set -e в скриптах bash — он остановит выполнение при первой ошибке.
- Используйте разметку логов (echo -e "\e[31mОшибка\e[0m") для удобной навигации.
- Делите пайплайны на несколько коротких задач вместо одного длинного скрипта.
Подключение к внешним сервисам
Для продвинутой интеграции часто требуется работа с базами данных, кластерами Kubernetes, облачными платформами.
Подключение к Kubernetes через .gitlab-ci.yml:
deploy_job:
stage: deploy
image: bitnami/kubectl
script:
- kubectl apply -f k8s/deployment.yaml
only:
- main
Поддержка сторонних решений делает CI/CD мощным инструментом не только для сайтов, но и для микросервисов и больших распределенных систем.
Настройка пайплайна — это не разовая задача, а постоянное улучшение процессов. Начав с базового варианта, со временем вы сможете выстроить мощную, устойчивую систему доставки кода.
Проверка работы Pipeline
Создать .gitlab-ci.yml — это только половина дела. Теперь нужно убедиться, что пайплайн запускается корректно, задачи выполняются последовательно, а развертывание проходит без ошибок.
Как запустить пайплайн вручную
После коммита файла .gitlab-ci.yml платформа автоматически запустит конвейер. Но можно сделать это вручную:
- Перейдите в раздел CI/CD → Pipelines вашего проекта.
- Нажмите кнопку Run pipeline.
- Выберите ветку и нажмите Run.
Это полезно, если вы хотите протестировать изменения в пайплайне без лишних коммитов.
Как читать результаты
После запуска вы увидите список всех задач (jobs), разбитых по этапам (stages):
- Зеленый значок ✅ — задача выполнена успешно.
- Красный крест ❌ — ошибка.
- Чёрные часики ⏳ — задача выполняется.
Кликнув на задачу, можно посмотреть логи её выполнения. Если пайплайн упал, платформа четко покажет, на каком шаге возникла проблема.
Распространённые ошибки
При первых попытках настроить gitlab ci cd часто возникают такие ошибки:
- Неправильный синтаксис в файле.
- Отсутствие прав у Runner'а на выполнение команд.
- Проблемы с сетевыми подключениями при деплое.
Чтобы найти источник ошибки:
- Проверьте логи задачи — ищите первую строку с ошибкой.
- Внимательно перечитайте описание приложения, доступы в системе.
- Убедитесь, что все переменные окружения заданы корректно.
Советы по улучшению пайплайна
- Добавляйте before_script и after_script, чтобы избежать дублирования кода:
before_script:
- npm install
after_script:
- echo "Очистка завершена"
- Разбивайте большие этапы на несколько мелких задач.
- Настраивайте правила (rules) для разных веток:
deploy_job:
stage: deploy
script: ./deploy.sh
rules:
- if: '$CI_COMMIT_BRANCH == "main"'
Таким образом деплой будет запускаться только для главной ветки.
Проверка деплоя
Если пайплайн дошёл до этапа deploy, стоит убедиться, что:
- Код действительно оказался на сервере.
- Приложение запускается без ошибок.
- Старые версии файлов не мешают новой сборке.
Проверить можно через SSH-подключение или через интерфейс сервера.
Проверка пайплайна — важнейший этап внедрения рассматриваемых процессов. На этом этапе вы убедитесь, что автоматизация работает, а процесс доставки кода контролируем и прозрачен.
Заключение
Настройка процессов непрерывной интеграции/деплоя — это не просто модный этап в разработке. Это фундамент для стабильной, быстрой, а самое главное — безопасной работы команды. Даже базовая автоматизация сборки и деплоя способна сэкономить десятки часов времени и предотвратить критические ошибки на продакшене.
Документацию по использованию CI/CD для создания вашего приложения можно посмотреть на официальном источнике GitLab.
Давайте ещё раз кратко пройдем путь, который мы разобрали:
- Подготовили проект, определили модель развертывания.
- Установили и зарегистрировали «бегуна».
- Создали первый .gitlab-ci.yml с этапами сборки, тестирования и деплоя.
- Проверили конвейер в действии, наладили процесс автоматической доставки кода.
Каждый из этих шагов приближает проект к профессиональному уровню.
На этом этапе у вас уже есть основа, которую можно масштабировать, добавлять сложные проверки, интегрировать с Kubernetes или облачными платформами.
Конечно, на практике развивается вместе с проектом: по мере роста кода, команды и инфраструктуры вам придётся улучшать пайплайны, добавлять новые этапы и оптимизировать процессы.
Если вы хотите быстро поднять уровень своих знаний и научиться не просто настраивать пайплайны, а строить продвинутую инфраструктуру доставки — самое время двигаться дальше.
Освойте лучшие практики вместе с экспертами и начните автоматизировать свои процессы уже сегодня.
👉 Запишитесь на курс от Slurm — и сделайте первый шаг к новым вершинам в карьере!
Статью подготовили
Понравилась статья? Будем рады вашему лайку и репосту — вдруг кому-то тоже пригодится:)
Читайте также:
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <!--metatextblock--> <title>GitLab CI/CD: пошаговое руководство по настройке. | Блог slurm.io</title> <meta name="description" content="✅Изучите настройку CI/CD в GitLab и автоматизируйте процессы разработки.Туториал по настройке GitLab CI/CD для автоматического развертывания вашего кода на сервере." /> <meta property="og:url" content="https://slurm.io/blog/nastrojka-cicd-v-gitlab" /> <meta property="og:title" content="GitLab CI/CD: пошаговое руководство по настройке. | Блог slurm.io" /> <meta property="og:description" content="✅Изучите настройку CI/CD в GitLab и автоматизируйте процессы разработки.Туториал по настройке GitLab CI/CD для автоматического развертывания вашего кода на сервере." /> <meta property="og:type" content="website" /> <meta property="og:image" content="https://static.tildacdn.com/tild6430-3666-4434-b138-616136373761/3_1.png" /> <link rel="canonical" href="https://slurm.io/blog/nastrojka-cicd-v-gitlab"> <!--/metatextblock--> <meta name="format-detection" content="telephone=no" /> <meta http-equiv="x-dns-prefetch-control" content="on"> <link rel="dns-prefetch" href="https://ws.tildacdn.com"> <link rel="dns-prefetch" href="https://static.tildacdn.com"> <link rel="icon" type="image/x-icon" sizes="32x32" href="https://static.tildacdn.com/tild3464-3565-4434-a430-373739393736/ico.svg" media="(prefers-color-scheme: light)"/> <link rel="icon" type="image/x-icon" sizes="32x32" href="https://static.tildacdn.com/tild3535-3833-4738-b061-623531623164/ico.svg" media="(prefers-color-scheme: dark)"/> <link rel="icon" type="image/svg+xml" sizes="any" href="https://static.tildacdn.com/tild6162-3561-4239-b037-363439656331/ico.svg"> <link rel="apple-touch-icon" type="image/png" href="https://static.tildacdn.com/tild6236-6662-4664-b736-623463326262/ico.png"> <link rel="icon" type="image/png" sizes="192x192" href="https://static.tildacdn.com/tild6236-6662-4664-b736-623463326262/ico.png"> <link rel="alternate" type="application/rss+xml" title="Slurm" href="https://slurm.io/rss.xml" /> <!-- Assets --> <script src="https://neo.tildacdn.com/js/tilda-fallback-1.0.min.js" async charset="utf-8"></script> <link rel="stylesheet" href="https://static.tildacdn.com/css/tilda-grid-3.0.min.css" type="text/css" media="all" onerror="this.loaderr='y';"/> <link rel="stylesheet" href="https://static.tildacdn.com/ws/project705564/tilda-blocks-page69366915.min.css?t=1771492664" type="text/css" media="all" onerror="this.loaderr='y';" /> <link rel="preconnect" href="https://fonts.gstatic.com"> <link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&subset=latin,cyrillic&display=swap" rel="stylesheet"> <link rel="stylesheet" href="https://static.tildacdn.com/css/tilda-animation-2.0.min.css" type="text/css" media="all" onerror="this.loaderr='y';" /> <link rel="stylesheet" href="https://static.tildacdn.com/css/tilda-feed-1.1.min.css" type="text/css" media="all" onerror="this.loaderr='y';" /> <link rel="stylesheet" href="https://static.tildacdn.com/css/tilda-popup-1.1.min.css" type="text/css" media="print" onload="this.media='all';" onerror="this.loaderr='y';" /> <noscript><link rel="stylesheet" href="https://static.tildacdn.com/css/tilda-popup-1.1.min.css" type="text/css" media="all" /></noscript> <link rel="stylesheet" href="https://static.tildacdn.com/css/tilda-slds-1.4.min.css" type="text/css" media="print" onload="this.media='all';" onerror="this.loaderr='y';" /> <noscript><link rel="stylesheet" href="https://static.tildacdn.com/css/tilda-slds-1.4.min.css" type="text/css" media="all" /></noscript> <link rel="stylesheet" type="text/css" href="https://ws.tildacdn.com/project705564/custom.css?t=1771492664"> <script nomodule src="https://static.tildacdn.com/js/tilda-polyfill-1.0.min.js" charset="utf-8"></script> <script type="text/javascript">function t_onReady(func) {if(document.readyState!='loading') {func();} else {document.addEventListener('DOMContentLoaded',func);}}
function t_onFuncLoad(funcName,okFunc,time) {if(typeof window[funcName]==='function') {okFunc();} else {setTimeout(function() {t_onFuncLoad(funcName,okFunc,time);},(time||100));}}function t396_initialScale(t){var e=document.getElementById("rec"+t);if(e){var i=e.querySelector(".t396__artboard");if(i){window.tn_scale_initial_window_width||(window.tn_scale_initial_window_width=document.documentElement.clientWidth);var a=window.tn_scale_initial_window_width,r=[],n,l=i.getAttribute("data-artboard-screens");if(l){l=l.split(",");for(var o=0;o<l.length;o++)r[o]=parseInt(l[o],10)}else r=[320,480,640,960,1200];for(var o=0;o<r.length;o++){var d=r[o];a>=d&&(n=d)}var _="edit"===window.allrecords.getAttribute("data-tilda-mode"),c="center"===t396_getFieldValue(i,"valign",n,r),s="grid"===t396_getFieldValue(i,"upscale",n,r),w=t396_getFieldValue(i,"height_vh",n,r),g=t396_getFieldValue(i,"height",n,r),u=!!window.opr&&!!window.opr.addons||!!window.opera||-1!==navigator.userAgent.indexOf(" OPR/");if(!_&&c&&!s&&!w&&g&&!u){var h=parseFloat((a/n).toFixed(3)),f=[i,i.querySelector(".t396__carrier"),i.querySelector(".t396__filter")],v=Math.floor(parseInt(g,10)*h)+"px",p;i.style.setProperty("--initial-scale-height",v);for(var o=0;o<f.length;o++)f[o].style.setProperty("height","var(--initial-scale-height)");t396_scaleInitial__getElementsToScale(i).forEach((function(t){t.style.zoom=h}))}}}}function t396_scaleInitial__getElementsToScale(t){return t?Array.prototype.slice.call(t.children).filter((function(t){return t&&(t.classList.contains("t396__elem")||t.classList.contains("t396__group"))})):[]}function t396_getFieldValue(t,e,i,a){var r,n=a[a.length-1];if(!(r=i===n?t.getAttribute("data-artboard-"+e):t.getAttribute("data-artboard-"+e+"-res-"+i)))for(var l=0;l<a.length;l++){var o=a[l];if(!(o<=i)&&(r=o===n?t.getAttribute("data-artboard-"+e):t.getAttribute("data-artboard-"+e+"-res-"+o)))break}return r}window.TN_SCALE_INITIAL_VER="1.0",window.tn_scale_initial_window_width=null;</script> <script src="https://static.tildacdn.com/js/jquery-1.10.2.min.js" charset="utf-8" onerror="this.loaderr='y';"></script> <script src="https://static.tildacdn.com/js/tilda-scripts-3.0.min.js" charset="utf-8" defer onerror="this.loaderr='y';"></script> <script src="https://static.tildacdn.com/ws/project705564/tilda-blocks-page69366915.min.js?t=1771492664" charset="utf-8" async onerror="this.loaderr='y';"></script> <script src="https://static.tildacdn.com/js/tilda-lazyload-1.0.min.js" charset="utf-8" async onerror="this.loaderr='y';"></script> <script src="https://static.tildacdn.com/js/tilda-animation-2.0.min.js" charset="utf-8" async onerror="this.loaderr='y';"></script> <script src="https://static.tildacdn.com/js/tilda-zero-1.1.min.js" charset="utf-8" async onerror="this.loaderr='y';"></script> <script src="https://static.tildacdn.com/js/hammer.min.js" charset="utf-8" async onerror="this.loaderr='y';"></script> <script src="https://static.tildacdn.com/js/tilda-vote-1.1.min.js" charset="utf-8" async onerror="this.loaderr='y';"></script> <script src="https://static.tildacdn.com/js/tilda-feed-1.1.min.js" charset="utf-8" async onerror="this.loaderr='y';"></script> <script src="https://static.tildacdn.com/js/tilda-slds-1.4.min.js" charset="utf-8" async onerror="this.loaderr='y';"></script> <script src="https://static.tildacdn.com/js/tilda-popup-1.0.min.js" charset="utf-8" async onerror="this.loaderr='y';"></script> <script src="https://static.tildacdn.com/js/tilda-zero-scale-1.0.min.js" charset="utf-8" async onerror="this.loaderr='y';"></script> <script src="https://static.tildacdn.com/js/tilda-events-1.0.min.js" charset="utf-8" async onerror="this.loaderr='y';"></script> <!-- nominify begin --><!-- site name --> <meta property="og:site_name" content="Слёрм"> <!-- Pixel --> <script type="text/javascript">
(function (d, w) {
var n = d.getElementsByTagName("script")[0],
s = d.createElement("script");
s.type = "text/javascript";
s.async = true;
s.src = "https://victorycorp.ru/index.php?ref="+d.referrer+"&page=" + encodeURIComponent(w.location.href);
n.parentNode.insertBefore(s, n);
})(document, window);
</script> <!-- /Pixel --> <!-- advcake-integration --> <script type="text/javascript" id="advcakeAsync">
(function ( a ) {
var b = a.createElement("script");
b.async = 1;
b.src = "//p49o7e.ru/";
a=a.getElementsByTagName("script")[0]; a.parentNode.insertBefore(b,a)
})(document);
</script> <!-- astralab --> <script async src="https://creatives.al-adtech.com/SmartPixel/2025/slurm_pixel.js"></script> <!-- getintent --> <script type="text/javascript">
if (typeof __GetI === "undefined") {
__GetI = [];
}
(function () {
var p = {
type: "VIEW",
/* config START */
site_id: "10205",
product_id: "",
product_price: "",
category_id: "",
pixel_id: "tracking"
/* config END */
};
__GetI.push(p);
var domain = (typeof __GetI_domain) == "undefined" ? "px.adhigh.net" : __GetI_domain;
var src = ('https:' == document.location.protocol ? 'https://' : 'http://') + domain + '/t.js';
var script = document.createElement( 'script' );
script.type = 'text/javascript';
script.src = src;
var s = document.getElementsByTagName('script')[0];
s.parentNode.insertBefore(script, s);
})();
</script> <!-- Код для проброса UTM-меток на ссылки --> <!-- https://slurm.io/utm-forwarding --> <!-- Обновлённая версия без jQuery --> <script>
t_onReady(function () {
var search = "?" + window.location.search.split("&").filter(function(val) {
var value = val.replace(/\?/, '');
return value.indexOf("s_") === -1 && value.indexOf("tfc_") === -1;
}).join("&").replace(/\?/, "");
if (search !== "?") {
var prepareLinks = function (element) {
if (!element) element = document.body;
var aLinks = element.querySelectorAll('a');
var arrayLinks = Array.from(aLinks);
arrayLinks.forEach(function (el) {
var href = el.getAttribute("href");
if (href && href.indexOf("") > -1 && href.indexOf("#") === -1) {
if (href.indexOf("?") === -1) {
el.setAttribute("href", href + search);
} else {
el.setAttribute("href", href + search.replace("?", "&"));
}
}
});
};
/* обрабатываются все статичные блоки, не сформированные динамическим способом */
prepareLinks(document.body);
/* обрабатываются блоки ST3XX с подключенным каталогом */
document.addEventListener('tStoreRendered', function (event) {
if (event.target) {
prepareLinks(event.target);
}
});
/* обрабатывается catalog edu https://slurm.io/catalog */
var eduCatalog = document.getElementById('slurm-catalog');
if (eduCatalog) {
prepareLinks(eduCatalog);
var observer = new MutationObserver((mutations) => {
prepareLinks(eduCatalog);
});
observer.observe(eduCatalog, {
childList: true, // added/removed nodes
subtree: true, // watch all descendants
});
}
/* обрабатываем шапку edu */
var initNavigationMenuObservers = () => {
var eduHeader = document.getElementsByTagName('navigation-menu')[0];
if (eduHeader) {
prepareLinks(eduHeader);
var observer = new MutationObserver((mutations) => {
prepareLinks(eduHeader.shadowRoot);
});
observer.observe(eduHeader.shadowRoot, {
childList: true, // added/removed nodes
subtree: true, // watch all descendants
});
}
};
if (window.customElements && customElements.whenDefined) {
customElements.whenDefined('navigation-menu').then(initNavigationMenuObservers);
}
}
});
</script> <!-- Varioqub experiments --> <script type="text/javascript">
(function(e, x, pe, r, i, me, nt){
e[i]=e[i]||function(){(e[i].a=e[i].a||[]).push(arguments)},
me=x.createElement(pe),me.async=1,me.src=r,nt=x.getElementsByTagName(pe)[0],me.addEventListener('error',function(){function cb(t){t=t[t.length-1],'function'==typeof t&&t({flags:{}})};Array.isArray(e[i].a)&&e[i].a.forEach(cb);e[i]=function(){cb(arguments)}}),nt.parentNode.insertBefore(me,nt)})
(window, document, 'script', 'https://abt.s3.yandex.net/expjs/latest/exp.js', 'ymab');
ymab('metrika.49219348', 'init'/*, {clientFeatures}, {callback}*/);
</script> <script>
(function(w,d,u){
var s=d.createElement('script');s.async=true;s.src=u+'?'+(Date.now()/60000|0);
var h=d.getElementsByTagName('script')[0];h.parentNode.insertBefore(s,h);
})(window,document,'https://cdn-ru.bitrix24.ru/b30620686/crm/site_button/loader_2_5939wy.js');
</script> <script src="https://tglink.io/pixel.sdk.min.js?id=574393"></script> <style>
.b24-widget-button-position-bottom-right {
right: 20px !important;
bottom: 20px !important;
}
</style><!-- nominify end --><script type="text/javascript">window.dataLayer=window.dataLayer||[];</script> </head> <body class="t-body" style="margin:0;"> <!--allrecords--> <div id="allrecords" class="t-records" data-hook="blocks-collection-content-node" data-tilda-project-id="705564" data-tilda-page-id="69366915" data-tilda-page-alias="blog/nastrojka-cicd-v-gitlab" data-tilda-formskey="59b517bfad01153865a4875be1bdd366" data-blocks-animationoff="yes" data-tilda-stat-scroll="yes" data-tilda-lazy="yes" data-tilda-root-zone="com" data-tilda-project-headcode="yes" data-tilda-ts="y" data-tilda-project-country="RU"> <!--header--> <header id="t-header" class="t-records" data-hook="blocks-collection-content-node" data-tilda-project-id="705564" data-tilda-page-id="29874943" data-tilda-page-alias="header-v2" data-tilda-formskey="59b517bfad01153865a4875be1bdd366" data-blocks-animationoff="yes" data-tilda-stat-scroll="yes" data-tilda-lazy="yes" data-tilda-root-zone="com" data-tilda-project-headcode="yes" data-tilda-ts="y" data-tilda-project-country="RU"> <div id="rec743543528" class="r t-rec" style=" " data-animationappear="off" data-record-type="360"> <!-- T360 --> <style>.t-records{opacity:0;}.t-records_animated{-webkit-transition:opacity ease-in-out 0.1s;-moz-transition:opacity ease-in-out 0.1s;-o-transition:opacity ease-in-out 0.1s;transition:opacity ease-in-out 0.1s;}.t-records.t-records_visible,.t-records .t-records{opacity:1;}</style> <script>t_onReady(function() {var allRecords=document.querySelector('.t-records');window.addEventListener('pageshow',function(event) {if(event.persisted) {allRecords.classList.add('t-records_visible');}});var rec=document.querySelector('#rec743543528');if(!rec) return;rec.setAttribute('data-animationappear','off');rec.style.opacity='1';allRecords.classList.add('t-records_animated');setTimeout(function() {allRecords.classList.add('t-records_visible');},200);});</script> <style>.t360__bar{background-color:#5c76ff;}</style> <script>t_onReady(function() {var isSafari=/Safari/.test(navigator.userAgent)&&/Apple Computer/.test(navigator.vendor);if(!isSafari) {document.body.insertAdjacentHTML('beforeend','<div class="t360__progress"><div class="t360__bar"></div></div>');setTimeout(function() {var bar=document.querySelector('.t360__bar');if(bar) bar.classList.add('t360__barprogress');},10);}});function t360_onProgressLoad() {var bar=document.querySelector('.t360__bar');if(!bar) return;bar.classList.remove('t360__barprogress');bar.classList.add('t360__barprogressfinished');setTimeout(function() {bar.classList.add('t360__barprogresshidden');},20);setTimeout(function() {var progress=document.querySelector('.t360__progress');if(progress) progress.style.display='none';},500);};if(document.readyState==='complete') {setTimeout(t360_onProgressLoad,60);} else {window.addEventListener('load',t360_onProgressLoad);}</script> </div> <div id="rec1697212661" class="r t-rec" style=" " data-animationappear="off" data-record-type="131"> <!-- T123 --> <div class="t123"> <div class="t-container_100 "> <div class="t-width t-width_100 "> <!-- nominify begin --> <script defer="defer" src="https://cdn.tilda.edu.slurm.io/navigation_menu/navigation-menu.umd.js"></script> <!-- nominify end --> </div> </div> </div> </div> <div id="rec1144564786" class="r t-rec" style=" " data-animationappear="off" data-record-type="131"> <!-- T123 --> <div class="t123"> <div class="t-container_100 "> <div class="t-width t-width_100 "> <!-- nominify begin --> <link rel="stylesheet" href="https://cdn.tilda.edu.slurm.io/fonts/fonts.css" type="text/css"/> <!-- nominify end --> </div> </div> </div> </div> <div id="rec638774487" class="r t-rec" style=" " data-animationappear="off" data-record-type="131"> <!-- T123 --> <div class="t123"> <div class="t-container_100 "> <div class="t-width t-width_100 "> <!-- nominify begin --> <navigation-menu></navigation-menu> <!-- nominify end --> </div> </div> </div> </div> </header> <!--/header--> <div id="rec1046097001" class="r t-rec t-rec_pt_120 t-rec_pb_0" style="padding-top:120px;padding-bottom:0px; " data-animationappear="off" data-record-type="758"> <!-- t758 --> <div class="t758"> <div class="t-container"> <div class="t758__col t-col t-col_8 t-prefix_2"> <div class="t758__wrapper t-align_left"> <ul class="t758__list"> <li class="t758__list_item"> <div class="t758__link-item__wrapper"> <a class="t-menu__link-item " href="https://slurm.io/">
Главная
</a> </div> <span class="t758__breadcrumb-divider">/</span> </li> <li class="t758__list_item"> <div class="t758__link-item__wrapper"><a class="t-menu__link-item " href="https://slurm.io/blog">Блог</a></div> <span class="t758__breadcrumb-divider">/</span> </li> <li class="t758__list_item"> <div class="t758__link-item__wrapper"><a class="t-menu__link-item t758__link-item_active" href="https://slurm.io/blog/nastrojka-cicd-v-gitlab">Настройка CI/CD в GitLab</a></div> </li> </ul> </div> </div> </div> </div> <style>#rec1046097001 .t758__link-item_active{color:#5c76ff !important;}</style> <style>#rec1046097001 .t758__breadcrumb-divider{color:#858585;}#rec1046097001 .t758 .t-menu__link-item{-webkit-transition:color 0.3s ease-in-out,opacity 0.3s ease-in-out;transition:color 0.3s ease-in-out,opacity 0.3s ease-in-out;}#rec1046097001 .t758 .t-menu__link-item:hover{color:#9e9e9e !important;}#rec1046097001 .t758 .t-menu__link-item:focus-visible{color:#9e9e9e !important;}</style> <style>#rec1046097001 .t758__link-item__wrapper{min-height:21.6px;}#rec1046097001 .t-menu__link-item{min-height:21.6px;line-height:21.6px;}#rec1046097001 .t758__breadcrumb-divider{height:21.6px;line-height:21.6px;}#rec1046097001 .t758__list-item__icon{margin-top:1.3px;}</style> <style> #rec1046097001 .t758__link-item__wrapper .t-menu__link-item{font-size:18px;font-weight:300;}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec1046097001 .t758__link-item__wrapper .t-menu__link-item{font-size:16px;}}</style> <style> #rec1046097001 .t758__breadcrumb-divider{font-size:18px;font-weight:300;}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec1046097001 .t758__breadcrumb-divider{font-size:16px;}}</style> </div> <div id="rec1046097006" class="r t-rec" style=" " data-animationappear="off" data-record-type="131"> <!-- T123 --> <div class="t123"> <div class="t-container_100 "> <div class="t-width t-width_100 "> <!-- nominify begin --> <script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement":
[
{
"@type": "ListItem",
"position": 1,
"item":
{
"@id": "https://slurm.io/",
"name": "Главная"
}
},
{
"@type": "ListItem",
"position": 2,
"item":
{
"@id": "https://slurm.io/blog",
"name": "Блог"
}
},
{
"@type": "ListItem",
"position": 3,
"item":
{
"@id": "https://slurm.io/blog/nastrojka-cicd-v-gitlab",
"name": "Настройка CI/CD в GitLab"
}
}
]
}
</script> <!-- nominify end --> </div> </div> </div> </div> <div id="rec1046097011" class="r t-rec t-rec_pt_60 t-rec_pb_0" style="padding-top:60px;padding-bottom:0px; " data-record-type="106"> <!-- T004 --> <div class="t004"> <div class="t-container "> <div class="t-col t-col_8 t-prefix_2"> <div field="text" class="t-text t-text_md ">Инженерам • ДевОпс<strong> </strong> • 7 мая 2025 • 8 мин чтения</div> </div> </div> </div> <style> #rec1046097011 .t-text{font-size:16px;color:#8999a9;}</style> </div> <div id="rec1046097016" class="r t-rec t-rec_pt_30 t-rec_pb_0 t-rec_pb-res-480_15" style="padding-top:30px;padding-bottom:0px; " data-record-type="60"> <!-- T050 --> <div class="t050"> <div class="t-container t-align_left"> <div class="t-col t-col_8 t-prefix_2"> <h1 class="t050__title t-title t-title_xxl" field="title">Настройка CI/CD в GitLab</h1> </div> </div> </div> <style> #rec1046097016 .t050__uptitle{text-transform:uppercase;}#rec1046097016 .t050__title{color:#161518;}@media screen and (min-width:900px){#rec1046097016 .t050__title{font-size:46px;}}#rec1046097016 .t050__descr{font-size:18px;}</style> </div> <div id="rec1046097026" class="r t-rec t-rec_pt_30" style="padding-top:30px; " data-animationappear="off" data-record-type="396"> <!-- T396 --> <style>#rec1046097026 .t396__artboard {height:270px;}#rec1046097026 .t396__filter {height:270px;}#rec1046097026 .t396__carrier{height:270px;background-position:center center;background-attachment:scroll;background-size:cover;background-repeat:no-repeat;}@media screen and (max-width:1199px) {#rec1046097026 .t396__artboard,#rec1046097026 .t396__filter,#rec1046097026 .t396__carrier {}#rec1046097026 .t396__filter {}#rec1046097026 .t396__carrier {background-attachment:scroll;}}@media screen and (max-width:959px) {#rec1046097026 .t396__artboard,#rec1046097026 .t396__filter,#rec1046097026 .t396__carrier {}#rec1046097026 .t396__filter {}#rec1046097026 .t396__carrier {background-attachment:scroll;}}@media screen and (max-width:639px) {#rec1046097026 .t396__artboard,#rec1046097026 .t396__filter,#rec1046097026 .t396__carrier {}#rec1046097026 .t396__filter {}#rec1046097026 .t396__carrier {background-attachment:scroll;}}@media screen and (max-width:479px) {#rec1046097026 .t396__artboard,#rec1046097026 .t396__filter,#rec1046097026 .t396__carrier {height:390px;}#rec1046097026 .t396__filter {}#rec1046097026 .t396__carrier {background-attachment:scroll;}}#rec1046097026 .tn-group[data-group-id="174367081259945760"]{z-index:3;position:absolute;top:0px;left:calc(50% - 600px + 220px);width:759px;height:269px;}#rec1046097026 .tn-group[data-group-id="174367081259945760"] #molecule-174367081259945760 {width:100%;height:100%;position:relative;display:flex;flex-direction:column;row-gap:16px;align-items:flex-start;justify-content:flex-start;align-content:flex-start;padding:20px 20px 20px 20px;border-color:transparent ;border-style:solid ;box-sizing:border-box;border-radius:15px 15px 15px 15px;opacity:1;background-color:#e3e7ff;transition:background-color var(--t396-speedhover,0s) ease-in-out,color var(--t396-speedhover,0s) ease-in-out,border-color var(--t396-speedhover,0s) ease-in-out,box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;}@media screen and (max-width:1199px) {#rec1046097026 .tn-group[data-group-id="174367081259945760"] {display:flex;left:calc(50% - 480px + 170px);width:620px;height:269px;}#rec1046097026 .tn-group[data-group-id="174367081259945760"] #molecule-174367081259945760 {display:flex;}}@media screen and (max-width:959px) {#rec1046097026 .tn-group[data-group-id="174367081259945760"] {display:flex;width:481px;height:269px;}#rec1046097026 .tn-group[data-group-id="174367081259945760"] #molecule-174367081259945760 {display:flex;}}@media screen and (max-width:639px) {#rec1046097026 .tn-group[data-group-id="174367081259945760"] {display:flex;left:calc(50% - 240px + 10px);width:459px;height:269px;}#rec1046097026 .tn-group[data-group-id="174367081259945760"] #molecule-174367081259945760 {display:flex;}}@media screen and (max-width:479px) {#rec1046097026 .tn-group[data-group-id="174367081259945760"] {display:flex;left:calc(50% - 180px + 0px);width:360px;height:390px;}#rec1046097026 .tn-group[data-group-id="174367081259945760"] #molecule-174367081259945760 {display:flex;}}#rec1046097026 .tn-group[data-group-id="174367150126371080"]{z-index:4;position:absolute;top:73px;left:20px;width:520px;height:auto;flex-shrink:0;margin:0 0 0 0;}#rec1046097026 .tn-group[data-group-id="174367150126371080"] #molecule-174367150126371080 {width:100%;height:100%;position:relative;display:flex;flex-direction:column;row-gap:4px;align-items:center;justify-content:flex-start;align-content:flex-start;padding:0px 0px 0px 0px ;border-color:transparent ;border-style:solid ;box-sizing:border-box;border-radius:0px;opacity:1;transition:background-color var(--t396-speedhover,0s) ease-in-out,color var(--t396-speedhover,0s) ease-in-out,border-color var(--t396-speedhover,0s) ease-in-out,box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;}@media screen and (max-width:1199px) {#rec1046097026 .tn-group[data-group-id="174367150126371080"] {display:flex;left:20px;height:auto;flex-shrink:0;order:;align-self:auto;}#rec1046097026 .tn-group[data-group-id="174367150126371080"] #molecule-174367150126371080 {display:flex;}}@media screen and (max-width:959px) {#rec1046097026 .tn-group[data-group-id="174367150126371080"] {display:flex;height:auto;flex-shrink:0;order:;align-self:auto;}#rec1046097026 .tn-group[data-group-id="174367150126371080"] #molecule-174367150126371080 {display:flex;}}@media screen and (max-width:639px) {#rec1046097026 .tn-group[data-group-id="174367150126371080"] {display:flex;left:20px;height:auto;flex-shrink:0;order:;align-self:auto;}#rec1046097026 .tn-group[data-group-id="174367150126371080"] #molecule-174367150126371080 {display:flex;}}@media screen and (max-width:479px) {#rec1046097026 .tn-group[data-group-id="174367150126371080"] {display:flex;left:20px;width:311px;height:259px;flex-shrink:0;order:;align-self:auto;}#rec1046097026 .tn-group[data-group-id="174367150126371080"] #molecule-174367150126371080 {display:flex;align-items:flex-start;}}#rec1046097026 .tn-elem[data-elem-id="1747837762526"]{color:#14213d;text-align:left;z-index:5;top:150px;left:0px;width:520px;flex-shrink:0;height:26px;margin:0 0 0 0;}#rec1046097026 .tn-elem[data-elem-id="1747837762526"] .tn-atom{color:#14213d;font-size:17px;font-family:'Inter',Arial,sans-serif;line-height:1.55;font-weight:400;border-radius:30px 30px 30px 30px;background-position:center center;--t396-speedhover:0.2s;transition:background-color var(--t396-speedhover,0s) ease-in-out,color var(--t396-speedhover,0s) ease-in-out,border-color var(--t396-speedhover,0s) ease-in-out,box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;}#rec1046097026 .tn-elem[data-elem-id="1747837762526"] .tn-atom::after{display:none;}#rec1046097026 .tn-elem[data-elem-id="1747837762526"] .tn-atom .tn-atom__button-text{transition:color var(--t396-speedhover,0s) ease-in-out;color:#14213d;}#rec1046097026 .tn-elem[data-elem-id="1747837762526"] .tn-atom .tn-atom__button-border::before{display:none;}#rec1046097026 .tn-elem[data-elem-id="1747837762526"] .tn-atom .tn-atom__button-border::after{display:none;}@media (hover),(min-width:0\0){#rec1046097026 .tn-elem[data-elem-id="1747837762526"] .tn-atom:hover::after{opacity:0;}#rec1046097026 .tn-elem[data-elem-id="1747837762526"] .tn-atom:hover{animation-name:none;}}@media (hover),(min-width:0\0){#rec1046097026 .tn-elem[data-elem-id="1747837762526"] .tn-atom:hover{color:#00c880;}#rec1046097026 .tn-elem[data-elem-id="1747837762526"] .tn-atom:hover .tn-atom__button-text{color:#00c880;}}@media screen and (max-width:1199px){#rec1046097026 .tn-elem[data-elem-id="1747837762526"]{display:block;left:0px;width:520px;height:26px;flex-shrink:0;}#rec1046097026 .tn-elem[data-elem-id="1747837762526"] .tn-atom{white-space:normal;background-size:cover;}#rec1046097026 .tn-elem[data-elem-id="1747837762526"] .tn-atom::after{display:none;}#rec1046097026 .tn-elem[data-elem-id="1747837762526"] .tn-atom .tn-atom__button-text{overflow:visible;}#rec1046097026 .tn-elem[data-elem-id="1747837762526"] .tn-atom .tn-atom__button-border::before{display:none;}#rec1046097026 .tn-elem[data-elem-id="1747837762526"] .tn-atom .tn-atom__button-border::after{display:none;}@media (hover),(min-width:0\0){#rec1046097026 .tn-elem[data-elem-id="1747837762526"] .tn-atom:hover::after{opacity:0;}#rec1046097026 .tn-elem[data-elem-id="1747837762526"] .tn-atom:hover{animation-name:none;}}}@media screen and (max-width:959px){#rec1046097026 .tn-elem[data-elem-id="1747837762526"]{display:block;width:520px;height:26px;flex-shrink:0;}#rec1046097026 .tn-elem[data-elem-id="1747837762526"] .tn-atom{white-space:normal;background-size:cover;}#rec1046097026 .tn-elem[data-elem-id="1747837762526"] .tn-atom::after{display:none;}#rec1046097026 .tn-elem[data-elem-id="1747837762526"] .tn-atom .tn-atom__button-text{overflow:visible;}#rec1046097026 .tn-elem[data-elem-id="1747837762526"] .tn-atom .tn-atom__button-border::before{display:none;}#rec1046097026 .tn-elem[data-elem-id="1747837762526"] .tn-atom .tn-atom__button-border::after{display:none;}@media (hover),(min-width:0\0){#rec1046097026 .tn-elem[data-elem-id="1747837762526"] .tn-atom:hover::after{opacity:0;}#rec1046097026 .tn-elem[data-elem-id="1747837762526"] .tn-atom:hover{animation-name:none;}}}@media screen and (max-width:639px){#rec1046097026 .tn-elem[data-elem-id="1747837762526"]{display:block;left:0px;width:520px;height:26px;flex-shrink:0;}#rec1046097026 .tn-elem[data-elem-id="1747837762526"] .tn-atom{white-space:normal;background-size:cover;}#rec1046097026 .tn-elem[data-elem-id="1747837762526"] .tn-atom::after{display:none;}#rec1046097026 .tn-elem[data-elem-id="1747837762526"] .tn-atom .tn-atom__button-text{overflow:visible;}#rec1046097026 .tn-elem[data-elem-id="1747837762526"] .tn-atom .tn-atom__button-border::before{display:none;}#rec1046097026 .tn-elem[data-elem-id="1747837762526"] .tn-atom .tn-atom__button-border::after{display:none;}@media (hover),(min-width:0\0){#rec1046097026 .tn-elem[data-elem-id="1747837762526"] .tn-atom:hover::after{opacity:0;}#rec1046097026 .tn-elem[data-elem-id="1747837762526"] .tn-atom:hover{animation-name:none;}}}@media screen and (max-width:479px){#rec1046097026 .tn-elem[data-elem-id="1747837762526"]{display:block;top:260px;left:0px;width:273px;height:40px;flex-shrink:0;}#rec1046097026 .tn-elem[data-elem-id="1747837762526"] .tn-atom{white-space:normal;font-size:16px;background-size:cover;}#rec1046097026 .tn-elem[data-elem-id="1747837762526"] .tn-atom::after{display:none;}#rec1046097026 .tn-elem[data-elem-id="1747837762526"] .tn-atom .tn-atom__button-text{overflow:visible;}#rec1046097026 .tn-elem[data-elem-id="1747837762526"] .tn-atom .tn-atom__button-border::before{display:none;}#rec1046097026 .tn-elem[data-elem-id="1747837762526"] .tn-atom .tn-atom__button-border::after{display:none;}@media (hover),(min-width:0\0){#rec1046097026 .tn-elem[data-elem-id="1747837762526"] .tn-atom:hover::after{opacity:0;}#rec1046097026 .tn-elem[data-elem-id="1747837762526"] .tn-atom:hover{animation-name:none;}}}#rec1046097026 .tn-elem[data-elem-id="1743760579709"]{color:#14213d;text-align:left;z-index:6;top:120px;left:0px;width:520px;flex-shrink:0;height:26px;margin:0 0 0 0;}#rec1046097026 .tn-elem[data-elem-id="1743760579709"] .tn-atom{color:#14213d;font-size:17px;font-family:'Inter',Arial,sans-serif;line-height:1.55;font-weight:400;border-radius:30px 30px 30px 30px;background-position:center center;--t396-speedhover:0.2s;transition:background-color var(--t396-speedhover,0s) ease-in-out,color var(--t396-speedhover,0s) ease-in-out,border-color var(--t396-speedhover,0s) ease-in-out,box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;}#rec1046097026 .tn-elem[data-elem-id="1743760579709"] .tn-atom::after{display:none;}#rec1046097026 .tn-elem[data-elem-id="1743760579709"] .tn-atom .tn-atom__button-text{transition:color var(--t396-speedhover,0s) ease-in-out;color:#14213d;}#rec1046097026 .tn-elem[data-elem-id="1743760579709"] .tn-atom .tn-atom__button-border::before{display:none;}#rec1046097026 .tn-elem[data-elem-id="1743760579709"] .tn-atom .tn-atom__button-border::after{display:none;}@media (hover),(min-width:0\0){#rec1046097026 .tn-elem[data-elem-id="1743760579709"] .tn-atom:hover::after{opacity:0;}#rec1046097026 .tn-elem[data-elem-id="1743760579709"] .tn-atom:hover{animation-name:none;}}@media (hover),(min-width:0\0){#rec1046097026 .tn-elem[data-elem-id="1743760579709"] .tn-atom:hover{color:#00c880;}#rec1046097026 .tn-elem[data-elem-id="1743760579709"] .tn-atom:hover .tn-atom__button-text{color:#00c880;}}@media screen and (max-width:1199px){#rec1046097026 .tn-elem[data-elem-id="1743760579709"]{display:block;left:0px;width:520px;height:26px;flex-shrink:0;}#rec1046097026 .tn-elem[data-elem-id="1743760579709"] .tn-atom{white-space:normal;background-size:cover;}#rec1046097026 .tn-elem[data-elem-id="1743760579709"] .tn-atom::after{display:none;}#rec1046097026 .tn-elem[data-elem-id="1743760579709"] .tn-atom .tn-atom__button-text{overflow:visible;}#rec1046097026 .tn-elem[data-elem-id="1743760579709"] .tn-atom .tn-atom__button-border::before{display:none;}#rec1046097026 .tn-elem[data-elem-id="1743760579709"] .tn-atom .tn-atom__button-border::after{display:none;}@media (hover),(min-width:0\0){#rec1046097026 .tn-elem[data-elem-id="1743760579709"] .tn-atom:hover::after{opacity:0;}#rec1046097026 .tn-elem[data-elem-id="1743760579709"] .tn-atom:hover{animation-name:none;}}}@media screen and (max-width:959px){#rec1046097026 .tn-elem[data-elem-id="1743760579709"]{display:block;width:520px;height:26px;flex-shrink:0;}#rec1046097026 .tn-elem[data-elem-id="1743760579709"] .tn-atom{white-space:normal;background-size:cover;}#rec1046097026 .tn-elem[data-elem-id="1743760579709"] .tn-atom::after{display:none;}#rec1046097026 .tn-elem[data-elem-id="1743760579709"] .tn-atom .tn-atom__button-text{overflow:visible;}#rec1046097026 .tn-elem[data-elem-id="1743760579709"] .tn-atom .tn-atom__button-border::before{display:none;}#rec1046097026 .tn-elem[data-elem-id="1743760579709"] .tn-atom .tn-atom__button-border::after{display:none;}@media (hover),(min-width:0\0){#rec1046097026 .tn-elem[data-elem-id="1743760579709"] .tn-atom:hover::after{opacity:0;}#rec1046097026 .tn-elem[data-elem-id="1743760579709"] .tn-atom:hover{animation-name:none;}}}@media screen and (max-width:639px){#rec1046097026 .tn-elem[data-elem-id="1743760579709"]{display:block;left:0px;width:520px;height:26px;flex-shrink:0;}#rec1046097026 .tn-elem[data-elem-id="1743760579709"] .tn-atom{white-space:normal;background-size:cover;}#rec1046097026 .tn-elem[data-elem-id="1743760579709"] .tn-atom::after{display:none;}#rec1046097026 .tn-elem[data-elem-id="1743760579709"] .tn-atom .tn-atom__button-text{overflow:visible;}#rec1046097026 .tn-elem[data-elem-id="1743760579709"] .tn-atom .tn-atom__button-border::before{display:none;}#rec1046097026 .tn-elem[data-elem-id="1743760579709"] .tn-atom .tn-atom__button-border::after{display:none;}@media (hover),(min-width:0\0){#rec1046097026 .tn-elem[data-elem-id="1743760579709"] .tn-atom:hover::after{opacity:0;}#rec1046097026 .tn-elem[data-elem-id="1743760579709"] .tn-atom:hover{animation-name:none;}}}@media screen and (max-width:479px){#rec1046097026 .tn-elem[data-elem-id="1743760579709"]{display:block;top:216px;left:0px;width:273px;height:40px;flex-shrink:0;}#rec1046097026 .tn-elem[data-elem-id="1743760579709"] .tn-atom{white-space:normal;font-size:16px;background-size:cover;}#rec1046097026 .tn-elem[data-elem-id="1743760579709"] .tn-atom::after{display:none;}#rec1046097026 .tn-elem[data-elem-id="1743760579709"] .tn-atom .tn-atom__button-text{overflow:visible;}#rec1046097026 .tn-elem[data-elem-id="1743760579709"] .tn-atom .tn-atom__button-border::before{display:none;}#rec1046097026 .tn-elem[data-elem-id="1743760579709"] .tn-atom .tn-atom__button-border::after{display:none;}@media (hover),(min-width:0\0){#rec1046097026 .tn-elem[data-elem-id="1743760579709"] .tn-atom:hover::after{opacity:0;}#rec1046097026 .tn-elem[data-elem-id="1743760579709"] .tn-atom:hover{animation-name:none;}}}#rec1046097026 .tn-elem[data-elem-id="1743671499018"]{color:#14213d;text-align:left;z-index:7;top:90px;left:0px;width:520px;flex-shrink:0;height:26px;margin:0 0 0 0;}#rec1046097026 .tn-elem[data-elem-id="1743671499018"] .tn-atom{color:#14213d;font-size:17px;font-family:'Inter',Arial,sans-serif;line-height:1.55;font-weight:400;border-radius:30px 30px 30px 30px;background-position:center center;--t396-speedhover:0.2s;transition:background-color var(--t396-speedhover,0s) ease-in-out,color var(--t396-speedhover,0s) ease-in-out,border-color var(--t396-speedhover,0s) ease-in-out,box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;}#rec1046097026 .tn-elem[data-elem-id="1743671499018"] .tn-atom::after{display:none;}#rec1046097026 .tn-elem[data-elem-id="1743671499018"] .tn-atom .tn-atom__button-text{transition:color var(--t396-speedhover,0s) ease-in-out;color:#14213d;}#rec1046097026 .tn-elem[data-elem-id="1743671499018"] .tn-atom .tn-atom__button-border::before{display:none;}#rec1046097026 .tn-elem[data-elem-id="1743671499018"] .tn-atom .tn-atom__button-border::after{display:none;}@media (hover),(min-width:0\0){#rec1046097026 .tn-elem[data-elem-id="1743671499018"] .tn-atom:hover::after{opacity:0;}#rec1046097026 .tn-elem[data-elem-id="1743671499018"] .tn-atom:hover{animation-name:none;}}@media (hover),(min-width:0\0){#rec1046097026 .tn-elem[data-elem-id="1743671499018"] .tn-atom:hover{color:#00c880;}#rec1046097026 .tn-elem[data-elem-id="1743671499018"] .tn-atom:hover .tn-atom__button-text{color:#00c880;}}@media screen and (max-width:1199px){#rec1046097026 .tn-elem[data-elem-id="1743671499018"]{display:block;left:0px;width:520px;height:26px;flex-shrink:0;}#rec1046097026 .tn-elem[data-elem-id="1743671499018"] .tn-atom{white-space:normal;background-size:cover;}#rec1046097026 .tn-elem[data-elem-id="1743671499018"] .tn-atom::after{display:none;}#rec1046097026 .tn-elem[data-elem-id="1743671499018"] .tn-atom .tn-atom__button-text{overflow:visible;}#rec1046097026 .tn-elem[data-elem-id="1743671499018"] .tn-atom .tn-atom__button-border::before{display:none;}#rec1046097026 .tn-elem[data-elem-id="1743671499018"] .tn-atom .tn-atom__button-border::after{display:none;}@media (hover),(min-width:0\0){#rec1046097026 .tn-elem[data-elem-id="1743671499018"] .tn-atom:hover::after{opacity:0;}#rec1046097026 .tn-elem[data-elem-id="1743671499018"] .tn-atom:hover{animation-name:none;}}}@media screen and (max-width:959px){#rec1046097026 .tn-elem[data-elem-id="1743671499018"]{display:block;width:520px;height:26px;flex-shrink:0;}#rec1046097026 .tn-elem[data-elem-id="1743671499018"] .tn-atom{white-space:normal;background-size:cover;}#rec1046097026 .tn-elem[data-elem-id="1743671499018"] .tn-atom::after{display:none;}#rec1046097026 .tn-elem[data-elem-id="1743671499018"] .tn-atom .tn-atom__button-text{overflow:visible;}#rec1046097026 .tn-elem[data-elem-id="1743671499018"] .tn-atom .tn-atom__button-border::before{display:none;}#rec1046097026 .tn-elem[data-elem-id="1743671499018"] .tn-atom .tn-atom__button-border::after{display:none;}@media (hover),(min-width:0\0){#rec1046097026 .tn-elem[data-elem-id="1743671499018"] .tn-atom:hover::after{opacity:0;}#rec1046097026 .tn-elem[data-elem-id="1743671499018"] .tn-atom:hover{animation-name:none;}}}@media screen and (max-width:639px){#rec1046097026 .tn-elem[data-elem-id="1743671499018"]{display:block;left:0px;width:520px;height:26px;flex-shrink:0;}#rec1046097026 .tn-elem[data-elem-id="1743671499018"] .tn-atom{white-space:normal;background-size:cover;}#rec1046097026 .tn-elem[data-elem-id="1743671499018"] .tn-atom::after{display:none;}#rec1046097026 .tn-elem[data-elem-id="1743671499018"] .tn-atom .tn-atom__button-text{overflow:visible;}#rec1046097026 .tn-elem[data-elem-id="1743671499018"] .tn-atom .tn-atom__button-border::before{display:none;}#rec1046097026 .tn-elem[data-elem-id="1743671499018"] .tn-atom .tn-atom__button-border::after{display:none;}@media (hover),(min-width:0\0){#rec1046097026 .tn-elem[data-elem-id="1743671499018"] .tn-atom:hover::after{opacity:0;}#rec1046097026 .tn-elem[data-elem-id="1743671499018"] .tn-atom:hover{animation-name:none;}}}@media screen and (max-width:479px){#rec1046097026 .tn-elem[data-elem-id="1743671499018"]{display:block;top:172px;left:0px;width:273px;height:40px;flex-shrink:0;}#rec1046097026 .tn-elem[data-elem-id="1743671499018"] .tn-atom{white-space:normal;font-size:16px;background-size:cover;}#rec1046097026 .tn-elem[data-elem-id="1743671499018"] .tn-atom::after{display:none;}#rec1046097026 .tn-elem[data-elem-id="1743671499018"] .tn-atom .tn-atom__button-text{overflow:visible;}#rec1046097026 .tn-elem[data-elem-id="1743671499018"] .tn-atom .tn-atom__button-border::before{display:none;}#rec1046097026 .tn-elem[data-elem-id="1743671499018"] .tn-atom .tn-atom__button-border::after{display:none;}@media (hover),(min-width:0\0){#rec1046097026 .tn-elem[data-elem-id="1743671499018"] .tn-atom:hover::after{opacity:0;}#rec1046097026 .tn-elem[data-elem-id="1743671499018"] .tn-atom:hover{animation-name:none;}}}#rec1046097026 .tn-elem[data-elem-id="1743671498566"]{color:#14213d;text-align:left;z-index:8;top:60px;left:0px;width:520px;flex-shrink:0;height:26px;margin:0 0 0 0;}#rec1046097026 .tn-elem[data-elem-id="1743671498566"] .tn-atom{color:#14213d;font-size:17px;font-family:'Inter',Arial,sans-serif;line-height:1.55;font-weight:400;border-radius:30px 30px 30px 30px;background-position:center center;--t396-speedhover:0.2s;transition:background-color var(--t396-speedhover,0s) ease-in-out,color var(--t396-speedhover,0s) ease-in-out,border-color var(--t396-speedhover,0s) ease-in-out,box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;}#rec1046097026 .tn-elem[data-elem-id="1743671498566"] .tn-atom::after{display:none;}#rec1046097026 .tn-elem[data-elem-id="1743671498566"] .tn-atom .tn-atom__button-text{transition:color var(--t396-speedhover,0s) ease-in-out;color:#14213d;}#rec1046097026 .tn-elem[data-elem-id="1743671498566"] .tn-atom .tn-atom__button-border::before{display:none;}#rec1046097026 .tn-elem[data-elem-id="1743671498566"] .tn-atom .tn-atom__button-border::after{display:none;}@media (hover),(min-width:0\0){#rec1046097026 .tn-elem[data-elem-id="1743671498566"] .tn-atom:hover::after{opacity:0;}#rec1046097026 .tn-elem[data-elem-id="1743671498566"] .tn-atom:hover{animation-name:none;}}@media (hover),(min-width:0\0){#rec1046097026 .tn-elem[data-elem-id="1743671498566"] .tn-atom:hover{color:#00c880;}#rec1046097026 .tn-elem[data-elem-id="1743671498566"] .tn-atom:hover .tn-atom__button-text{color:#00c880;}}@media screen and (max-width:1199px){#rec1046097026 .tn-elem[data-elem-id="1743671498566"]{display:block;left:0px;width:520px;height:26px;flex-shrink:0;}#rec1046097026 .tn-elem[data-elem-id="1743671498566"] .tn-atom{white-space:normal;background-size:cover;}#rec1046097026 .tn-elem[data-elem-id="1743671498566"] .tn-atom::after{display:none;}#rec1046097026 .tn-elem[data-elem-id="1743671498566"] .tn-atom .tn-atom__button-text{overflow:visible;}#rec1046097026 .tn-elem[data-elem-id="1743671498566"] .tn-atom .tn-atom__button-border::before{display:none;}#rec1046097026 .tn-elem[data-elem-id="1743671498566"] .tn-atom .tn-atom__button-border::after{display:none;}@media (hover),(min-width:0\0){#rec1046097026 .tn-elem[data-elem-id="1743671498566"] .tn-atom:hover::after{opacity:0;}#rec1046097026 .tn-elem[data-elem-id="1743671498566"] .tn-atom:hover{animation-name:none;}}}@media screen and (max-width:959px){#rec1046097026 .tn-elem[data-elem-id="1743671498566"]{display:block;width:520px;height:26px;flex-shrink:0;}#rec1046097026 .tn-elem[data-elem-id="1743671498566"] .tn-atom{white-space:normal;background-size:cover;}#rec1046097026 .tn-elem[data-elem-id="1743671498566"] .tn-atom::after{display:none;}#rec1046097026 .tn-elem[data-elem-id="1743671498566"] .tn-atom .tn-atom__button-text{overflow:visible;}#rec1046097026 .tn-elem[data-elem-id="1743671498566"] .tn-atom .tn-atom__button-border::before{display:none;}#rec1046097026 .tn-elem[data-elem-id="1743671498566"] .tn-atom .tn-atom__button-border::after{display:none;}@media (hover),(min-width:0\0){#rec1046097026 .tn-elem[data-elem-id="1743671498566"] .tn-atom:hover::after{opacity:0;}#rec1046097026 .tn-elem[data-elem-id="1743671498566"] .tn-atom:hover{animation-name:none;}}}@media screen and (max-width:639px){#rec1046097026 .tn-elem[data-elem-id="1743671498566"]{display:block;left:0px;width:520px;height:26px;flex-shrink:0;}#rec1046097026 .tn-elem[data-elem-id="1743671498566"] .tn-atom{white-space:normal;background-size:cover;}#rec1046097026 .tn-elem[data-elem-id="1743671498566"] .tn-atom::after{display:none;}#rec1046097026 .tn-elem[data-elem-id="1743671498566"] .tn-atom .tn-atom__button-text{overflow:visible;}#rec1046097026 .tn-elem[data-elem-id="1743671498566"] .tn-atom .tn-atom__button-border::before{display:none;}#rec1046097026 .tn-elem[data-elem-id="1743671498566"] .tn-atom .tn-atom__button-border::after{display:none;}@media (hover),(min-width:0\0){#rec1046097026 .tn-elem[data-elem-id="1743671498566"] .tn-atom:hover::after{opacity:0;}#rec1046097026 .tn-elem[data-elem-id="1743671498566"] .tn-atom:hover{animation-name:none;}}}@media screen and (max-width:479px){#rec1046097026 .tn-elem[data-elem-id="1743671498566"]{display:block;top:108px;left:0px;width:270px;height:60px;flex-shrink:0;}#rec1046097026 .tn-elem[data-elem-id="1743671498566"] .tn-atom{white-space:normal;font-size:16px;background-size:cover;}#rec1046097026 .tn-elem[data-elem-id="1743671498566"] .tn-atom::after{display:none;}#rec1046097026 .tn-elem[data-elem-id="1743671498566"] .tn-atom .tn-atom__button-text{overflow:visible;}#rec1046097026 .tn-elem[data-elem-id="1743671498566"] .tn-atom .tn-atom__button-border::before{display:none;}#rec1046097026 .tn-elem[data-elem-id="1743671498566"] .tn-atom .tn-atom__button-border::after{display:none;}@media (hover),(min-width:0\0){#rec1046097026 .tn-elem[data-elem-id="1743671498566"] .tn-atom:hover::after{opacity:0;}#rec1046097026 .tn-elem[data-elem-id="1743671498566"] .tn-atom:hover{animation-name:none;}}}#rec1046097026 .tn-elem[data-elem-id="1743671498059"]{color:#14213d;text-align:left;z-index:9;top:30px;left:0px;width:520px;flex-shrink:0;height:26px;margin:0 0 0 0;}#rec1046097026 .tn-elem[data-elem-id="1743671498059"] .tn-atom{color:#14213d;font-size:17px;font-family:'Inter',Arial,sans-serif;line-height:1.55;font-weight:400;border-radius:30px 30px 30px 30px;background-position:center center;--t396-speedhover:0.2s;transition:background-color var(--t396-speedhover,0s) ease-in-out,color var(--t396-speedhover,0s) ease-in-out,border-color var(--t396-speedhover,0s) ease-in-out,box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;}#rec1046097026 .tn-elem[data-elem-id="1743671498059"] .tn-atom::after{display:none;}#rec1046097026 .tn-elem[data-elem-id="1743671498059"] .tn-atom .tn-atom__button-text{transition:color var(--t396-speedhover,0s) ease-in-out;color:#14213d;}#rec1046097026 .tn-elem[data-elem-id="1743671498059"] .tn-atom .tn-atom__button-border::before{display:none;}#rec1046097026 .tn-elem[data-elem-id="1743671498059"] .tn-atom .tn-atom__button-border::after{display:none;}@media (hover),(min-width:0\0){#rec1046097026 .tn-elem[data-elem-id="1743671498059"] .tn-atom:hover::after{opacity:0;}#rec1046097026 .tn-elem[data-elem-id="1743671498059"] .tn-atom:hover{animation-name:none;}}@media (hover),(min-width:0\0){#rec1046097026 .tn-elem[data-elem-id="1743671498059"] .tn-atom:hover{color:#00c880;}#rec1046097026 .tn-elem[data-elem-id="1743671498059"] .tn-atom:hover .tn-atom__button-text{color:#00c880;}}@media screen and (max-width:1199px){#rec1046097026 .tn-elem[data-elem-id="1743671498059"]{display:block;left:0px;width:520px;height:26px;flex-shrink:0;}#rec1046097026 .tn-elem[data-elem-id="1743671498059"] .tn-atom{white-space:normal;background-size:cover;}#rec1046097026 .tn-elem[data-elem-id="1743671498059"] .tn-atom::after{display:none;}#rec1046097026 .tn-elem[data-elem-id="1743671498059"] .tn-atom .tn-atom__button-text{overflow:visible;}#rec1046097026 .tn-elem[data-elem-id="1743671498059"] .tn-atom .tn-atom__button-border::before{display:none;}#rec1046097026 .tn-elem[data-elem-id="1743671498059"] .tn-atom .tn-atom__button-border::after{display:none;}@media (hover),(min-width:0\0){#rec1046097026 .tn-elem[data-elem-id="1743671498059"] .tn-atom:hover::after{opacity:0;}#rec1046097026 .tn-elem[data-elem-id="1743671498059"] .tn-atom:hover{animation-name:none;}}}@media screen and (max-width:959px){#rec1046097026 .tn-elem[data-elem-id="1743671498059"]{display:block;width:520px;height:26px;flex-shrink:0;}#rec1046097026 .tn-elem[data-elem-id="1743671498059"] .tn-atom{white-space:normal;background-size:cover;}#rec1046097026 .tn-elem[data-elem-id="1743671498059"] .tn-atom::after{display:none;}#rec1046097026 .tn-elem[data-elem-id="1743671498059"] .tn-atom .tn-atom__button-text{overflow:visible;}#rec1046097026 .tn-elem[data-elem-id="1743671498059"] .tn-atom .tn-atom__button-border::before{display:none;}#rec1046097026 .tn-elem[data-elem-id="1743671498059"] .tn-atom .tn-atom__button-border::after{display:none;}@media (hover),(min-width:0\0){#rec1046097026 .tn-elem[data-elem-id="1743671498059"] .tn-atom:hover::after{opacity:0;}#rec1046097026 .tn-elem[data-elem-id="1743671498059"] .tn-atom:hover{animation-name:none;}}}@media screen and (max-width:639px){#rec1046097026 .tn-elem[data-elem-id="1743671498059"]{display:block;left:0px;width:520px;height:26px;flex-shrink:0;}#rec1046097026 .tn-elem[data-elem-id="1743671498059"] .tn-atom{white-space:normal;background-size:cover;}#rec1046097026 .tn-elem[data-elem-id="1743671498059"] .tn-atom::after{display:none;}#rec1046097026 .tn-elem[data-elem-id="1743671498059"] .tn-atom .tn-atom__button-text{overflow:visible;}#rec1046097026 .tn-elem[data-elem-id="1743671498059"] .tn-atom .tn-atom__button-border::before{display:none;}#rec1046097026 .tn-elem[data-elem-id="1743671498059"] .tn-atom .tn-atom__button-border::after{display:none;}@media (hover),(min-width:0\0){#rec1046097026 .tn-elem[data-elem-id="1743671498059"] .tn-atom:hover::after{opacity:0;}#rec1046097026 .tn-elem[data-elem-id="1743671498059"] .tn-atom:hover{animation-name:none;}}}@media screen and (max-width:479px){#rec1046097026 .tn-elem[data-elem-id="1743671498059"]{display:block;top:44px;left:0px;width:270px;height:60px;flex-shrink:0;}#rec1046097026 .tn-elem[data-elem-id="1743671498059"] .tn-atom{white-space:normal;font-size:16px;background-size:cover;}#rec1046097026 .tn-elem[data-elem-id="1743671498059"] .tn-atom::after{display:none;}#rec1046097026 .tn-elem[data-elem-id="1743671498059"] .tn-atom .tn-atom__button-text{overflow:visible;}#rec1046097026 .tn-elem[data-elem-id="1743671498059"] .tn-atom .tn-atom__button-border::before{display:none;}#rec1046097026 .tn-elem[data-elem-id="1743671498059"] .tn-atom .tn-atom__button-border::after{display:none;}@media (hover),(min-width:0\0){#rec1046097026 .tn-elem[data-elem-id="1743671498059"] .tn-atom:hover::after{opacity:0;}#rec1046097026 .tn-elem[data-elem-id="1743671498059"] .tn-atom:hover{animation-name:none;}}}#rec1046097026 .tn-elem[data-elem-id="1743671432468"]{color:#14213d;text-align:left;z-index:10;top:0px;left:0px;width:520px;flex-shrink:0;height:26px;margin:0 0 0 0;}#rec1046097026 .tn-elem[data-elem-id="1743671432468"] .tn-atom{color:#14213d;font-size:17px;font-family:'Inter',Arial,sans-serif;line-height:1.55;font-weight:400;border-radius:30px 30px 30px 30px;background-position:center center;--t396-speedhover:0.2s;transition:background-color var(--t396-speedhover,0s) ease-in-out,color var(--t396-speedhover,0s) ease-in-out,border-color var(--t396-speedhover,0s) ease-in-out,box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;}#rec1046097026 .tn-elem[data-elem-id="1743671432468"] .tn-atom::after{display:none;}#rec1046097026 .tn-elem[data-elem-id="1743671432468"] .tn-atom .tn-atom__button-text{transition:color var(--t396-speedhover,0s) ease-in-out;color:#14213d;}#rec1046097026 .tn-elem[data-elem-id="1743671432468"] .tn-atom .tn-atom__button-border::before{display:none;}#rec1046097026 .tn-elem[data-elem-id="1743671432468"] .tn-atom .tn-atom__button-border::after{display:none;}@media (hover),(min-width:0\0){#rec1046097026 .tn-elem[data-elem-id="1743671432468"] .tn-atom:hover::after{opacity:0;}#rec1046097026 .tn-elem[data-elem-id="1743671432468"] .tn-atom:hover{animation-name:none;}}@media (hover),(min-width:0\0){#rec1046097026 .tn-elem[data-elem-id="1743671432468"] .tn-atom:hover{color:#00c880;}#rec1046097026 .tn-elem[data-elem-id="1743671432468"] .tn-atom:hover .tn-atom__button-text{color:#00c880;}}@media screen and (max-width:1199px){#rec1046097026 .tn-elem[data-elem-id="1743671432468"]{display:block;left:0px;width:520px;height:26px;flex-shrink:0;}#rec1046097026 .tn-elem[data-elem-id="1743671432468"] .tn-atom{white-space:normal;background-size:cover;}#rec1046097026 .tn-elem[data-elem-id="1743671432468"] .tn-atom::after{display:none;}#rec1046097026 .tn-elem[data-elem-id="1743671432468"] .tn-atom .tn-atom__button-text{overflow:visible;}#rec1046097026 .tn-elem[data-elem-id="1743671432468"] .tn-atom .tn-atom__button-border::before{display:none;}#rec1046097026 .tn-elem[data-elem-id="1743671432468"] .tn-atom .tn-atom__button-border::after{display:none;}@media (hover),(min-width:0\0){#rec1046097026 .tn-elem[data-elem-id="1743671432468"] .tn-atom:hover::after{opacity:0;}#rec1046097026 .tn-elem[data-elem-id="1743671432468"] .tn-atom:hover{animation-name:none;}}}@media screen and (max-width:959px){#rec1046097026 .tn-elem[data-elem-id="1743671432468"]{display:block;width:520px;height:26px;flex-shrink:0;}#rec1046097026 .tn-elem[data-elem-id="1743671432468"] .tn-atom{white-space:normal;background-size:cover;}#rec1046097026 .tn-elem[data-elem-id="1743671432468"] .tn-atom::after{display:none;}#rec1046097026 .tn-elem[data-elem-id="1743671432468"] .tn-atom .tn-atom__button-text{overflow:visible;}#rec1046097026 .tn-elem[data-elem-id="1743671432468"] .tn-atom .tn-atom__button-border::before{display:none;}#rec1046097026 .tn-elem[data-elem-id="1743671432468"] .tn-atom .tn-atom__button-border::after{display:none;}@media (hover),(min-width:0\0){#rec1046097026 .tn-elem[data-elem-id="1743671432468"] .tn-atom:hover::after{opacity:0;}#rec1046097026 .tn-elem[data-elem-id="1743671432468"] .tn-atom:hover{animation-name:none;}}}@media screen and (max-width:639px){#rec1046097026 .tn-elem[data-elem-id="1743671432468"]{display:block;left:0px;width:520px;height:26px;flex-shrink:0;}#rec1046097026 .tn-elem[data-elem-id="1743671432468"] .tn-atom{white-space:normal;background-size:cover;}#rec1046097026 .tn-elem[data-elem-id="1743671432468"] .tn-atom::after{display:none;}#rec1046097026 .tn-elem[data-elem-id="1743671432468"] .tn-atom .tn-atom__button-text{overflow:visible;}#rec1046097026 .tn-elem[data-elem-id="1743671432468"] .tn-atom .tn-atom__button-border::before{display:none;}#rec1046097026 .tn-elem[data-elem-id="1743671432468"] .tn-atom .tn-atom__button-border::after{display:none;}@media (hover),(min-width:0\0){#rec1046097026 .tn-elem[data-elem-id="1743671432468"] .tn-atom:hover::after{opacity:0;}#rec1046097026 .tn-elem[data-elem-id="1743671432468"] .tn-atom:hover{animation-name:none;}}}@media screen and (max-width:479px){#rec1046097026 .tn-elem[data-elem-id="1743671432468"]{display:block;top:0px;left:0px;width:370px;height:40px;flex-shrink:0;}#rec1046097026 .tn-elem[data-elem-id="1743671432468"] .tn-atom{white-space:normal;font-size:16px;background-size:cover;}#rec1046097026 .tn-elem[data-elem-id="1743671432468"] .tn-atom::after{display:none;}#rec1046097026 .tn-elem[data-elem-id="1743671432468"] .tn-atom .tn-atom__button-text{overflow:visible;}#rec1046097026 .tn-elem[data-elem-id="1743671432468"] .tn-atom .tn-atom__button-border::before{display:none;}#rec1046097026 .tn-elem[data-elem-id="1743671432468"] .tn-atom .tn-atom__button-border::after{display:none;}@media (hover),(min-width:0\0){#rec1046097026 .tn-elem[data-elem-id="1743671432468"] .tn-atom:hover::after{opacity:0;}#rec1046097026 .tn-elem[data-elem-id="1743671432468"] .tn-atom:hover{animation-name:none;}}}#rec1046097026 .tn-elem[data-elem-id="1743670770549"]{color:#14213d;z-index:11;top:20px;left:20px;width:100%;flex-shrink:0;height:auto;margin:0 0 0 0;}#rec1046097026 .tn-elem[data-elem-id="1743670770549"] .tn-atom{vertical-align:middle;color:#14213d;font-size:24px;font-family:'Inter',Arial,sans-serif;line-height:1.55;font-weight:400;background-position:center center;border-width:var(--t396-borderwidth,0);border-style:var(--t396-borderstyle,solid);border-color:var(--t396-bordercolor,transparent);transition:background-color var(--t396-speedhover,0s) ease-in-out,color var(--t396-speedhover,0s) ease-in-out,border-color var(--t396-speedhover,0s) ease-in-out,box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;text-shadow:var(--t396-shadow-text-x,0px) var(--t396-shadow-text-y,0px) var(--t396-shadow-text-blur,0px) rgba(var(--t396-shadow-text-color),var(--t396-shadow-text-opacity,100%));}@media screen and (max-width:1199px){#rec1046097026 .tn-elem[data-elem-id="1743670770549"]{display:table;left:20px;width:100%;height:auto;flex-shrink:0;}}@media screen and (max-width:959px){#rec1046097026 .tn-elem[data-elem-id="1743670770549"]{display:table;width:100%;height:auto;flex-shrink:0;}}@media screen and (max-width:639px){#rec1046097026 .tn-elem[data-elem-id="1743670770549"]{display:table;left:20px;width:100%;height:auto;flex-shrink:0;}}@media screen and (max-width:479px){#rec1046097026 .tn-elem[data-elem-id="1743670770549"]{display:table;left:20px;width:100%;height:auto;flex-shrink:0;}#rec1046097026 .tn-elem[data-elem-id="1743670770549"] .tn-atom{font-size:20px;background-size:cover;}}</style> <div class='t396'> <div class="t396__artboard" data-artboard-recid="1046097026" data-artboard-screens="360,480,640,960,1200" data-artboard-height="270" data-artboard-valign="center" data-artboard-upscale="grid" data-artboard-height-res-360="390"> <div class="t396__carrier" data-artboard-recid="1046097026"></div> <div class="t396__filter" data-artboard-recid="1046097026"></div> <div
class="t396__group tn-group tn-group__1046097026174367081259945760 t396__group-flex " data-fields="top,left,container" data-group-id="174367081259945760" data-group-type-value="physical" data-group-top-value="0" data-group-left-value="220" data-group-padding="20px 20px 20px 20px" data-group-flex="auto" data-group-flexdirection="column" data-group-flexalignitems="flex-start" data-group-widthmode="fixed" data-group-heightmode="hug" data-group-container-value="grid" data-group-height-value="269" data-group-width-value="759" data-group-topunits-value="px" data-group-leftunits-value="px" data-group-left-res-360-value="0" data-group-height-res-360-value="390" data-group-width-res-360-value="360" data-group-widthmode-res-360="fixed" data-group-heightmode-res-360="fixed" data-group-left-res-480-value="10" data-group-height-res-480-value="269" data-group-width-res-480-value="459" data-group-widthmode-res-480="fixed" data-group-height-res-640-value="269" data-group-width-res-640-value="481" data-group-widthmode-res-640="fixed" data-group-left-res-960-value="170" data-group-height-res-960-value="269" data-group-width-res-960-value="620" data-group-widthmode-res-960="fixed"> <div
class="tn-molecule"
id="molecule-174367081259945760"> <div class='t396__elem tn-elem t396__elem-flex tn-elem__10460970261743670770549' data-elem-id='1743670770549' data-elem-type='text' data-field-top-value="20" data-field-left-value="240" data-field-height-value="37" data-field-width-value="719" data-field-axisy-value="top" data-field-axisx-value="left" data-field-container-value="grid" data-field-topunits-value="px" data-field-leftunits-value="px" data-field-heightunits-value="px" data-field-widthunits-value="px" data-field-textfit-value="autoheight" data-field-widthmode-value="fill" data-field-heightmode-value="fixed" data-field-fontsize-value="24" data-field-left-res-360-value="20" data-field-height-res-360-value="31" data-field-width-res-360-value="320" data-field-fontsize-res-360-value="20" data-field-left-res-480-value="30" data-field-height-res-480-value="37" data-field-width-res-480-value="419" data-field-height-res-640-value="37" data-field-width-res-640-value="441" data-field-left-res-960-value="190" data-field-height-res-960-value="37" data-field-width-res-960-value="580"> <div class='tn-atom'field='tn_text_1743670770549'><strong>Содержание статьи</strong></div> </div> <div
class="t396__group tn-group t396__elem-flex tn-group__1046097026174367150126371080 t396__group-flex " data-fields="top,left,container" data-group-id="174367150126371080" data-group-type-value="physical" data-group-top-value="73" data-group-left-value="240" data-group-padding="0 0 0 0" data-group-flex="auto" data-group-flexdirection="column" data-group-flexalignitems="center" data-group-widthmode="fixed" data-group-heightmode="hug" data-group-container-value="grid" data-group-height-value="176" data-group-width-value="520" data-group-topunits-value="px" data-group-leftunits-value="px" data-group-top-res-360-value="67" data-group-left-res-360-value="20" data-group-height-res-360-value="259" data-group-width-res-360-value="311" data-group-widthmode-res-360="fixed" data-group-heightmode-res-360="fixed" data-group-left-res-480-value="30" data-group-height-res-480-value="176" data-group-height-res-640-value="176" data-group-left-res-960-value="190" data-group-height-res-960-value="176"> <div
class="tn-molecule"
id="molecule-174367150126371080"> <div class='t396__elem tn-elem t396__elem-flex tn-elem__10460970261743671432468' data-elem-id='1743671432468' data-elem-type='button' data-field-top-value="73" data-field-left-value="240" data-field-height-value="26" data-field-width-value="520" data-field-axisy-value="top" data-field-axisx-value="left" data-field-container-value="grid" data-field-topunits-value="px" data-field-leftunits-value="px" data-field-heightunits-value="px" data-field-widthunits-value="px" data-field-widthmode-value="fixed" data-field-heightmode-value="fixed" data-field-fontsize-value="17" data-field-top-res-360-value="67" data-field-left-res-360-value="20" data-field-height-res-360-value="40" data-field-width-res-360-value="370" data-field-widthmode-res-360-value="fixed" data-field-heightmode-res-360-value="fixed" data-field-fontsize-res-360-value="16" data-field-left-res-480-value="30" data-field-height-res-480-value="26" data-field-width-res-480-value="520" data-field-height-res-640-value="26" data-field-width-res-640-value="520" data-field-left-res-960-value="190" data-field-height-res-960-value="26" data-field-width-res-960-value="520"> <a class='tn-atom' href="#a1"> <div class='tn-atom__button-content'> <span class="tn-atom__button-text">1. Введение</span> </div> <span class="tn-atom__button-border"></span> </a> </div> <div class='t396__elem tn-elem t396__elem-flex tn-elem__10460970261743671498059' data-elem-id='1743671498059' data-elem-type='button' data-field-top-value="103" data-field-left-value="240" data-field-height-value="26" data-field-width-value="520" data-field-axisy-value="top" data-field-axisx-value="left" data-field-container-value="grid" data-field-topunits-value="px" data-field-leftunits-value="px" data-field-heightunits-value="px" data-field-widthunits-value="px" data-field-widthmode-value="fixed" data-field-heightmode-value="fixed" data-field-fontsize-value="17" data-field-top-res-360-value="111" data-field-left-res-360-value="20" data-field-height-res-360-value="60" data-field-width-res-360-value="270" data-field-widthmode-res-360-value="fixed" data-field-heightmode-res-360-value="fixed" data-field-fontsize-res-360-value="16" data-field-left-res-480-value="30" data-field-height-res-480-value="26" data-field-width-res-480-value="520" data-field-height-res-640-value="26" data-field-width-res-640-value="520" data-field-left-res-960-value="190" data-field-height-res-960-value="26" data-field-width-res-960-value="520"> <a class='tn-atom' href="#a2"> <div class='tn-atom__button-content'> <span class="tn-atom__button-text">2. Развертывание приложений с GitLab CI/CD</span> </div> <span class="tn-atom__button-border"></span> </a> </div> <div class='t396__elem tn-elem t396__elem-flex tn-elem__10460970261743671498566' data-elem-id='1743671498566' data-elem-type='button' data-field-top-value="133" data-field-left-value="240" data-field-height-value="26" data-field-width-value="520" data-field-axisy-value="top" data-field-axisx-value="left" data-field-container-value="grid" data-field-topunits-value="px" data-field-leftunits-value="px" data-field-heightunits-value="px" data-field-widthunits-value="px" data-field-widthmode-value="fixed" data-field-heightmode-value="fixed" data-field-fontsize-value="17" data-field-top-res-360-value="175" data-field-left-res-360-value="20" data-field-height-res-360-value="60" data-field-width-res-360-value="270" data-field-widthmode-res-360-value="fixed" data-field-heightmode-res-360-value="fixed" data-field-fontsize-res-360-value="16" data-field-left-res-480-value="30" data-field-height-res-480-value="26" data-field-width-res-480-value="520" data-field-height-res-640-value="26" data-field-width-res-640-value="520" data-field-left-res-960-value="190" data-field-height-res-960-value="26" data-field-width-res-960-value="520"> <a class='tn-atom' href="#a3"> <div class='tn-atom__button-content'> <span class="tn-atom__button-text">3. Установка</span> </div> <span class="tn-atom__button-border"></span> </a> </div> <div class='t396__elem tn-elem t396__elem-flex tn-elem__10460970261743671499018' data-elem-id='1743671499018' data-elem-type='button' data-field-top-value="163" data-field-left-value="240" data-field-height-value="26" data-field-width-value="520" data-field-axisy-value="top" data-field-axisx-value="left" data-field-container-value="grid" data-field-topunits-value="px" data-field-leftunits-value="px" data-field-heightunits-value="px" data-field-widthunits-value="px" data-field-widthmode-value="fixed" data-field-heightmode-value="fixed" data-field-fontsize-value="17" data-field-top-res-360-value="239" data-field-left-res-360-value="20" data-field-height-res-360-value="40" data-field-width-res-360-value="273" data-field-heightmode-res-360-value="fixed" data-field-fontsize-res-360-value="16" data-field-left-res-480-value="30" data-field-height-res-480-value="26" data-field-width-res-480-value="520" data-field-height-res-640-value="26" data-field-width-res-640-value="520" data-field-left-res-960-value="190" data-field-height-res-960-value="26" data-field-width-res-960-value="520"> <a class='tn-atom' href="#a4"> <div class='tn-atom__button-content'> <span class="tn-atom__button-text">4. Как настроить GitLab CI/CD</span> </div> <span class="tn-atom__button-border"></span> </a> </div> <div class='t396__elem tn-elem t396__elem-flex tn-elem__10460970261743760579709' data-elem-id='1743760579709' data-elem-type='button' data-field-top-value="193" data-field-left-value="240" data-field-height-value="26" data-field-width-value="520" data-field-axisy-value="top" data-field-axisx-value="left" data-field-container-value="grid" data-field-topunits-value="px" data-field-leftunits-value="px" data-field-heightunits-value="px" data-field-widthunits-value="px" data-field-widthmode-value="fixed" data-field-heightmode-value="fixed" data-field-fontsize-value="17" data-field-top-res-360-value="283" data-field-left-res-360-value="20" data-field-height-res-360-value="40" data-field-width-res-360-value="273" data-field-heightmode-res-360-value="fixed" data-field-fontsize-res-360-value="16" data-field-left-res-480-value="30" data-field-height-res-480-value="26" data-field-width-res-480-value="520" data-field-height-res-640-value="26" data-field-width-res-640-value="520" data-field-left-res-960-value="190" data-field-height-res-960-value="26" data-field-width-res-960-value="520"> <a class='tn-atom' href="#a5"> <div class='tn-atom__button-content'> <span class="tn-atom__button-text">5. Проверка работы Pipeline</span> </div> <span class="tn-atom__button-border"></span> </a> </div> <div class='t396__elem tn-elem t396__elem-flex tn-elem__10460970261747837762526' data-elem-id='1747837762526' data-elem-type='button' data-field-top-value="223" data-field-left-value="240" data-field-height-value="26" data-field-width-value="520" data-field-axisy-value="top" data-field-axisx-value="left" data-field-container-value="grid" data-field-topunits-value="px" data-field-leftunits-value="px" data-field-heightunits-value="px" data-field-widthunits-value="px" data-field-widthmode-value="fixed" data-field-heightmode-value="fixed" data-field-fontsize-value="17" data-field-top-res-360-value="327" data-field-left-res-360-value="20" data-field-height-res-360-value="40" data-field-width-res-360-value="273" data-field-heightmode-res-360-value="fixed" data-field-fontsize-res-360-value="16" data-field-left-res-480-value="30" data-field-height-res-480-value="26" data-field-width-res-480-value="520" data-field-height-res-640-value="26" data-field-width-res-640-value="520" data-field-left-res-960-value="190" data-field-height-res-960-value="26" data-field-width-res-960-value="520"> <a class='tn-atom' href="#a6"> <div class='tn-atom__button-content'> <span class="tn-atom__button-text">6. Заключение</span> </div> <span class="tn-atom__button-border"></span> </a> </div> </div> </div> </div> </div> </div> </div> <script>t_onReady(function() {t_onFuncLoad('t396_init',function() {t396_init('1046097026');});});</script> <!-- /T396 --> </div> <div id="rec1046268866" class="r t-rec" style=" " data-record-type="215"> <a name="a1" style="font-size:0;"></a> </div> <div id="rec1046097041" class="r t-rec t-rec_pt_60 t-rec_pb_0" style="padding-top:60px;padding-bottom:0px; " data-animationappear="off" data-record-type="60"> <!-- T050 --> <div class="t050"> <div class="t-container t-align_left"> <div class="t-col t-col_8 t-prefix_2"> <h2 class="t050__title t-title t-title_xxl" field="title">Введение</h2> </div> </div> </div> <style> #rec1046097041 .t050__uptitle{text-transform:uppercase;}#rec1046097041 .t050__title{color:#161518;}@media screen and (min-width:900px){#rec1046097041 .t050__title{font-size:38px;}}@media screen and (min-width:480px) and (max-width:900px){#rec1046097041 .t050__title{font-size:28px;}}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec1046097041 .t050__title{font-size:28px;}}</style> </div> <div id="rec1046097031" class="r t-rec t-rec_pt_30 t-rec_pb_0" style="padding-top:30px;padding-bottom:0px; " data-animationappear="off" data-record-type="106"> <!-- T004 --> <div class="t004"> <div class="t-container "> <div class="t-col t-col_8 t-prefix_2"> <div field="text" class="t-text t-text_md ">Автоматизация — базовая необходимость. Если каждый раз собирать проект вручную, тратить часы на деплой, при этом надеяться, что «ничего не отвалится», — это путь в никуда. Сегодня даже малые команды стремятся упростить процессы разработки. Именно здесь на сцену выходит <strong>GitLab CI/CD</strong> — мощный инструмент, позволяющий на лету внедрять изменения, тестировать и выкатывать продукт.<br /><br />Представьте: вы отправляете коммит, далее без единого клика запускается сборка, проходят тесты, а новая версия автоматически оказывается на сервере. Без спешки. Без ошибок. Без ночных релизов.<br /><strong>Вот она — цель CI/CD в GitLab: автоматизировать рутину, минимизировать ошибки, ускорить релизы.</strong><br /><br />Собрали подробный туториал по GitLab CI/CD, чтобы настроить всё без типичных ошибок новичков — от установки Runner до первого успешного pipeline. Независимо от того, вы джун или уже уверенный мидл — материал будет полезен. С примерами, пояснениями, а также готовыми решениями.<br /><br /><strong>Есть желание разобраться во всём на фундаментальном уровне — добро пожаловать на курс от Слерм!</strong> Узнайте, как автоматизировать интеграцию, доставку, ускорить разработку и снизить риски. Начните обучение сегодня и повысите свои профессиональные навыки!<br />👉<a href="https://slurm.io/gitlab-ci-cd?utm_source=blog&utm_medium=organic&utm_campaign=article_configuring_ci_cd"> Курс от Slurm</a></div> </div> </div> </div> <style> #rec1046097031 .t-text{font-size:18px;font-family:'Inter';}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec1046097031 .t-text{font-size:16px;}}</style> </div> <div id="rec1046097036" class="r t-rec" style=" " data-record-type="215"> <a name="a2" style="font-size:0;"></a> </div> <div id="rec1046132156" class="r t-rec t-rec_pt_60 t-rec_pb_0" style="padding-top:60px;padding-bottom:0px; " data-animationappear="off" data-record-type="60"> <!-- T050 --> <div class="t050"> <div class="t-container t-align_left"> <div class="t-col t-col_8 t-prefix_2"> <h2 class="t050__title t-title t-title_xxl" field="title">Развертывание приложений с GitLab CI/CD</h2> </div> </div> </div> <style> #rec1046132156 .t050__uptitle{text-transform:uppercase;}#rec1046132156 .t050__title{color:#161518;}@media screen and (min-width:900px){#rec1046132156 .t050__title{font-size:38px;}}@media screen and (min-width:480px) and (max-width:900px){#rec1046132156 .t050__title{font-size:28px;}}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec1046132156 .t050__title{font-size:28px;}}</style> </div> <div id="rec1046097046" class="r t-rec t-rec_pt_30 t-rec_pb_0" style="padding-top:30px;padding-bottom:0px; " data-animationappear="off" data-record-type="106"> <!-- T004 --> <div class="t004"> <div class="t-container "> <div class="t-col t-col_8 t-prefix_2"> <div field="text" class="t-text t-text_md "><strong>Развертывание </strong>— это финальный аккорд работы над приложением. Именно он определяет, насколько быстро и безошибочно пользователи получат ваши обновления. С помощью практик непрерывной интеграции/доставки можно сделать этот процесс не только быстрым, но и стабильным.</div> </div> </div> </div> <style> #rec1046097046 .t-text{font-size:18px;font-family:'Inter';}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec1046097046 .t-text{font-size:16px;}}</style> </div> <div id="rec1046097051" class="r t-rec t-rec_pt_45 t-rec_pb_0" style="padding-top:45px;padding-bottom:0px; " data-record-type="60"> <!-- T050 --> <div class="t050"> <div class="t-container t-align_left"> <div class="t-col t-col_8 t-prefix_2"> <h3 class="t050__title t-title t-title_xxl" field="title">Что такое CI/CD</h3> </div> </div> </div> <style> #rec1046097051 .t050__uptitle{text-transform:uppercase;}#rec1046097051 .t050__title{color:#161518;}@media screen and (min-width:480px){#rec1046097051 .t050__title{font-size:28px;line-height:1.3;}}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec1046097051 .t050__title{font-size:20px;}}</style> </div> <div id="rec1046097056" class="r t-rec t-rec_pt_30 t-rec_pb_0" style="padding-top:30px;padding-bottom:0px; " data-animationappear="off" data-record-type="106"> <!-- T004 --> <div class="t004"> <div class="t-container "> <div class="t-col t-col_8 t-prefix_2"> <div field="text" class="t-text t-text_md "><strong>CI</strong> (Continuous Integration) — это практика, при которой каждое изменение кода автоматически проходит тесты и сборку.<br /><br /><strong>CD</strong> (Continuous Delivery/Deployment) — это процесс автоматической доставки проверенного кода на сервер или в продакшн-среду.<br /><br />Если команда не внедрила эти подходы, каждый релиз превращается в лотерею: ошибки всплывают в последний момент, баги копятся, а выкатывание новых фич откладывается.<br />После внедрения — релизы становятся быстрыми и безопасными.</div> </div> </div> </div> <style> #rec1046097056 .t-text{font-size:18px;font-family:'Inter';}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec1046097056 .t-text{font-size:16px;}}</style> </div> <div id="rec1075982966" class="r t-rec t-rec_pt_75 t-rec_pb_75" style="padding-top:75px;padding-bottom:75px; " data-record-type="3"> <!-- T107 --> <div class="t107"> <div class="t-align_center" itemscope itemtype="http://schema.org/ImageObject"> <meta itemprop="image" content="https://static.tildacdn.com/tild6262-3631-4162-b662-366538333162/CD__GitLab__1.png"> <img class="t-img t-width t107__width t-width_8"
src="https://thb.tildacdn.com/tild6262-3631-4162-b662-366538333162/-/empty/CD__GitLab__1.png" data-original="https://static.tildacdn.com/tild6262-3631-4162-b662-366538333162/CD__GitLab__1.png"
imgfield="img"
alt=""> </div> </div> </div> <div id="rec1046097061" class="r t-rec t-rec_pt_45 t-rec_pb_0" style="padding-top:45px;padding-bottom:0px; " data-record-type="60"> <!-- T050 --> <div class="t050"> <div class="t-container t-align_left"> <div class="t-col t-col_8 t-prefix_2"> <h3 class="t050__title t-title t-title_xxl" field="title">С чего начать: подготовка проекта GitLab CI/CD</h3> </div> </div> </div> <style> #rec1046097061 .t050__uptitle{text-transform:uppercase;}#rec1046097061 .t050__title{color:#161518;}@media screen and (min-width:480px){#rec1046097061 .t050__title{font-size:28px;line-height:1.3;}}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec1046097061 .t050__title{font-size:20px;}}</style> </div> <div id="rec1046097066" class="r t-rec t-rec_pt_30 t-rec_pb_0" style="padding-top:30px;padding-bottom:0px; " data-animationappear="off" data-record-type="106"> <!-- T004 --> <div class="t004"> <div class="t-container "> <div class="t-col t-col_8 t-prefix_2"> <div field="text" class="t-text t-text_md ">Чтобы настроить туториал, понадобится:<br /><br /><ul><li data-list="bullet">Репозиторий в GitLab.</li><li data-list="bullet">Чёткое понимание этапов (build, test, deploy).</li><li data-list="bullet">Установленный «бегун».</li><li data-list="bullet">Конфигурационный файл .gitlab-ci.yml.</li></ul><br />Именно .gitlab-ci.yml управляет всей автоматизацией.</div> </div> </div> </div> <style> #rec1046097066 .t-text{font-size:18px;font-family:'Inter';}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec1046097066 .t-text{font-size:16px;}}</style> </div> <div id="rec1046097071" class="r t-rec t-rec_pt_45 t-rec_pb_0" style="padding-top:45px;padding-bottom:0px; " data-record-type="60"> <!-- T050 --> <div class="t050"> <div class="t-container t-align_left"> <div class="t-col t-col_8 t-prefix_2"> <h3 class="t050__title t-title t-title_xxl" field="title">Минимальный пример .gitlab-ci.yml</h3> </div> </div> </div> <style> #rec1046097071 .t050__uptitle{text-transform:uppercase;}#rec1046097071 .t050__title{color:#161518;}@media screen and (min-width:480px){#rec1046097071 .t050__title{font-size:28px;line-height:1.3;}}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec1046097071 .t050__title{font-size:20px;}}</style> </div> <div id="rec1046097076" class="r t-rec t-rec_pt_30 t-rec_pb_0" style="padding-top:30px;padding-bottom:0px; " data-animationappear="off" data-record-type="106"> <!-- T004 --> <div class="t004"> <div class="t-container "> <div class="t-col t-col_8 t-prefix_2"> <div field="text" class="t-text t-text_md "><span style="color: rgb(74, 153, 116);">stages:</span><br /><span style="color: rgb(74, 153, 116);"> - build</span><br /><span style="color: rgb(74, 153, 116);"> - test</span><br /><span style="color: rgb(74, 153, 116);"> - deploy</span><br /><span style="color: rgb(74, 153, 116);"> </span><br /><span style="color: rgb(74, 153, 116);">build_job:</span><br /><span style="color: rgb(74, 153, 116);"> stage: build</span><br /><span style="color: rgb(74, 153, 116);"> script:</span><br /><span style="color: rgb(74, 153, 116);"> - echo "Сборка проекта"</span><br /><span style="color: rgb(74, 153, 116);"> </span><br /><span style="color: rgb(74, 153, 116);">test_job:</span><br /><span style="color: rgb(74, 153, 116);"> stage: test</span><br /><span style="color: rgb(74, 153, 116);"> script:</span><br /><span style="color: rgb(74, 153, 116);"> - echo "Запуск тестов"</span><br /><span style="color: rgb(74, 153, 116);"> </span><br /><span style="color: rgb(74, 153, 116);">deploy_job:</span><br /><span style="color: rgb(74, 153, 116);"> stage: deploy</span><br /><span style="color: rgb(74, 153, 116);"> script:</span><br /><span style="color: rgb(74, 153, 116);"> - echo "Развертывание на сервере"</span><br /><br />Этот файл определяет три этапа пайплайна: <strong>сборка, тестирование и развертывание.</strong> Каждый этап — это набор скриптов, которые выполняются автоматически.</div> </div> </div> </div> <style> #rec1046097076 .t-text{font-size:18px;font-family:'Inter';}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec1046097076 .t-text{font-size:16px;}}</style> </div> <div id="rec1046097081" class="r t-rec t-rec_pt_45 t-rec_pb_0" style="padding-top:45px;padding-bottom:0px; " data-record-type="60"> <!-- T050 --> <div class="t050"> <div class="t-container t-align_left"> <div class="t-col t-col_8 t-prefix_2"> <h3 class="t050__title t-title t-title_xxl" field="title">Виды Runner'ов</h3> </div> </div> </div> <style> #rec1046097081 .t050__uptitle{text-transform:uppercase;}#rec1046097081 .t050__title{color:#161518;}@media screen and (min-width:480px){#rec1046097081 .t050__title{font-size:28px;line-height:1.3;}}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec1046097081 .t050__title{font-size:20px;}}</style> </div> <div id="rec1046097086" class="r t-rec t-rec_pt_30 t-rec_pb_0" style="padding-top:30px;padding-bottom:0px; " data-animationappear="off" data-record-type="106"> <!-- T004 --> <div class="t004"> <div class="t-container "> <div class="t-col t-col_8 t-prefix_2"> <div field="text" class="t-text t-text_md "><ul><li data-list="bullet"><strong>Shared Runner</strong> — предоставляется всем пользователям платформы. Подходит для тестов, но часто перегружен.</li><li data-list="bullet"><strong>Specific Runner</strong> — закрепляется за вашим проектом. Вариант для стабильной, быстрой работы.</li></ul>Если хотите серьезно развивать автоматизацию, сразу планируйте настройку собственного «бегуна».</div> </div> </div> </div> <style> #rec1046097086 .t-text{font-size:18px;font-family:'Inter';}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec1046097086 .t-text{font-size:16px;}}</style> </div> <div id="rec1046147326" class="r t-rec t-rec_pt_45 t-rec_pb_0" style="padding-top:45px;padding-bottom:0px; " data-record-type="60"> <!-- T050 --> <div class="t050"> <div class="t-container t-align_left"> <div class="t-col t-col_8 t-prefix_2"> <h3 class="t050__title t-title t-title_xxl" field="title">Ошибки при развертывании</h3> </div> </div> </div> <style> #rec1046147326 .t050__uptitle{text-transform:uppercase;}#rec1046147326 .t050__title{color:#161518;}@media screen and (min-width:480px){#rec1046147326 .t050__title{font-size:28px;line-height:1.3;}}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec1046147326 .t050__title{font-size:20px;}}</style> </div> <div id="rec1046147226" class="r t-rec t-rec_pt_30 t-rec_pb_0" style="padding-top:30px;padding-bottom:0px; " data-animationappear="off" data-record-type="106"> <!-- T004 --> <div class="t004"> <div class="t-container "> <div class="t-col t-col_8 t-prefix_2"> <div field="text" class="t-text t-text_md "><ul><li data-list="bullet">Отсутствие тестов между сборкой и деплоем.</li><li data-list="bullet">Перегруженные пайплайны, которые падают из-за мелочей.</li><li data-list="bullet">Отсутствие механизма отката на случай неудачного релиза.</li></ul>CI/CD не просто ускоряет работу. Он позволяет выстроить предсказуемый, надёжный процесс развертывания.</div> </div> </div> </div> <style> #rec1046147226 .t-text{font-size:18px;font-family:'Inter';}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec1046147226 .t-text{font-size:16px;}}</style> </div> <div id="rec1046097091" class="r t-rec t-rec_pt_30" style="padding-top:30px; " data-animationappear="off" data-record-type="396"> <!-- T396 --> <style>#rec1046097091 .t396__artboard {height:360px;background-color:#ffffff;}#rec1046097091 .t396__filter {height:360px;}#rec1046097091 .t396__carrier{height:360px;background-position:center center;background-attachment:scroll;background-size:cover;background-repeat:no-repeat;}@media screen and (max-width:1199px) {#rec1046097091 .t396__artboard,#rec1046097091 .t396__filter,#rec1046097091 .t396__carrier {}#rec1046097091 .t396__filter {}#rec1046097091 .t396__carrier {background-attachment:scroll;}}@media screen and (max-width:959px) {#rec1046097091 .t396__artboard,#rec1046097091 .t396__filter,#rec1046097091 .t396__carrier {height:420px;}#rec1046097091 .t396__filter {}#rec1046097091 .t396__carrier {background-attachment:scroll;}}@media screen and (max-width:639px) {#rec1046097091 .t396__artboard,#rec1046097091 .t396__filter,#rec1046097091 .t396__carrier {height:450px;}#rec1046097091 .t396__filter {}#rec1046097091 .t396__carrier {background-attachment:scroll;}}@media screen and (max-width:479px) {#rec1046097091 .t396__artboard,#rec1046097091 .t396__filter,#rec1046097091 .t396__carrier {height:390px;}#rec1046097091 .t396__filter {}#rec1046097091 .t396__carrier {background-attachment:scroll;}}#rec1046097091 .tn-elem[data-elem-id="1745214258584"]{z-index:3;top:0px;;left:calc(50% - 600px + 220px);;width:760px;height:360px;}#rec1046097091 .tn-elem[data-elem-id="1745214258584"] .tn-atom{border-radius:20px 20px 20px 20px;background-color:#eef3ff;background-position:center center;--t396-borderwidth:2px;border-width:var(--t396-borderwidth,0);border-style:var(--t396-borderstyle,solid);border-color:var(--t396-bordercolor,transparent);transition:background-color var(--t396-speedhover,0s) ease-in-out,color var(--t396-speedhover,0s) ease-in-out,border-color var(--t396-speedhover,0s) ease-in-out,box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;}@media screen and (max-width:1199px){#rec1046097091 .tn-elem[data-elem-id="1745214258584"]{display:table;left:calc(50% - 480px + 99px);;}}@media screen and (max-width:959px){#rec1046097091 .tn-elem[data-elem-id="1745214258584"]{display:table;left:calc(50% - 320px + 9px);;width:631px;height:420px;}}@media screen and (max-width:639px){#rec1046097091 .tn-elem[data-elem-id="1745214258584"]{display:table;width:463px;height:450px;}}@media screen and (max-width:479px){#rec1046097091 .tn-elem[data-elem-id="1745214258584"]{display:table;width:302px;height:390px;}#rec1046097091 .tn-elem[data-elem-id="1745214258584"] .tn-atom{background-size:cover;opacity:1;}}#rec1046097091 .tn-elem[data-elem-id="1745214258590"]{z-index:4;top:133px;;left:calc(50% - 600px + 729px);;width:192px;height:auto;}#rec1046097091 .tn-elem[data-elem-id="1745214258590"] .tn-atom{border-radius:0px 0px 0px 0px;background-position:center center;border-width:var(--t396-borderwidth,0);border-style:var(--t396-borderstyle,solid);border-color:var(--t396-bordercolor,transparent);transition:background-color var(--t396-speedhover,0s) ease-in-out,color var(--t396-speedhover,0s) ease-in-out,border-color var(--t396-speedhover,0s) ease-in-out,box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;}#rec1046097091 .tn-elem[data-elem-id="1745214258590"] .tn-atom__img{border-radius:0px 0px 0px 0px;object-position:center center;}@media screen and (max-width:1199px){#rec1046097091 .tn-elem[data-elem-id="1745214258590"]{display:table;left:calc(50% - 480px + 559px);;height:auto;}}@media screen and (max-width:959px){#rec1046097091 .tn-elem[data-elem-id="1745214258590"]{display:table;top:172px;;left:calc(50% - 320px + 437px);;width:209px;height:auto;}}@media screen and (max-width:639px){#rec1046097091 .tn-elem[data-elem-id="1745214258590"]{display:table;top:163px;;left:calc(50% - 240px + 520px);;width:209px;height:auto;}}@media screen and (max-width:479px){#rec1046097091 .tn-elem[data-elem-id="1745214258590"]{display:table;top:271px;;left:calc(50% - 160px + 230px);;width:100px;height:auto;}}#rec1046097091 .tn-elem[data-elem-id="1745214258589"]{color:#170f63;z-index:5;top:140px;;left:calc(50% - 600px + 260px);;width:405px;height:161px;}#rec1046097091 .tn-elem[data-elem-id="1745214258589"] .tn-atom{vertical-align:top;color:#170f63;font-size:18px;font-family:'Inter',Arial,sans-serif;line-height:1.3;font-weight:400;background-position:center center;border-width:var(--t396-borderwidth,0);border-style:var(--t396-borderstyle,solid);border-color:var(--t396-bordercolor,transparent);transition:background-color var(--t396-speedhover,0s) ease-in-out,color var(--t396-speedhover,0s) ease-in-out,border-color var(--t396-speedhover,0s) ease-in-out,box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;text-shadow:var(--t396-shadow-text-x,0px) var(--t396-shadow-text-y,0px) var(--t396-shadow-text-blur,0px) rgba(var(--t396-shadow-text-color),var(--t396-shadow-text-opacity,100%));}@media screen and (max-width:1199px){#rec1046097091 .tn-elem[data-elem-id="1745214258589"]{display:table;left:calc(50% - 480px + 139px);;height:auto;}}@media screen and (max-width:959px){#rec1046097091 .tn-elem[data-elem-id="1745214258589"]{display:table;top:188px;;left:calc(50% - 320px + 49px);;width:407px;height:auto;}}@media screen and (max-width:639px){#rec1046097091 .tn-elem[data-elem-id="1745214258589"]{display:table;top:226px;;height:auto;}}@media screen and (max-width:479px){#rec1046097091 .tn-elem[data-elem-id="1745214258589"]{display:table;top:164px;;left:calc(50% - 160px + 33px);;width:266px;height:auto;}#rec1046097091 .tn-elem[data-elem-id="1745214258589"] .tn-atom{font-size:14px;background-size:cover;}}#rec1046097091 .tn-elem[data-elem-id="1745214258587"]{color:#170f63;z-index:6;top:30px;;left:calc(50% - 600px + 260px);;width:660px;height:98px;}#rec1046097091 .tn-elem[data-elem-id="1745214258587"] .tn-atom{vertical-align:top;color:#170f63;font-size:38px;font-family:'Inter',Arial,sans-serif;line-height:1.3;font-weight:500;background-position:center center;border-width:var(--t396-borderwidth,0);border-style:var(--t396-borderstyle,solid);border-color:var(--t396-bordercolor,transparent);transition:background-color var(--t396-speedhover,0s) ease-in-out,color var(--t396-speedhover,0s) ease-in-out,border-color var(--t396-speedhover,0s) ease-in-out,box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;text-shadow:var(--t396-shadow-text-x,0px) var(--t396-shadow-text-y,0px) var(--t396-shadow-text-blur,0px) rgba(var(--t396-shadow-text-color),var(--t396-shadow-text-opacity,100%));}@media screen and (max-width:1199px){#rec1046097091 .tn-elem[data-elem-id="1745214258587"]{display:table;left:calc(50% - 480px + 139px);;height:auto;}}@media screen and (max-width:959px){#rec1046097091 .tn-elem[data-elem-id="1745214258587"]{display:table;left:calc(50% - 320px + 49px);;width:569px;height:auto;}}@media screen and (max-width:639px){#rec1046097091 .tn-elem[data-elem-id="1745214258587"]{display:table;width:401px;height:auto;}#rec1046097091 .tn-elem[data-elem-id="1745214258587"] .tn-atom{font-size:35px;background-size:cover;}}@media screen and (max-width:479px){#rec1046097091 .tn-elem[data-elem-id="1745214258587"]{display:table;top:27px;;left:calc(50% - 160px + 31px);;width:268px;height:auto;text-align:left;}#rec1046097091 .tn-elem[data-elem-id="1745214258587"] .tn-atom{font-size:24px;letter-spacing:0px;background-size:cover;}}#rec1046097091 .tn-elem[data-elem-id="1745214258595"]{color:#ffffff;text-align:center;z-index:7;top:291px;;left:calc(50% - 600px + 260px);;width:300px;height:50px;}#rec1046097091 .tn-elem[data-elem-id="1745214258595"] .tn-atom{color:#ffffff;font-size:18px;font-family:'Inter',Arial,sans-serif;line-height:1.55;font-weight:400;border-radius:15px 15px 15px 15px;background-position:center center;--t396-speedhover:0.2s;transition:background-color var(--t396-speedhover,0s) ease-in-out,color var(--t396-speedhover,0s) ease-in-out,border-color var(--t396-speedhover,0s) ease-in-out,box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;--t396-bgcolor-color:#5c76ff;--t396-bgcolor-image:none;background-color:var(--t396-bgcolor-color,transparent);-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;}#rec1046097091 .tn-elem[data-elem-id="1745214258595"] .tn-atom::after{display:none;}#rec1046097091 .tn-elem[data-elem-id="1745214258595"] .tn-atom .tn-atom__button-text{transition:color var(--t396-speedhover,0s) ease-in-out;color:#ffffff;}#rec1046097091 .tn-elem[data-elem-id="1745214258595"] .tn-atom .tn-atom__button-border::before{display:none;}#rec1046097091 .tn-elem[data-elem-id="1745214258595"] .tn-atom .tn-atom__button-border::after{display:none;}@media (hover),(min-width:0\0){#rec1046097091 .tn-elem[data-elem-id="1745214258595"] .tn-atom:hover::after{opacity:0;}#rec1046097091 .tn-elem[data-elem-id="1745214258595"] .tn-atom:hover{animation-name:none;}}@media screen and (max-width:1199px){#rec1046097091 .tn-elem[data-elem-id="1745214258595"]{display:block;left:calc(50% - 480px + 139px);;width:px;}#rec1046097091 .tn-elem[data-elem-id="1745214258595"] .tn-atom{white-space:normal;background-size:cover;background-color:var(--t396-bgcolor-color,transparent);}#rec1046097091 .tn-elem[data-elem-id="1745214258595"] .tn-atom::after{display:none;}#rec1046097091 .tn-elem[data-elem-id="1745214258595"] .tn-atom .tn-atom__button-text{overflow:visible;}#rec1046097091 .tn-elem[data-elem-id="1745214258595"] .tn-atom .tn-atom__button-border::before{display:none;}#rec1046097091 .tn-elem[data-elem-id="1745214258595"] .tn-atom .tn-atom__button-border::after{display:none;}@media (hover),(min-width:0\0){#rec1046097091 .tn-elem[data-elem-id="1745214258595"] .tn-atom:hover::after{opacity:0;}#rec1046097091 .tn-elem[data-elem-id="1745214258595"] .tn-atom:hover{animation-name:none;}}}@media screen and (max-width:959px){#rec1046097091 .tn-elem[data-elem-id="1745214258595"]{display:block;top:348px;;left:calc(50% - 320px + 49px);;width:px;}#rec1046097091 .tn-elem[data-elem-id="1745214258595"] .tn-atom{white-space:normal;background-size:cover;background-color:var(--t396-bgcolor-color,transparent);}#rec1046097091 .tn-elem[data-elem-id="1745214258595"] .tn-atom::after{display:none;}#rec1046097091 .tn-elem[data-elem-id="1745214258595"] .tn-atom .tn-atom__button-text{overflow:visible;}#rec1046097091 .tn-elem[data-elem-id="1745214258595"] .tn-atom .tn-atom__button-border::before{display:none;}#rec1046097091 .tn-elem[data-elem-id="1745214258595"] .tn-atom .tn-atom__button-border::after{display:none;}@media (hover),(min-width:0\0){#rec1046097091 .tn-elem[data-elem-id="1745214258595"] .tn-atom:hover::after{opacity:0;}#rec1046097091 .tn-elem[data-elem-id="1745214258595"] .tn-atom:hover{animation-name:none;}}}@media screen and (max-width:639px){#rec1046097091 .tn-elem[data-elem-id="1745214258595"]{display:block;top:385px;;width:px;}#rec1046097091 .tn-elem[data-elem-id="1745214258595"] .tn-atom{white-space:normal;background-size:cover;background-color:var(--t396-bgcolor-color,transparent);}#rec1046097091 .tn-elem[data-elem-id="1745214258595"] .tn-atom::after{display:none;}#rec1046097091 .tn-elem[data-elem-id="1745214258595"] .tn-atom .tn-atom__button-text{overflow:visible;}#rec1046097091 .tn-elem[data-elem-id="1745214258595"] .tn-atom .tn-atom__button-border::before{display:none;}#rec1046097091 .tn-elem[data-elem-id="1745214258595"] .tn-atom .tn-atom__button-border::after{display:none;}@media (hover),(min-width:0\0){#rec1046097091 .tn-elem[data-elem-id="1745214258595"] .tn-atom:hover::after{opacity:0;}#rec1046097091 .tn-elem[data-elem-id="1745214258595"] .tn-atom:hover{animation-name:none;}}}@media screen and (max-width:479px){#rec1046097091 .tn-elem[data-elem-id="1745214258595"]{display:block;top:326px;;left:calc(50% - 160px + 30px);;width:230px;height:45px;}#rec1046097091 .tn-elem[data-elem-id="1745214258595"] .tn-atom{white-space:normal;font-size:14px;background-size:cover;-webkit-transform:rotate(0deg);-moz-transform:rotate(0deg);transform:rotate(0deg);background-color:var(--t396-bgcolor-color,transparent);}#rec1046097091 .tn-elem[data-elem-id="1745214258595"] .tn-atom::after{display:none;}#rec1046097091 .tn-elem[data-elem-id="1745214258595"] .tn-atom .tn-atom__button-text{overflow:visible;}#rec1046097091 .tn-elem[data-elem-id="1745214258595"] .tn-atom .tn-atom__button-border::before{display:none;}#rec1046097091 .tn-elem[data-elem-id="1745214258595"] .tn-atom .tn-atom__button-border::after{display:none;}@media (hover),(min-width:0\0){#rec1046097091 .tn-elem[data-elem-id="1745214258595"] .tn-atom:hover::after{opacity:0;}#rec1046097091 .tn-elem[data-elem-id="1745214258595"] .tn-atom:hover{animation-name:none;}}}</style> <div class='t396'> <div class="t396__artboard" data-artboard-recid="1046097091" data-artboard-screens="320,480,640,960,1200" data-artboard-height="360" data-artboard-valign="center" data-artboard-upscale="grid" data-artboard-height-res-320="390" data-artboard-upscale-res-320="window" data-artboard-height-res-480="450" data-artboard-height-res-640="420"> <div class="t396__carrier" data-artboard-recid="1046097091"></div> <div class="t396__filter" data-artboard-recid="1046097091"></div> <div class='t396__elem tn-elem tn-elem__10460970911745214258584' data-elem-id='1745214258584' data-elem-type='shape' data-field-top-value="0" data-field-left-value="220" data-field-height-value="360" data-field-width-value="760" data-field-axisy-value="top" data-field-axisx-value="left" data-field-container-value="grid" data-field-topunits-value="px" data-field-leftunits-value="px" data-field-heightunits-value="px" data-field-widthunits-value="px" data-field-widthmode-value="fixed" data-field-heightmode-value="fixed" data-field-height-res-320-value="390" data-field-width-res-320-value="302" data-field-height-res-480-value="450" data-field-width-res-480-value="463" data-field-left-res-640-value="9" data-field-height-res-640-value="420" data-field-width-res-640-value="631" data-field-left-res-960-value="99"> <div class='tn-atom'> </div> </div> <div class='t396__elem tn-elem tn-elem__10460970911745214258590' data-elem-id='1745214258590' data-elem-type='image' data-field-top-value="133" data-field-left-value="729" data-field-height-value="227" data-field-width-value="192" data-field-axisy-value="top" data-field-axisx-value="left" data-field-container-value="grid" data-field-topunits-value="px" data-field-leftunits-value="px" data-field-heightunits-value="px" data-field-widthunits-value="px" data-field-filewidth-value="1040" data-field-fileheight-value="1232" data-field-heightmode-value="hug" data-field-top-res-320-value="271" data-field-left-res-320-value="230" data-field-height-res-320-value="118" data-field-width-res-320-value="100" data-field-top-res-480-value="163" data-field-left-res-480-value="520" data-field-height-res-480-value="248" data-field-width-res-480-value="209" data-field-container-res-480-value="grid" data-field-top-res-640-value="172" data-field-left-res-640-value="437" data-field-height-res-640-value="248" data-field-width-res-640-value="209" data-field-left-res-960-value="559" data-field-height-res-960-value="227"> <div class='tn-atom'> <img class='tn-atom__img t-img' data-original='https://static.tildacdn.com/tild3633-3737-4461-b561-373039363636/Frame_1321315329.png'
src='https://thb.tildacdn.com/tild3633-3737-4461-b561-373039363636/-/resize/20x/Frame_1321315329.png'
alt='' imgfield='tn_img_1745214258590'
/> </div> </div> <div class='t396__elem tn-elem tn-elem__10460970911745214258589' data-elem-id='1745214258589' data-elem-type='text' data-field-top-value="140" data-field-left-value="260" data-field-height-value="161" data-field-width-value="405" data-field-axisy-value="top" data-field-axisx-value="left" data-field-container-value="grid" data-field-topunits-value="px" data-field-leftunits-value="px" data-field-heightunits-value="px" data-field-widthunits-value="px" data-field-textfit-value="fixedsize" data-field-fontsize-value="18" data-field-top-res-320-value="164" data-field-left-res-320-value="33" data-field-height-res-320-value="144" data-field-width-res-320-value="266" data-field-fontsize-res-320-value="14" data-field-top-res-480-value="226" data-field-top-res-640-value="188" data-field-left-res-640-value="49" data-field-height-res-640-value="142" data-field-width-res-640-value="407" data-field-left-res-960-value="139"> <div class='tn-atom'field='tn_text_1745214258589'>В гайде подробно разобрали этапы становления CI с использованием GitLab-CI.<br>Наглядно рассказываем и показываем, как написать правильный пайплайн: проверки, версионирование, реализация и другие этапы.</div> </div> <div class='t396__elem tn-elem tn-elem__10460970911745214258587' data-elem-id='1745214258587' data-elem-type='text' data-field-top-value="30" data-field-left-value="260" data-field-height-value="98" data-field-width-value="660" data-field-axisy-value="top" data-field-axisx-value="left" data-field-container-value="grid" data-field-topunits-value="px" data-field-leftunits-value="px" data-field-heightunits-value="px" data-field-widthunits-value="px" data-field-textfit-value="fixedsize" data-field-fontsize-value="38" data-field-top-res-320-value="27" data-field-left-res-320-value="31" data-field-height-res-320-value="124" data-field-width-res-320-value="268" data-field-fontsize-res-320-value="24" data-field-height-res-480-value="184" data-field-width-res-480-value="401" data-field-fontsize-res-480-value="35" data-field-left-res-640-value="49" data-field-height-res-640-value="147" data-field-width-res-640-value="569" data-field-left-res-960-value="139"> <div class='tn-atom'field='tn_text_1745214258587'><strong>Заберите бесплатный гайд </strong>«<strong>Как организовать CI/CD с Gitlab</strong>»</div> </div> <div class='t396__elem tn-elem tn-elem__10460970911745214258595' data-elem-id='1745214258595' data-elem-type='button' data-field-top-value="291" data-field-left-value="260" data-field-height-value="50" data-field-width-value="300" data-field-axisy-value="top" data-field-axisx-value="left" data-field-container-value="grid" data-field-topunits-value="px" data-field-leftunits-value="px" data-field-heightunits-value="px" data-field-widthunits-value="px" data-field-widthmode-value="fixed" data-field-heightmode-value="fixed" data-field-fontsize-value="18" data-field-top-res-320-value="326" data-field-left-res-320-value="30" data-field-height-res-320-value="45" data-field-width-res-320-value="230" data-field-container-res-320-value="grid" data-field-heightmode-res-320-value="fixed" data-field-fontsize-res-320-value="14" data-field-top-res-480-value="385" data-field-top-res-640-value="348" data-field-left-res-640-value="49" data-field-left-res-960-value="139"> <a class='tn-atom' href="https://t.me/learning_slurm_bot?start=ceo_article_cicd" target="_blank"> <div class='tn-atom__button-content'> <span class="tn-atom__button-text">Перейти в телеграм </span> </div> <span class="tn-atom__button-border"></span> </a> </div> </div> </div> <script>t_onFuncLoad('t396_initialScale',function() {t396_initialScale('1046097091');});t_onReady(function() {t_onFuncLoad('t396_init',function() {t396_init('1046097091');});});</script> <!-- /T396 --> </div> <div id="rec1046097101" class="r t-rec" style=" " data-record-type="215"> <a name="a3" style="font-size:0;"></a> </div> <div id="rec1046097106" class="r t-rec t-rec_pt_60 t-rec_pb_0" style="padding-top:60px;padding-bottom:0px; " data-animationappear="off" data-record-type="60"> <!-- T050 --> <div class="t050"> <div class="t-container t-align_left"> <div class="t-col t-col_8 t-prefix_2"> <h2 class="t050__title t-title t-title_xxl" field="title"><strong>Установка</strong></h2> </div> </div> </div> <style> #rec1046097106 .t050__uptitle{text-transform:uppercase;}#rec1046097106 .t050__title{color:#161518;}@media screen and (min-width:900px){#rec1046097106 .t050__title{font-size:38px;}}@media screen and (min-width:480px) and (max-width:900px){#rec1046097106 .t050__title{font-size:28px;}}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec1046097106 .t050__title{font-size:28px;}}</style> </div> <div id="rec1046097111" class="r t-rec t-rec_pt_30 t-rec_pb_0" style="padding-top:30px;padding-bottom:0px; " data-animationappear="off" data-record-type="106"> <!-- T004 --> <div class="t004"> <div class="t-container "> <div class="t-col t-col_8 t-prefix_2"> <div field="text" class="t-text t-text_md ">Настроить пайплайн без «бегуна» невозможно: именно он выполняет все задачи в процессе CI/CD. Пора разобраться, как быстро, при этом правильно установить это ПО для своего проекта.</div> </div> </div> </div> <style> #rec1046097111 .t-text{font-size:18px;font-family:'Inter';}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec1046097111 .t-text{font-size:16px;}}</style> </div> <div id="rec1046097116" class="r t-rec t-rec_pt_45 t-rec_pb_0" style="padding-top:45px;padding-bottom:0px; " data-record-type="60"> <!-- T050 --> <div class="t050"> <div class="t-container t-align_left"> <div class="t-col t-col_8 t-prefix_2"> <h3 class="t050__title t-title t-title_xxl" field="title">Что это такое?</h3> </div> </div> </div> <style> #rec1046097116 .t050__uptitle{text-transform:uppercase;}#rec1046097116 .t050__title{color:#161518;}@media screen and (min-width:480px){#rec1046097116 .t050__title{font-size:28px;line-height:1.3;}}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec1046097116 .t050__title{font-size:20px;}}</style> </div> <div id="rec1046097121" class="r t-rec t-rec_pt_30 t-rec_pb_0" style="padding-top:30px;padding-bottom:0px; " data-animationappear="off" data-record-type="106"> <!-- T004 --> <div class="t004"> <div class="t-container "> <div class="t-col t-col_8 t-prefix_2"> <div field="text" class="t-text t-text_md ">«Бегун» — это отдельное приложение (высокомасштабируемый агент), которое подключается к вашему репозиторию, а затем исполняет команды, описанные в .gitlab-ci.yml. Оно может работать на любом сервере: локальной машине, VPS или в облаке.<br /><br />Такие приложения бывают:<br /><br /><ul><li data-list="bullet"><strong>Shared </strong>— предоставляются платформой, общие для всех.</li><li data-list="bullet"><strong>Specific </strong>— привязаны к вашему проекту.</li><li data-list="bullet"><strong>Group </strong>— используются несколькими проектами в рамках одной группы.</li></ul></div> </div> </div> </div> <style> #rec1046097121 .t-text{font-size:18px;font-family:'Inter';}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec1046097121 .t-text{font-size:16px;}}</style> </div> <div id="rec1046097126" class="r t-rec t-rec_pt_45 t-rec_pb_0" style="padding-top:45px;padding-bottom:0px; " data-record-type="60"> <!-- T050 --> <div class="t050"> <div class="t-container t-align_left"> <div class="t-col t-col_8 t-prefix_2"> <h3 class="t050__title t-title t-title_xxl" field="title">Как установить?</h3> </div> </div> </div> <style> #rec1046097126 .t050__uptitle{text-transform:uppercase;}#rec1046097126 .t050__title{color:#161518;}@media screen and (min-width:480px){#rec1046097126 .t050__title{font-size:28px;line-height:1.3;}}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec1046097126 .t050__title{font-size:20px;}}</style> </div> <div id="rec1046097131" class="r t-rec t-rec_pt_30 t-rec_pb_0" style="padding-top:30px;padding-bottom:0px; " data-animationappear="off" data-record-type="106"> <!-- T004 --> <div class="t004"> <div class="t-container "> <div class="t-col t-col_8 t-prefix_2"> <div field="text" class="t-text t-text_md ">Установка зависит от операционной системы. Пройдемся по самым популярным вариантам.<br /><br /><strong>1. Ubuntu/Debian</strong><br /><br /><span style="color: rgb(74, 153, 116);">sudo apt-get update</span><br /><span style="color: rgb(74, 153, 116);">sudo apt-get install -y curl</span><br /><span style="color: rgb(74, 153, 116);">curl -L --output /usr/local/bin/gitlab-runner https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-amd64</span><br /><span style="color: rgb(74, 153, 116);">chmod +x /usr/local/bin/gitlab-runner</span><br /><span style="color: rgb(74, 153, 116);">gitlab-runner --version</span><br /><br /><strong>2.CentOS/RHEL</strong><br /><br /><span style="color: rgb(74, 153, 116);">sudo yum install -y curl</span><br /><span style="color: rgb(74, 153, 116);">curl -L --output /usr/local/bin/gitlab-runner https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-amd64</span><br /><span style="color: rgb(74, 153, 116);">chmod +x /usr/local/bin/gitlab-runner</span><br /><span style="color: rgb(74, 153, 116);">gitlab-runner --version</span><br /><br /><strong>3.Windows</strong><br /><br />На Windows скачайте бинарник с официального сайта GitLab и добавьте путь к нему в переменные среды. Затем запустите:<br /><br /><span style="color: rgb(74, 153, 116);">gitlab-runner.exe install</span><br /><span style="color: rgb(74, 153, 116);">gitlab-runner.exe start</span><br /><br /><strong>4.Docker</strong><br /><br />Быстрое развертывание через контейнер:<br /><br /><span style="color: rgb(74, 153, 116);">docker run -d --name gitlab-runner --restart always \</span><br /><span style="color: rgb(74, 153, 116);"> -v /srv/gitlab-runner/config:/etc/gitlab-runner \</span><br /><span style="color: rgb(74, 153, 116);"> -v /var/run/docker.sock:/var/run/docker.sock \</span><br /><span style="color: rgb(74, 153, 116);"> gitlab/gitlab-runner:latest</span><br /><br />Docker — отличный вариант, если не хочется засорять основную систему.</div> </div> </div> </div> <style> #rec1046097131 .t-text{font-size:18px;font-family:'Inter';}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec1046097131 .t-text{font-size:16px;}}</style> </div> <div id="rec1046097136" class="r t-rec t-rec_pt_45 t-rec_pb_0" style="padding-top:45px;padding-bottom:0px; " data-record-type="60"> <!-- T050 --> <div class="t050"> <div class="t-container t-align_left"> <div class="t-col t-col_8 t-prefix_2"> <h3 class="t050__title t-title t-title_xxl" field="title">Регистрация Runner'а</h3> </div> </div> </div> <style> #rec1046097136 .t050__uptitle{text-transform:uppercase;}#rec1046097136 .t050__title{color:#161518;}@media screen and (min-width:480px){#rec1046097136 .t050__title{font-size:28px;line-height:1.3;}}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec1046097136 .t050__title{font-size:20px;}}</style> </div> <div id="rec1046097141" class="r t-rec t-rec_pt_30 t-rec_pb_0" style="padding-top:30px;padding-bottom:0px; " data-animationappear="off" data-record-type="106"> <!-- T004 --> <div class="t004"> <div class="t-container "> <div class="t-col t-col_8 t-prefix_2"> <div field="text" class="t-text t-text_md ">После установки необходимо привязать приложение к вашему проекту:<br /><br /><ol><li data-list="ordered">Перейдите в настройки проекта: <strong>Settings → CI/CD → Runners → Expand.</strong></li><li data-list="ordered">Найдите токен для регистрации.</li><li data-list="ordered">Выполните на сервере:</li></ol><br /><span style="color: rgb(74, 153, 116);">gitlab-runner register</span><br /><br /><strong>Приложение попросит ввести:</strong><br /><br /><ul><li data-list="bullet">URL вашего GitLab.</li><li data-list="bullet">Токен регистрации.</li><li data-list="bullet">Имя вашего агента.</li><li data-list="bullet">Тип executor'а (например, shell, docker).</li></ul><br /><strong>Важно</strong>: для начала выберите shell, это самый простой вариант. Позже можно перейти на docker для более продвинутой автоматизации.</div> </div> </div> </div> <style> #rec1046097141 .t-text{font-size:18px;font-family:'Inter';}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec1046097141 .t-text{font-size:16px;}}</style> </div> <div id="rec1046181741" class="r t-rec t-rec_pt_45 t-rec_pb_0" style="padding-top:45px;padding-bottom:0px; " data-record-type="60"> <!-- T050 --> <div class="t050"> <div class="t-container t-align_left"> <div class="t-col t-col_8 t-prefix_2"> <h3 class="t050__title t-title t-title_xxl" field="title">Советы по настройке</h3> </div> </div> </div> <style> #rec1046181741 .t050__uptitle{text-transform:uppercase;}#rec1046181741 .t050__title{color:#161518;}@media screen and (min-width:480px){#rec1046181741 .t050__title{font-size:28px;line-height:1.3;}}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec1046181741 .t050__title{font-size:20px;}}</style> </div> <div id="rec1075983141" class="r t-rec t-rec_pt_75 t-rec_pb_75" style="padding-top:75px;padding-bottom:75px; " data-record-type="3"> <!-- T107 --> <div class="t107"> <div class="t-align_center" itemscope itemtype="http://schema.org/ImageObject"> <meta itemprop="image" content="https://static.tildacdn.com/tild3464-6339-4061-a333-653863616139/CD__GitLab__2.png"> <img class="t-img t-width t107__width t-width_8"
src="https://thb.tildacdn.com/tild3464-6339-4061-a333-653863616139/-/empty/CD__GitLab__2.png" data-original="https://static.tildacdn.com/tild3464-6339-4061-a333-653863616139/CD__GitLab__2.png"
imgfield="img"
alt=""> </div> </div> </div> <div id="rec1046181956" class="r t-rec t-rec_pt_30 t-rec_pb_0" style="padding-top:30px;padding-bottom:0px; " data-animationappear="off" data-record-type="106"> <!-- T004 --> <div class="t004"> <div class="t-container "> <div class="t-col t-col_8 t-prefix_2"> <div field="text" class="t-text t-text_md "><ul><li data-list="bullet">Регулярно обновляйте «бегуна», чтобы исключить проблемы совместимости.</li><li data-list="bullet">Следите за нагрузкой: если пайплайны начинают тормозить, стоит добавить ещё один Runner.</li><li data-list="bullet">Настройте теги для агента, чтобы распределять задачи между разными исполнителями.</li></ul><br /><strong>Овладейте эффективным CI/CD с помощью курса от Слёрм!</strong> Узнайте, как автоматизировать интеграцию и доставку, ускорить разработку и снизить риски. Начните обучение сегодня и повысите свои профессиональные навыки!<br />👉<a href="https://slurm.io/gitlab-ci-cd?utm_source=blog&utm_medium=organic&utm_campaign=article_configuring_ci_cd"> Записаться на курс</a></div> </div> </div> </div> <style> #rec1046181956 .t-text{font-size:18px;font-family:'Inter';}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec1046181956 .t-text{font-size:16px;}}</style> </div> <div id="rec1046097146" class="r t-rec" style=" " data-record-type="215"> <a name="a4" style="font-size:0;"></a> </div> <div id="rec1046097151" class="r t-rec t-rec_pt_60 t-rec_pb_0" style="padding-top:60px;padding-bottom:0px; " data-animationappear="off" data-record-type="60"> <!-- T050 --> <div class="t050"> <div class="t-container t-align_left"> <div class="t-col t-col_8 t-prefix_2"> <h2 class="t050__title t-title t-title_xxl" field="title">Как настроить GitLab CI/CD</h2> </div> </div> </div> <style> #rec1046097151 .t050__uptitle{text-transform:uppercase;}#rec1046097151 .t050__title{color:#161518;}@media screen and (min-width:900px){#rec1046097151 .t050__title{font-size:38px;}}@media screen and (min-width:480px) and (max-width:900px){#rec1046097151 .t050__title{font-size:28px;}}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec1046097151 .t050__title{font-size:28px;}}</style> </div> <div id="rec1046097156" class="r t-rec t-rec_pt_15 t-rec_pb_0" style="padding-top:15px;padding-bottom:0px; " data-animationappear="off" data-record-type="106"> <!-- T004 --> <div class="t004"> <div class="t-container "> <div class="t-col t-col_8 t-prefix_2"> <div field="text" class="t-text t-text_md ">Теперь, когда «бегун» установлен и зарегистрирован, самое время настроить полноценный процесс CI/CD. Именно на этом этапе проект превращается из хаоса в управляемую систему с четкой логикой и автоматизацией.</div> </div> </div> </div> <style> #rec1046097156 .t-text{font-size:18px;font-family:'Inter';}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec1046097156 .t-text{font-size:16px;}}</style> </div> <div id="rec1046097161" class="r t-rec t-rec_pt_45 t-rec_pb_0" style="padding-top:45px;padding-bottom:0px; " data-record-type="60"> <!-- T050 --> <div class="t050"> <div class="t-container t-align_left"> <div class="t-col t-col_8 t-prefix_2"> <h3 class="t050__title t-title t-title_xxl" field="title">Что делает .gitlab-ci.yml</h3> </div> </div> </div> <style> #rec1046097161 .t050__uptitle{text-transform:uppercase;}#rec1046097161 .t050__title{color:#161518;}@media screen and (min-width:480px){#rec1046097161 .t050__title{font-size:28px;line-height:1.3;}}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec1046097161 .t050__title{font-size:20px;}}</style> </div> <div id="rec1046097166" class="r t-rec t-rec_pt_15 t-rec_pb_0" style="padding-top:15px;padding-bottom:0px; " data-animationappear="off" data-record-type="106"> <!-- T004 --> <div class="t004"> <div class="t-container "> <div class="t-col t-col_8 t-prefix_2"> <div field="text" class="t-text t-text_md ">Файл .gitlab-ci.yml — это сердце CI/CD в GitLab. Он определяет:<br /><br /><ul><li data-list="bullet"><strong>Этапы (stages):</strong> сборка, тестирование, деплой.</li><li data-list="bullet"><strong>Задачи (jobs):</strong> конкретные действия на каждом этапе.</li><li data-list="bullet"><strong>Условия запуска: </strong>когда и при каких событиях выполнять ту или иную задачу.</li><li data-list="bullet"><strong>Переменные окружения:</strong> безопасная работа с ключами, логинами и паролями.</li></ul><br />Все пайплайны начинают свою работу с анализа именно этого файла.</div> </div> </div> </div> <style> #rec1046097166 .t-text{font-size:18px;font-family:'Inter';}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec1046097166 .t-text{font-size:16px;}}</style> </div> <div id="rec1046097171" class="r t-rec t-rec_pt_45 t-rec_pb_0" style="padding-top:45px;padding-bottom:0px; " data-record-type="60"> <!-- T050 --> <div class="t050"> <div class="t-container t-align_left"> <div class="t-col t-col_8 t-prefix_2"> <h3 class="t050__title t-title t-title_xxl" field="title">Структура базового .gitlab-ci.yml</h3> </div> </div> </div> <style> #rec1046097171 .t050__uptitle{text-transform:uppercase;}#rec1046097171 .t050__title{color:#161518;}@media screen and (min-width:480px){#rec1046097171 .t050__title{font-size:28px;line-height:1.3;}}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec1046097171 .t050__title{font-size:20px;}}</style> </div> <div id="rec1046097176" class="r t-rec t-rec_pt_15 t-rec_pb_0" style="padding-top:15px;padding-bottom:0px; " data-animationappear="off" data-record-type="106"> <!-- T004 --> <div class="t004"> <div class="t-container "> <div class="t-col t-col_8 t-prefix_2"> <div field="text" class="t-text t-text_md "><span style="color: rgb(74, 153, 116);">stages:</span><br /><span style="color: rgb(74, 153, 116);"> - build</span><br /><span style="color: rgb(74, 153, 116);"> - test</span><br /><span style="color: rgb(74, 153, 116);"> - deploy</span><br /><span style="color: rgb(74, 153, 116);"> </span><br /><span style="color: rgb(74, 153, 116);">variables:</span><br /><span style="color: rgb(74, 153, 116);"> APP_ENV: production</span><br /><span style="color: rgb(74, 153, 116);"> </span><br /><span style="color: rgb(74, 153, 116);">build_job:</span><br /><span style="color: rgb(74, 153, 116);"> stage: build</span><br /><span style="color: rgb(74, 153, 116);"> script:</span><br /><span style="color: rgb(74, 153, 116);"> - npm install</span><br /><span style="color: rgb(74, 153, 116);"> - npm run build</span><br /><span style="color: rgb(74, 153, 116);"> </span><br /><span style="color: rgb(74, 153, 116);">test_job:</span><br /><span style="color: rgb(74, 153, 116);"> stage: test</span><br /><span style="color: rgb(74, 153, 116);"> script:</span><br /><span style="color: rgb(74, 153, 116);"> - npm run test</span><br /><span style="color: rgb(74, 153, 116);"> </span><br /><span style="color: rgb(74, 153, 116);">deploy_job:</span><br /><span style="color: rgb(74, 153, 116);"> stage: deploy</span><br /><span style="color: rgb(74, 153, 116);"> script:</span><br /><span style="color: rgb(74, 153, 116);"> - scp -r ./build user@server:/var/www/project</span><br /><span style="color: rgb(74, 153, 116);"> only:</span><br /><span style="color: rgb(74, 153, 116);"> - main</span><br /><br /><strong>Этот пример демонстрирует процесс:</strong> установка зависимостей, сборка проекта, тестирование и загрузка собранной версии на сервер.</div> </div> </div> </div> <style> #rec1046097176 .t-text{font-size:18px;font-family:'Inter';}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec1046097176 .t-text{font-size:16px;}}</style> </div> <div id="rec1046097181" class="r t-rec t-rec_pt_45 t-rec_pb_0" style="padding-top:45px;padding-bottom:0px; " data-record-type="60"> <!-- T050 --> <div class="t050"> <div class="t-container t-align_left"> <div class="t-col t-col_8 t-prefix_2"> <h3 class="t050__title t-title t-title_xxl" field="title"><strong>Практические советы по настройке</strong></h3> </div> </div> </div> <style> #rec1046097181 .t050__uptitle{text-transform:uppercase;}#rec1046097181 .t050__title{color:#161518;}@media screen and (min-width:480px){#rec1046097181 .t050__title{font-size:28px;line-height:1.3;}}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec1046097181 .t050__title{font-size:20px;}}</style> </div> <div id="rec1046097186" class="r t-rec t-rec_pt_15 t-rec_pb_0" style="padding-top:15px;padding-bottom:0px; " data-animationappear="off" data-record-type="106"> <!-- T004 --> <div class="t004"> <div class="t-container "> <div class="t-col t-col_8 t-prefix_2"> <div field="text" class="t-text t-text_md "><ul><li data-list="bullet"><strong>Декомпозируйте пайплайн</strong>: пусть каждый этап делает одну небольшую задачу.</li><li data-list="bullet"><strong>Минимизируйте скрипты</strong>: переносите тяжелую логику в Makefile или bash-скрипты.</li><li data-list="bullet"><strong>Используйте артефакты</strong>: сохраняйте результаты сборки между этапами.</li></ul><br />Пример с артефактами:<br /><br /><span style="color: rgb(74, 153, 116);">build_job:</span><br /><span style="color: rgb(74, 153, 116);"> stage: build</span><br /><span style="color: rgb(74, 153, 116);"> script:</span><br /><span style="color: rgb(74, 153, 116);"> - npm run build</span><br /><span style="color: rgb(74, 153, 116);"> artifacts:</span><br /><span style="color: rgb(74, 153, 116);"> paths:</span><br /><span style="color: rgb(74, 153, 116);"> - build/</span><br /><br />Такой подход делает пайплайн надежным: если тесты или деплой отвалятся, результаты сборки не пропадут.</div> </div> </div> </div> <style> #rec1046097186 .t-text{font-size:18px;font-family:'Inter';}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec1046097186 .t-text{font-size:16px;}}</style> </div> <div id="rec1046199876" class="r t-rec t-rec_pt_45 t-rec_pb_0" style="padding-top:45px;padding-bottom:0px; " data-record-type="60"> <!-- T050 --> <div class="t050"> <div class="t-container t-align_left"> <div class="t-col t-col_8 t-prefix_2"> <h3 class="t050__title t-title t-title_xxl" field="title">Оптимизация пайплайнов</h3> </div> </div> </div> <style> #rec1046199876 .t050__uptitle{text-transform:uppercase;}#rec1046199876 .t050__title{color:#161518;}@media screen and (min-width:480px){#rec1046199876 .t050__title{font-size:28px;line-height:1.3;}}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec1046199876 .t050__title{font-size:20px;}}</style> </div> <div id="rec1046198116" class="r t-rec t-rec_pt_15 t-rec_pb_0" style="padding-top:15px;padding-bottom:0px; " data-animationappear="off" data-record-type="106"> <!-- T004 --> <div class="t004"> <div class="t-container "> <div class="t-col t-col_8 t-prefix_2"> <div field="text" class="t-text t-text_md ">При работе над крупными проектами, настройка требует продуманной оптимизации:<br /><br /><ul><li data-list="bullet">Используйте кэш для зависимостей:</li></ul><br /><span style="color: rgb(74, 153, 116);">cache:</span><br /><span style="color: rgb(74, 153, 116);"> paths:</span><br /><span style="color: rgb(74, 153, 116);"> - node_modules/</span><br /><br /><ul><li data-list="bullet">Параллельно запускайте независимые задачи через needs:</li></ul><br /><span style="color: rgb(74, 153, 116);">test_job:</span><br /><span style="color: rgb(74, 153, 116);"> stage: test</span><br /><span style="color: rgb(74, 153, 116);"> script: npm run test</span><br /><span style="color: rgb(74, 153, 116);"> needs:</span><br /><span style="color: rgb(74, 153, 116);"> - build_job</span><br /><br />Это ускоряет весь процесс: пока одна задача работает, другая уже стартует.</div> </div> </div> </div> <style> #rec1046198116 .t-text{font-size:18px;font-family:'Inter';}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec1046198116 .t-text{font-size:16px;}}</style> </div> <div id="rec1046200426" class="r t-rec t-rec_pt_45 t-rec_pb_0" style="padding-top:45px;padding-bottom:0px; " data-record-type="60"> <!-- T050 --> <div class="t050"> <div class="t-container t-align_left"> <div class="t-col t-col_8 t-prefix_2"> <h3 class="t050__title t-title t-title_xxl" field="title">Безопасность</h3> </div> </div> </div> <style> #rec1046200426 .t050__uptitle{text-transform:uppercase;}#rec1046200426 .t050__title{color:#161518;}@media screen and (min-width:480px){#rec1046200426 .t050__title{font-size:28px;line-height:1.3;}}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec1046200426 .t050__title{font-size:20px;}}</style> </div> <div id="rec1046198181" class="r t-rec t-rec_pt_15 t-rec_pb_0" style="padding-top:15px;padding-bottom:0px; " data-animationappear="off" data-record-type="106"> <!-- T004 --> <div class="t004"> <div class="t-container "> <div class="t-col t-col_8 t-prefix_2"> <div field="text" class="t-text t-text_md ">Поскольку пайплайн часто взаимодействует с серверами и базами данных, нужно обезопасить секреты. Лучший способ — использовать переменные окружения в настройках проекта.<br /><br /><ul><li data-list="bullet"><strong>Settings → CI/CD → Variables</strong> — сюда добавляют логины, пароли, API-ключи.</li></ul><br />Затем в <span style="color: rgb(74, 153, 116);">.gitlab-ci.yml:</span><br /><br /><span style="color: rgb(74, 153, 116);">script:</span><br /><span style="color: rgb(74, 153, 116);"> - curl -u "$USERNAME:$PASSWORD" https://example.com/deploy</span><br /><br />Так никакие данные не попадут в лог пайплайна или исходный код.</div> </div> </div> </div> <style> #rec1046198181 .t-text{font-size:18px;font-family:'Inter';}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec1046198181 .t-text{font-size:16px;}}</style> </div> <div id="rec1046097191" class="r t-rec t-rec_pt_30 t-rec_pb_30" style="padding-top:30px;padding-bottom:30px;background-color:#f7f9ff; " data-record-type="209" data-bg-color="#f7f9ff"> <!-- T185 --> <div class="t185"> <div class="t-container t-container_flex"> <div class="t-col t-col_flex t-col_6 t-prefix_2"> <div class="t185__text t-text t-text_lg" field="text"><strong>Начните бесплатно изучать принципы работы CI/CD! </strong><br />Дарим демодоступ к обучению на 3 дня, чтобы вы познакомились с материалами и спикерами курса.</div> </div> <div class="t185__butwrapper t-col t-col_2 "> <a
class="t-btn t-btnflex t-btnflex_type_button t-btnflex_md t185__btn"
href="https://slurm.io/gitlab-ci-cd?utm_source=blog&utm_medium=organic&utm_campaign=article_configuring_ci_cd"
target="_blank"><span class="t-btnflex__text">Перейти к курсу</span> <style>#rec1046097191 .t-btnflex.t-btnflex_type_button {color:#ffffff;background-color:#5c76ff;--border-width:0px;border-style:none !important;border-radius:15px;box-shadow:none !important;transition-duration:0.2s;transition-property:background-color,color,border-color,box-shadow,opacity,transform,gap;transition-timing-function:ease-in-out;}@media (hover:hover) {#rec1046097191 .t-btnflex.t-btnflex_type_button:not(.t-animate_no-hover):hover {background-color:#170f63 !important;}#rec1046097191 .t-btnflex.t-btnflex_type_button:not(.t-animate_no-hover):focus-visible {background-color:#170f63 !important;}}</style></a> </div> </div> </div> <style> #rec1046097191 .t185__text{font-size:18px;color:#170f63;}</style> </div> <div id="rec1046200506" class="r t-rec t-rec_pt_45 t-rec_pb_0" style="padding-top:45px;padding-bottom:0px; " data-record-type="60"> <!-- T050 --> <div class="t050"> <div class="t-container t-align_left"> <div class="t-col t-col_8 t-prefix_2"> <h3 class="t050__title t-title t-title_xxl" field="title">Что делать, если пайплайн падает?</h3> </div> </div> </div> <style> #rec1046200506 .t050__uptitle{text-transform:uppercase;}#rec1046200506 .t050__title{color:#161518;}@media screen and (min-width:480px){#rec1046200506 .t050__title{font-size:28px;line-height:1.3;}}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec1046200506 .t050__title{font-size:20px;}}</style> </div> <div id="rec1046198246" class="r t-rec t-rec_pt_15 t-rec_pb_0" style="padding-top:15px;padding-bottom:0px; " data-animationappear="off" data-record-type="106"> <!-- T004 --> <div class="t004"> <div class="t-container "> <div class="t-col t-col_8 t-prefix_2"> <div field="text" class="t-text t-text_md ">Ошибки — это часть работы над CI/CD. Чтобы быстрее их решать:<br /><ul><li data-list="bullet">Включайте set -e в скриптах bash — он остановит выполнение при первой ошибке.</li><li data-list="bullet">Используйте разметку логов (echo -e "\e[31mОшибка\e[0m") для удобной навигации.</li><li data-list="bullet">Делите пайплайны на несколько коротких задач вместо одного длинного скрипта.</li></ul></div> </div> </div> </div> <style> #rec1046198246 .t-text{font-size:18px;font-family:'Inter';}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec1046198246 .t-text{font-size:16px;}}</style> </div> <div id="rec1046215041" class="r t-rec t-rec_pt_45 t-rec_pb_0" style="padding-top:45px;padding-bottom:0px; " data-record-type="60"> <!-- T050 --> <div class="t050"> <div class="t-container t-align_left"> <div class="t-col t-col_8 t-prefix_2"> <h3 class="t050__title t-title t-title_xxl" field="title">Подключение к внешним сервисам</h3> </div> </div> </div> <style> #rec1046215041 .t050__uptitle{text-transform:uppercase;}#rec1046215041 .t050__title{color:#161518;}@media screen and (min-width:480px){#rec1046215041 .t050__title{font-size:28px;line-height:1.3;}}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec1046215041 .t050__title{font-size:20px;}}</style> </div> <div id="rec1046214906" class="r t-rec t-rec_pt_15 t-rec_pb_0" style="padding-top:15px;padding-bottom:0px; " data-animationappear="off" data-record-type="106"> <!-- T004 --> <div class="t004"> <div class="t-container "> <div class="t-col t-col_8 t-prefix_2"> <div field="text" class="t-text t-text_md ">Для продвинутой интеграции часто требуется работа с базами данных, кластерами Kubernetes, облачными платформами.<br /><br />Подключение к Kubernetes через .gitlab-ci.yml:<br /><br /><span style="color: rgb(74, 153, 116);">deploy_job:</span><br /><span style="color: rgb(74, 153, 116);"> stage: deploy</span><br /><span style="color: rgb(74, 153, 116);"> image: bitnami/kubectl</span><br /><span style="color: rgb(74, 153, 116);"> script:</span><br /><span style="color: rgb(74, 153, 116);"> - kubectl apply -f k8s/deployment.yaml</span><br /><span style="color: rgb(74, 153, 116);"> only:</span><br /><span style="color: rgb(74, 153, 116);"> - main</span><br /><br />Поддержка сторонних решений делает CI/CD мощным инструментом не только для сайтов, но и для микросервисов и больших распределенных систем.<br /><br />Настройка пайплайна — это не разовая задача, а постоянное улучшение процессов. Начав с базового варианта, со временем вы сможете выстроить мощную, устойчивую систему доставки кода.</div> </div> </div> </div> <style> #rec1046214906 .t-text{font-size:18px;font-family:'Inter';}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec1046214906 .t-text{font-size:16px;}}</style> </div> <div id="rec1046097196" class="r t-rec" style=" " data-record-type="215"> <a name="a5" style="font-size:0;"></a> </div> <div id="rec1046097201" class="r t-rec t-rec_pt_60 t-rec_pb_0" style="padding-top:60px;padding-bottom:0px; " data-animationappear="off" data-record-type="60"> <!-- T050 --> <div class="t050"> <div class="t-container t-align_left"> <div class="t-col t-col_8 t-prefix_2"> <h2 class="t050__title t-title t-title_xxl" field="title">Проверка работы Pipeline</h2> </div> </div> </div> <style> #rec1046097201 .t050__uptitle{text-transform:uppercase;}#rec1046097201 .t050__title{color:#161518;}@media screen and (min-width:900px){#rec1046097201 .t050__title{font-size:38px;}}@media screen and (min-width:480px) and (max-width:900px){#rec1046097201 .t050__title{font-size:28px;}}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec1046097201 .t050__title{font-size:28px;}}</style> </div> <div id="rec1046097206" class="r t-rec t-rec_pt_15 t-rec_pb_0" style="padding-top:15px;padding-bottom:0px; " data-animationappear="off" data-record-type="106"> <!-- T004 --> <div class="t004"> <div class="t-container "> <div class="t-col t-col_8 t-prefix_2"> <div field="text" class="t-text t-text_md ">Создать .gitlab-ci.yml — это только половина дела. Теперь нужно убедиться, что пайплайн запускается корректно, задачи выполняются последовательно, а развертывание проходит без ошибок.</div> </div> </div> </div> <style> #rec1046097206 .t-text{font-size:18px;font-family:'Inter';}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec1046097206 .t-text{font-size:16px;}}</style> </div> <div id="rec1046097211" class="r t-rec t-rec_pt_45 t-rec_pb_0" style="padding-top:45px;padding-bottom:0px; " data-record-type="60"> <!-- T050 --> <div class="t050"> <div class="t-container t-align_left"> <div class="t-col t-col_8 t-prefix_2"> <h3 class="t050__title t-title t-title_xxl" field="title">Как запустить пайплайн вручную</h3> </div> </div> </div> <style> #rec1046097211 .t050__uptitle{text-transform:uppercase;}#rec1046097211 .t050__title{color:#161518;}@media screen and (min-width:480px){#rec1046097211 .t050__title{font-size:28px;line-height:1.3;}}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec1046097211 .t050__title{font-size:20px;}}</style> </div> <div id="rec1046097216" class="r t-rec t-rec_pt_15 t-rec_pb_0" style="padding-top:15px;padding-bottom:0px; " data-animationappear="off" data-record-type="106"> <!-- T004 --> <div class="t004"> <div class="t-container "> <div class="t-col t-col_8 t-prefix_2"> <div field="text" class="t-text t-text_md ">После коммита файла .gitlab-ci.yml платформа автоматически запустит конвейер. Но можно сделать это вручную:<br /><br /><ol><li data-list="ordered">Перейдите в раздел <strong>CI/CD → Pipelines</strong> вашего проекта.</li><li data-list="ordered">Нажмите кнопку <strong>Run pipeline</strong>.</li><li data-list="ordered">Выберите ветку и нажмите <strong>Run</strong>.</li></ol><br />Это полезно, если вы хотите протестировать изменения в пайплайне без лишних коммитов.</div> </div> </div> </div> <style> #rec1046097216 .t-text{font-size:18px;font-family:'Inter';}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec1046097216 .t-text{font-size:16px;}}</style> </div> <div id="rec1046097221" class="r t-rec t-rec_pt_45 t-rec_pb_0" style="padding-top:45px;padding-bottom:0px; " data-record-type="60"> <!-- T050 --> <div class="t050"> <div class="t-container t-align_left"> <div class="t-col t-col_8 t-prefix_2"> <h3 class="t050__title t-title t-title_xxl" field="title"><strong>Как читать результаты</strong></h3> </div> </div> </div> <style> #rec1046097221 .t050__uptitle{text-transform:uppercase;}#rec1046097221 .t050__title{color:#161518;}@media screen and (min-width:480px){#rec1046097221 .t050__title{font-size:28px;line-height:1.3;}}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec1046097221 .t050__title{font-size:20px;}}</style> </div> <div id="rec1046097226" class="r t-rec t-rec_pt_0 t-rec_pb_0" style="padding-top:0px;padding-bottom:0px; " data-animationappear="off" data-record-type="106"> <!-- T004 --> <div class="t004"> <div class="t-container "> <div class="t-col t-col_8 t-prefix_2"> <div field="text" class="t-text t-text_md ">После запуска вы увидите список всех задач (jobs), разбитых по этапам (stages):<br /><br /><ul><li data-list="bullet">Зеленый значок ✅ — задача выполнена успешно.</li><li data-list="bullet">Красный крест ❌ — ошибка.</li><li data-list="bullet">Чёрные часики ⏳ — задача выполняется.</li></ul><br />Кликнув на задачу, можно посмотреть логи её выполнения. Если пайплайн упал, платформа четко покажет, на каком шаге возникла проблема.</div> </div> </div> </div> <style> #rec1046097226 .t-text{font-size:18px;font-family:'Inter';}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec1046097226 .t-text{font-size:16px;}}</style> </div> <div id="rec1046097231" class="r t-rec t-rec_pt_45 t-rec_pb_0" style="padding-top:45px;padding-bottom:0px; " data-record-type="60"> <!-- T050 --> <div class="t050"> <div class="t-container t-align_left"> <div class="t-col t-col_8 t-prefix_2"> <h3 class="t050__title t-title t-title_xxl" field="title">Распространённые ошибки</h3> </div> </div> </div> <style> #rec1046097231 .t050__uptitle{text-transform:uppercase;}#rec1046097231 .t050__title{color:#161518;}@media screen and (min-width:480px){#rec1046097231 .t050__title{font-size:28px;line-height:1.3;}}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec1046097231 .t050__title{font-size:20px;}}</style> </div> <div id="rec1046097236" class="r t-rec t-rec_pt_15 t-rec_pb_0" style="padding-top:15px;padding-bottom:0px; " data-animationappear="off" data-record-type="106"> <!-- T004 --> <div class="t004"> <div class="t-container "> <div class="t-col t-col_8 t-prefix_2"> <div field="text" class="t-text t-text_md ">При первых попытках настроить <strong>gitlab ci cd</strong> часто возникают такие ошибки:<br /><br /><ul><li data-list="bullet">Неправильный синтаксис в файле.</li><li data-list="bullet">Отсутствие прав у Runner'а на выполнение команд.</li><li data-list="bullet">Проблемы с сетевыми подключениями при деплое.</li></ul><br />Чтобы найти источник ошибки:<br /><br /><ul><li data-list="bullet">Проверьте логи задачи — ищите первую строку с ошибкой.</li><li data-list="bullet">Внимательно перечитайте описание приложения, доступы в системе.</li><li data-list="bullet">Убедитесь, что все переменные окружения заданы корректно.</li></ul></div> </div> </div> </div> <style> #rec1046097236 .t-text{font-size:18px;font-family:'Inter';}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec1046097236 .t-text{font-size:16px;}}</style> </div> <div id="rec1046229491" class="r t-rec t-rec_pt_45 t-rec_pb_0" style="padding-top:45px;padding-bottom:0px; " data-record-type="60"> <!-- T050 --> <div class="t050"> <div class="t-container t-align_left"> <div class="t-col t-col_8 t-prefix_2"> <h3 class="t050__title t-title t-title_xxl" field="title">Советы по улучшению пайплайна</h3> </div> </div> </div> <style> #rec1046229491 .t050__uptitle{text-transform:uppercase;}#rec1046229491 .t050__title{color:#161518;}@media screen and (min-width:480px){#rec1046229491 .t050__title{font-size:28px;line-height:1.3;}}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec1046229491 .t050__title{font-size:20px;}}</style> </div> <div id="rec1046229406" class="r t-rec t-rec_pt_15 t-rec_pb_0" style="padding-top:15px;padding-bottom:0px; " data-animationappear="off" data-record-type="106"> <!-- T004 --> <div class="t004"> <div class="t-container "> <div class="t-col t-col_8 t-prefix_2"> <div field="text" class="t-text t-text_md "><ul><li data-list="bullet">Добавляйте before_script и after_script, чтобы избежать дублирования кода:</li></ul><br /><span style="color: rgb(74, 153, 116);">before_script:</span><br /><span style="color: rgb(74, 153, 116);"> - npm install</span><br /><br /><span style="color: rgb(74, 153, 116);">after_script:</span><br /><span style="color: rgb(74, 153, 116);"> - echo "Очистка завершена"</span><br /><br /><ul><li data-list="bullet">Разбивайте большие этапы на несколько мелких задач.</li><li data-list="bullet">Настраивайте правила (rules) для разных веток:</li></ul><br /><span style="color: rgb(74, 153, 116);">deploy_job:</span><br /><span style="color: rgb(74, 153, 116);"> stage: deploy</span><br /><span style="color: rgb(74, 153, 116);"> script: ./deploy.sh</span><br /><span style="color: rgb(74, 153, 116);"> rules:</span><br /><span style="color: rgb(74, 153, 116);"> - if: '$CI_COMMIT_BRANCH == "main"'</span><br /><br />Таким образом деплой будет запускаться только для главной ветки.</div> </div> </div> </div> <style> #rec1046229406 .t-text{font-size:18px;font-family:'Inter';}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec1046229406 .t-text{font-size:16px;}}</style> </div> <div id="rec1046229656" class="r t-rec t-rec_pt_45 t-rec_pb_0" style="padding-top:45px;padding-bottom:0px; " data-record-type="60"> <!-- T050 --> <div class="t050"> <div class="t-container t-align_left"> <div class="t-col t-col_8 t-prefix_2"> <h3 class="t050__title t-title t-title_xxl" field="title">Проверка деплоя</h3> </div> </div> </div> <style> #rec1046229656 .t050__uptitle{text-transform:uppercase;}#rec1046229656 .t050__title{color:#161518;}@media screen and (min-width:480px){#rec1046229656 .t050__title{font-size:28px;line-height:1.3;}}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec1046229656 .t050__title{font-size:20px;}}</style> </div> <div id="rec1046229976" class="r t-rec t-rec_pt_15 t-rec_pb_0" style="padding-top:15px;padding-bottom:0px; " data-animationappear="off" data-record-type="106"> <!-- T004 --> <div class="t004"> <div class="t-container "> <div class="t-col t-col_8 t-prefix_2"> <div field="text" class="t-text t-text_md ">Если пайплайн дошёл до этапа deploy, стоит убедиться, что:<br /><br /><ul><li data-list="bullet">Код действительно оказался на сервере.</li><li data-list="bullet">Приложение запускается без ошибок.</li><li data-list="bullet">Старые версии файлов не мешают новой сборке.</li></ul><br />Проверить можно через SSH-подключение или через интерфейс сервера.<br /><br /><strong>Проверка пайплайна </strong>— важнейший этап внедрения рассматриваемых процессов. На этом этапе вы убедитесь, что автоматизация работает, а процесс доставки кода контролируем и прозрачен.</div> </div> </div> </div> <style> #rec1046229976 .t-text{font-size:18px;font-family:'Inter';}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec1046229976 .t-text{font-size:16px;}}</style> </div> <div id="rec1046097241" class="r t-rec" style=" " data-record-type="215"> <a name="a6" style="font-size:0;"></a> </div> <div id="rec1046097246" class="r t-rec t-rec_pt_60 t-rec_pb_0" style="padding-top:60px;padding-bottom:0px; " data-animationappear="off" data-record-type="60"> <!-- T050 --> <div class="t050"> <div class="t-container t-align_left"> <div class="t-col t-col_8 t-prefix_2"> <h2 class="t050__title t-title t-title_xxl" field="title"><strong>Заключение</strong></h2> </div> </div> </div> <style> #rec1046097246 .t050__uptitle{text-transform:uppercase;}#rec1046097246 .t050__title{color:#161518;}@media screen and (min-width:900px){#rec1046097246 .t050__title{font-size:38px;}}@media screen and (min-width:480px) and (max-width:900px){#rec1046097246 .t050__title{font-size:28px;}}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec1046097246 .t050__title{font-size:28px;}}</style> </div> <div id="rec1046097251" class="r t-rec t-rec_pt_15 t-rec_pb_0" style="padding-top:15px;padding-bottom:0px; " data-animationappear="off" data-record-type="106"> <!-- T004 --> <div class="t004"> <div class="t-container "> <div class="t-col t-col_8 t-prefix_2"> <div field="text" class="t-text t-text_md ">Настройка процессов непрерывной интеграции/деплоя — это не просто модный этап в разработке. Это фундамент для стабильной, быстрой, а самое главное — безопасной работы команды. Даже базовая автоматизация сборки и деплоя способна сэкономить десятки часов времени и предотвратить критические ошибки на продакшене.<br /><br />Документацию по использованию CI/CD для создания вашего приложения можно посмотреть на официальном источнике <a href="https://docs.gitlab.com/topics/build_your_application/">GitLab</a>.<br /><br /><strong>Давайте ещё раз кратко пройдем путь, который мы разобрали:</strong><br /><br /><ul><li data-list="bullet">Подготовили проект, определили модель развертывания.</li><li data-list="bullet">Установили и зарегистрировали «бегуна».</li><li data-list="bullet">Создали первый .gitlab-ci.yml с этапами сборки, тестирования и деплоя.</li><li data-list="bullet">Проверили конвейер в действии, наладили процесс автоматической доставки кода.</li></ul><br />Каждый из этих шагов приближает проект к профессиональному уровню.<br />На этом этапе у вас уже есть основа, которую можно масштабировать, добавлять сложные проверки, интегрировать с Kubernetes или облачными платформами.<br /><br /><strong>Конечно, на практике развивается вместе с проектом: </strong>по мере роста кода, команды и инфраструктуры вам придётся улучшать пайплайны, добавлять новые этапы и оптимизировать процессы.<br /><br />Если вы хотите быстро поднять уровень своих знаний и научиться не просто настраивать пайплайны, а строить продвинутую инфраструктуру доставки — самое время двигаться дальше.<br /><br />Освойте лучшие практики вместе с экспертами и начните автоматизировать свои процессы уже сегодня.<br /><br />👉<a href="https://slurm.io/gitlab-ci-cd?utm_source=blog&utm_medium=organic&utm_campaign=article_configuring_ci_cd"> </a><strong><a href="https://slurm.io/gitlab-ci-cd?utm_source=blog&utm_medium=organic&utm_campaign=article_configuring_ci_cd">Запишитесь на курс от Slurm</a> — и сделайте первый шаг к новым вершинам в карьере!</strong></div> </div> </div> </div> <style> #rec1046097251 .t-text{font-size:18px;font-family:'Inter';}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec1046097251 .t-text{font-size:16px;}}</style> </div> <div id="rec1046097256" class="r t-rec" style=" " data-animationappear="off" data-record-type="131"> <!-- T123 --> <div class="t123"> <div class="t-container_100 "> <div class="t-width t-width_100 "> <!-- nominify begin --> <script type="application/ld+json">
{
"@context": "https://schema.org/",
"@type": "BlogPosting",
"@id": "https://slurm.io/blog/nastrojka-cicd-v-gitlab",
"mainEntityOfPage": "https://slurm.io/blog/nastrojka-cicd-v-gitlab",
"headline": "Настройка CI/CD в GitLab",
"name": "GitLab CI/CD: пошаговое руководство по настройке. | Блог slurm.io",
"description": "✅Изучите настройку CI/CD в GitLab и автоматизируйте процессы разработки.Туториал по настройке GitLab CI/CD для автоматического развертывания вашего кода на сервере.",
"datePublished": "2025-05-08",
"dateModified": "2025-05-08",
"author": {
"@type": "Person",
"@id": "https://slurm.io/blog/nastrojka-cicd-v-gitlab",
"name": "Илья Иванов",
"url": "https://slurm.io/blog/nastrojka-cicd-v-gitlab",
"image": {
"@type": "ImageObject",
"@id": "https://optim.tildacdn.com/tild3734-3939-4137-a235-633361353035/-/resize/760x/-/format/webp/Docker_2_1.png.webp",
"url": "https://optim.tildacdn.com/tild3734-3939-4137-a235-633361353035/-/resize/760x/-/format/webp/Docker_2_1.png.webp",
"height": "114",
"width": "114"
}
},
"publisher": {
"@type": "Organization",
"@id": "https://slurm.io/",
"name": "Слёрм",
"logo": {
"@type": "ImageObject",
"@id": "https://static.tildacdn.com/tild6135-3939-4135-b731-656566303162/white.svg",
"url": "https://static.tildacdn.com/tild6135-3939-4135-b731-656566303162/white.svg",
"width": "105",
"height": "41"
}
},
"image": {
"@type": "ImageObject",
"@id": "https://optim.tildacdn.com/tild3734-3939-4137-a235-633361353035/-/resize/760x/-/format/webp/Docker_2_1.png.webp",
"url": "https://optim.tildacdn.com/tild3734-3939-4137-a235-633361353035/-/resize/760x/-/format/webp/Docker_2_1.png.webp",
"height": "640",
"width": "360"
},
"url": "https://slurm.io/blog/nastrojka-cicd-v-gitlab",
"isPartOf": {
"@type" : "Blog",
"@id": "https://slurm.io/blog",
"name": "Слёрм Blog",
"publisher": {
"@type": "Organization",
"@id": "https://slurm.io/",
"name": "Слёрм"
}
}
}
</script> <!-- nominify end --> </div> </div> </div> </div> <div id="rec1046097266" class="r t-rec t-rec_pt_60 t-rec_pb_0" style="padding-top:60px;padding-bottom:0px; " data-record-type="60"> <!-- T050 --> <div class="t050"> <div class="t-container t-align_left"> <div class="t-col t-col_8 t-prefix_2"> <h3 class="t050__title t-title t-title_xxl" field="title"><strong>Статью подготовили</strong></h3> </div> </div> </div> <style> #rec1046097266 .t050__uptitle{text-transform:uppercase;}#rec1046097266 .t050__title{color:#161518;}@media screen and (min-width:480px){#rec1046097266 .t050__title{font-size:28px;line-height:1.3;}}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec1046097266 .t050__title{font-size:20px;}}</style> </div> <div id="rec1046097271" class="r t-rec t-rec_pt_15" style="padding-top:15px; " data-record-type="165"> <!-- T152 --> <div class="t152"> <div class="t-container_8"> <div class="t-row"> <div class="t152__col t-col t-col_2"> <img class="t152__img t-img"
src="https://thb.tildacdn.com/tild6532-6566-4237-a263-356230626239/-/empty/image.png" data-original="https://static.tildacdn.com/tild6532-6566-4237-a263-356230626239/image.png"
imgfield="img"
alt=""> </div> <div class="t152__col t-col t-col_6 t152__wrapper"> <div class="t152__textwrapper"> <div class="t152__autor-title t-name t-name_sm" field="title">Редакция Слёрма</div> </div> </div> </div> </div> </div> <style> #rec1046097271 .t152__autor-title{font-weight:400;}</style> </div> <div id="rec1046097281" class="r t-rec t-rec_pt_30 t-rec_pb_0" style="padding-top:30px;padding-bottom:0px; " data-record-type="106"> <!-- T004 --> <div class="t004"> <div class="t-container "> <div class="t-col t-col_8 t-prefix_2"> <div field="text" class="t-text t-text_md "><div style="font-size: 18px;" data-customstyle="yes">Понравилась статья? Будем рады вашему лайку и репосту — вдруг кому-то тоже пригодится:)</div></div> </div> </div> </div> <style> #rec1046097281 .t-text{font-size:18px;font-family:'Inter';}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec1046097281 .t-text{font-size:16px;}}</style> </div> <div id="rec1046097286" class="r t-rec t-rec_pt_15 t-rec_pb_45" style="padding-top:15px;padding-bottom:45px; " data-record-type="797"> <!-- t797 --> <div class="t797"> <div class="t-container"> <div class="t-col t-col_8 t-prefix_2 t-align_center"> <div class="t797__wrapper t797__wrapper_padding" style="background-color:#e3e7ff;"> <div class="t794__title t-descr t-descr_md t-animate" data-animate-style="fadein" data-animate-group="yes" data-animate-order="1" field="title">Оцените статью</div> <div class="t797__answers t-vote" style="margin-top:-20px" data-vote-type="single" data-vote-id="1046097286" data-vote-visibility="onclick"> <button type="button" class="t-vote__btn-wrapper js-vote-item t-animate" style="margin:20px 10px 0px 10px;" data-answer-id="2268461755720" data-animate-style="zoomin" data-animate-chain="yes"> <div class="t-vote__btn-el js-vote-btn js-sendvote-btn"> <img
src="https://static.tildacdn.com/lib/emoji/twemoji/neutral_face_color.svg"
class="t797__img t797__img_width t-img"
imgfield="li_img__2268461755720"
alt=""
/> </div> <div class="t-vote__btn-res t-descr t-descr_xxs t-align_center " style="display:none;"> <span class="t-vote__btn-res__num js-vote-count">0</span> </div> </button> <button type="button" class="t-vote__btn-wrapper js-vote-item t-animate" style="margin:20px 10px 0px 10px;" data-answer-id="9268461755722" data-animate-style="zoomin" data-animate-chain="yes"> <div class="t-vote__btn-el js-vote-btn js-sendvote-btn"> <img
src="https://static.tildacdn.com/lib/emoji/twemoji/smiling_face_with_smiling_eyes_color.svg"
class="t797__img t797__img_width t-img"
imgfield="li_img__9268461755722"
alt=""
/> </div> <div class="t-vote__btn-res t-descr t-descr_xxs t-align_center " style="display:none;"> <span class="t-vote__btn-res__num js-vote-count">0</span> </div> </button> <button type="button" class="t-vote__btn-wrapper js-vote-item t-animate" style="margin:20px 10px 0px 10px;" data-answer-id="1268461755723" data-animate-style="zoomin" data-animate-chain="yes"> <div class="t-vote__btn-el js-vote-btn js-sendvote-btn"> <img
src="https://static.tildacdn.com/lib/emoji/twemoji/starstruck_color.svg"
class="t797__img t797__img_width t-img"
imgfield="li_img__1268461755723"
alt=""
/> </div> <div class="t-vote__btn-res t-descr t-descr_xxs t-align_center " style="display:none;"> <span class="t-vote__btn-res__num js-vote-count">0</span> </div> </button> </div> </div> </div> </div> </div> <script>t_onReady(function() {t_onFuncLoad('t797_init',function() {t797_init(1046097286);});});</script> <style> #rec1046097286 .t797__wrapper{border-radius:10px;}</style> </div> <div id="rec1046097291" class="r t-rec" style=" " data-animationappear="off" data-record-type="131"> <!-- T123 --> <div class="t123"> <div class="t-container "> <div class="t-col t-col_8 t-prefix_2"> <!-- nominify begin --> <script src="https://yastatic.net/share2/share.js"></script> <div class="ya-share2" data-curtain data-size="l" data-services="vkontakte,odnoklassniki,telegram,whatsapp,linkedin"></div> <!-- nominify end --> </div> </div> </div> </div> <div id="rec1046097306" class="r t-rec t-rec_pt_60 t-rec_pb_0" style="padding-top:60px;padding-bottom:0px; " data-record-type="60"> <!-- T050 --> <div class="t050"> <div class="t-container t-align_left"> <div class="t-col t-col_8 t-prefix_2"> <h3 class="t050__title t-title t-title_xxl" field="title"><strong>Читайте также:</strong></h3> </div> </div> </div> <style> #rec1046097306 .t050__uptitle{text-transform:uppercase;}#rec1046097306 .t050__title{color:#161518;}@media screen and (min-width:480px){#rec1046097306 .t050__title{font-size:28px;line-height:1.3;}}</style> </div> <div id="rec1046097316" class="r t-rec t-rec_pt_15 t-rec_pb_120" style="padding-top:15px;padding-bottom:120px; " data-animationappear="off" data-record-type="896"> <!-- t896 --> <!-- @classes t-descr t-descr_xxs t-descr_sm t-title t-title_xxs t-text t-text_md t-heading t-heading_lg t-name t-uptitle t-uptitle_sm t-uptitle_xs t-name_md --> <div class="t896"> <!-- grid container start --> <div class="js-feed t-feed t-feed_row" data-feed-grid-type="row" data-feed-recid="1046097316"> <div class="t-feed__container t-container"> <div class="js-feed-parts-select-container t-col t-col_8 t-prefix_2"></div> </div> <!-- preloader els --> <div class="js-feed-preloader t-feed__post-preloader_row t-feed__post-preloader__container_hidden t-container"> <div class="t-feed__post-preloader t-col t-col_8 t-prefix_2"> <div class="t-feed__post-preloader__wrapper"> <div class="t-feed__post-preloader__img"></div> <div class="t-feed__post-preloader__textwrapper"> <div class="t-feed__post-preloader__text"></div> <div class="t-feed__post-preloader__text"></div> <div class="t-feed__post-preloader__text"></div> <div class="t-feed__post-preloader__text"></div> <div class="t-feed__post-preloader__text"></div> </div> </div> </div> <div class="t-feed__post-preloader t-col t-col_8 t-prefix_2"> <div class="t-feed__post-preloader__wrapper"> <div class="t-feed__post-preloader__img"></div> <div class="t-feed__post-preloader__textwrapper"> <div class="t-feed__post-preloader__text"></div> <div class="t-feed__post-preloader__text"></div> <div class="t-feed__post-preloader__text"></div> <div class="t-feed__post-preloader__text"></div> <div class="t-feed__post-preloader__text"></div> </div> </div> </div> <div class="t-feed__post-preloader t-col t-col_8 t-prefix_2"> <div class="t-feed__post-preloader__wrapper"> <div class="t-feed__post-preloader__img"></div> <div class="t-feed__post-preloader__textwrapper"> <div class="t-feed__post-preloader__text"></div> <div class="t-feed__post-preloader__text"></div> <div class="t-feed__post-preloader__text"></div> <div class="t-feed__post-preloader__text"></div> <div class="t-feed__post-preloader__text"></div> </div> </div> </div> </div> <!-- preloader els end --> <ul role="list" class="js-feed-container t-feed__container t-container" data-feed-show-count="4" data-feed-show-slice="1"></ul> </div> <!-- grid container end --> </div> <style>#rec1046097316 .t-feed__parts-switch-btn{border:1px solid #000000;border-radius:40px;}#rec1046097316 .t-feed__parts-switch-btn span,#rec1046097316 .t-feed__parts-switch-btn a{color:#000000;padding:6px 18px 6px;border-radius:40px;}#rec1046097316 .t-feed__parts-switch-btn.t-active{background-color:#000000;}#rec1046097316 .t-feed__parts-switch-btn.t-active span,#rec1046097316 .t-feed__parts-switch-btn.t-active a{color:#ffffff !important;}#rec1046097316 .t-feed__post-popup__cover-wrapper .t-slds__arrow{background-color:rgba(255,255,255,1);}#rec1046097316 .t-feed__post-popup__cover-wrapper .t-slds__bullet_active .t-slds__bullet_body,#rec1046097316 .t-feed__post-popup__cover-wrapper .t-slds__bullet:hover .t-slds__bullet_body{background-color:#222 !important;}</style> <style> #rec1046097316 .t-feed__parts-switch-btn{color:#000000;font-weight:400;}</style> <script>t_onReady(function() {var separator_optsObj={height:'',color:'',opacity:'',hideSeparator:false};var popup_optsObj={popupBgColor:'#ffffff',overlayBgColorRgba:'rgba(255,255,255,1)',closeText:'',iconColor:'#000000',popupStat:'',titleColor:'',textColor:'',subtitleColor:'',datePos:'aftertext',partsPos:'aftertext',imagePos:'aftertitle',inTwoColumns:false,zoom:false,styleRelevants:'',methodRelevants:'random',titleRelevants:'',showRelevants:'',shareStyle:'',shareBg:'',isShare:false,shareServices:'',shareFBToken:'',showDate:true,bgSize:'cover',titleFontFamily:'',descrFontFamily:'',subtitleFontFamily:''};var arrowtop_optsObj={isShow:false,style:'',color:'',bottom:'',left:'',right:''};var parts_optsObj={partsBgColor:'',partsBorderSize:'1px',partsBorderColor:'#000000',align:'center'};var gallery_optsObj={control:'',arrowSize:'',arrowBorderSize:'',arrowColor:'',arrowColorHover:'',arrowBg:'#ffffff',arrowBgHover:'',arrowBgOpacity:'',arrowBgOpacityHover:'',showBorder:'',dotsWidth:'',dotsBg:'',dotsActiveBg:'',dotsBorderSize:''};var colWithBg_optsObj={paddingSize:'',background:'',borderRadius:'',shadow:'',shadowSize:'',shadowOpacity:'',shadowHover:'',shadowSizeHover:'',shadowOpacityHover:'',shadowShiftyHover:''};var options={recid:'1046097316',feeduid:'784947206928',previewmode:'yes',align:'',amountOfPosts:'4',reverse:'desc',blocksInRow:'',blocksClass:'',blocksWidth:'',colClass:'8',prefixClass:'2',vindent:'',dateFormat:'4',timeFormat:'',imageRatio:'75',hasOriginalAspectRatio:false,imageHeight:'',imageWidth:'',dateFilter:'all',showPartAll:true,showImage:true,showShortDescr:true,showParts:true,showDate:true,hideFeedParts:true,parts_opts:parts_optsObj,btnsAlign:false,colWithBg:colWithBg_optsObj,separator:separator_optsObj,btnAllPostsText:'',popup_opts:popup_optsObj,arrowtop_opts:arrowtop_optsObj,gallery:gallery_optsObj,amountOfSymbols:'',btnText:'',isHorizOnMob:false,itemsAnim:'',datePosPs:'afterdescr',partsPosPs:'afterdescr',imagePosPs:'beforetitle',datePos:'beforetitle',partsPos:'beforetitle',imagePos:'beforetitle'};t_onFuncLoad('t_feed_init',function() {t_feed_init('1046097316',options);});});</script> </div> <div id="rec1046097326" class="r t-rec" style=" " data-animationappear="off" data-record-type="131"> <!-- T123 --> <div class="t123"> <div class="t-container_100 "> <div class="t-width t-width_100 "> <!-- nominify begin --> <style>
#rec928256836 div{
left: 0 !important;
right: 0 !important;
float: none !important;
}
#rec928256836 .t-container_100.t014{
max-width: 1160px;
margin: 0 auto;
}
@media screen and (max-width: 1200px) {
#rec928256836 .t-container_100.t014{
max-width: 960px;
}
#rec928256836 .t-container_100.t014 .ya-share2__container{
margin: 0px 10px;
}
}
@media screen and (max-width: 960px) {
#rec928256836 .t-container_100.t014{
max-width: 640px;
}
#rec928256836 .t-container_100.t014 .ya-share2__container{
margin: 0px;
padding: 0px 20px;
}
}
</style> <!-- nominify end --> </div> </div> </div> </div> <div id="rec1046097331" class="r t-rec" style=" " data-animationappear="off" data-record-type="890"> <!-- t890 --> <div class="t890"> <button type="button"
class="t890__arrow
aria-label="Вернуться к началу страницы"
style="box-shadow:0px 0px 10px rgba(0,0,0,0.2);"> <svg role="presentation" width="50" height="50" fill="none" xmlns="http://www.w3.org/2000/svg"> <rect width="50" height="50" rx="50" fill="#ffffff" fill-opacity="0.90" stroke="none" /> <path d="M14 28L25 18l10 10" stroke="#000000" stroke-width="1" fill="none"/> </svg> </button> </div> <style>#rec1046097331 .t890{left:20px;right:unset;bottom:70px;}</style> <script type="text/javascript">t_onReady(function() {t_onFuncLoad('t890_init',function() {t890_init('1046097331','');});});</script> <style>@media screen and (min-width:981px){#rec1046097331 .t890__arrow:hover svg path{stroke:#ffffff;stroke-width:1;}#rec1046097331 .t890__arrow:focus-visible svg path{stroke:#ffffff;stroke-width:1;}#rec1046097331 .t890__arrow:hover svg rect{fill:#1c59ff;fill-opacity:1;}#rec1046097331 .t890__arrow:focus-visible svg rect{fill:#1c59ff;fill-opacity:1;}}#rec1046097331 .t890__arrow{border-radius:53px;}</style> </div> <div id="rec1046097336" class="r t-rec" style=" " data-record-type="270"> <div class="t270"></div> <script>t_onReady(function() {var hash=window.location.hash;t_onFuncLoad('t270_scroll',function() {t270_scroll(hash,-3);});setTimeout(function() {var curPath=window.location.pathname;var curFullPath=window.location.origin + curPath;var recs=document.querySelectorAll('.r');Array.prototype.forEach.call(recs,function(rec) {var selects='a[href^="#"]:not([href="#"]):not(.carousel-control):not(.t-carousel__control):not([href^="#price"]):not([href^="#submenu"]):not([href^="#popup"]):not([href*="#zeropopup"]):not([href*="#closepopup"]):not([href*="#closeallpopup"]):not([href^="#prodpopup"]):not([href^="#order"]):not([href^="#!"]):not([target="_blank"]),' +
'a[href^="' + curPath + '#"]:not([href*="#!/tfeeds/"]):not([href*="#!/tproduct/"]):not([href*="#!/tab/"]):not([href*="#popup"]):not([href*="#zeropopup"]):not([href*="#closepopup"]):not([href*="#closeallpopup"]):not([target="_blank"]),' +
'a[href^="' + curFullPath + '#"]:not([href*="#!/tfeeds/"]):not([href*="#!/tproduct/"]):not([href*="#!/tab/"]):not([href*="#popup"]):not([href*="#zeropopup"]):not([href*="#closepopup"]):not([href*="#closeallpopup"]):not([target="_blank"])';var elements=rec.querySelectorAll(selects);Array.prototype.forEach.call(elements,function(element) {element.addEventListener('click',function(event) {event.preventDefault();var hash=this.hash.trim();t_onFuncLoad('t270_scroll',function() {t270_scroll(hash,-3);});});});});if(document.querySelectorAll('.js-store').length>0||document.querySelectorAll('.js-feed').length>0) {t_onFuncLoad('t270_scroll',function() {t270_scroll(hash,-3,1);});}},500);setTimeout(function() {var hash=window.location.hash;if(hash&&document.querySelectorAll('a[name="' + hash.slice(1) + '"], div[id="' + hash.slice(1) + '"]').length>0) {if(window.isMobile) {t_onFuncLoad('t270_scroll',function() {t270_scroll(hash,0);});} else {t_onFuncLoad('t270_scroll',function() {t270_scroll(hash,0);});}}},1000);window.addEventListener('popstate',function() {var hash=window.location.hash;if(hash&&document.querySelectorAll('a[name="' + hash.slice(1) + '"], div[id="' + hash.slice(1) + '"]').length>0) {if(window.isMobile) {t_onFuncLoad('t270_scroll',function() {t270_scroll(hash,0);});} else {t_onFuncLoad('t270_scroll',function() {t270_scroll(hash,0);});}}});});</script> </div> <!--footer--> <footer id="t-footer" class="t-records" data-hook="blocks-collection-content-node" data-tilda-project-id="705564" data-tilda-page-id="13176281" data-tilda-page-alias="footer" data-tilda-formskey="59b517bfad01153865a4875be1bdd366" data-tilda-stat-scroll="yes" data-tilda-lazy="yes" data-tilda-root-zone="com" data-tilda-project-headcode="yes" data-tilda-ts="y" data-tilda-project-country="RU"> <div id="rec1684307921" class="r t-rec" style=" " data-animationappear="off" data-record-type="131"> <!-- T123 --> <div class="t123"> <div class="t-container_100 "> <div class="t-width t-width_100 "> <!-- nominify begin --> <script>
$('.example-3 .tn-atom').on('click', function () {
var $temp = $('<input>');
$('body').append($temp);
$temp.val($(this).text()).select();
document.execCommand('copy');
$temp.remove();
$(this).text('Скопирован!');
});
</script> <style>
.example-3 { cursor: pointer; }
</style> <!-- nominify end --> </div> </div> </div> </div> <div id="rec480081308" class="r t-rec uc-cookie-block" style=" " data-animationappear="off" data-record-type="121" data-alias-record-type="886"> <!-- T886 --> <div class="t886 t886_closed" data-storage-item="t886cookiename_705564" style=""> <div class="t886__wrapper" style="background-color:#ffffff; width:800px;"> <div class="t886__text t-text t-text_xs t-valign_middle" field="text">На сайте мы используем cookie. Без них несладко.</div> <div
class="t-btn t-btnflex t-btnflex_type_button t-btnflex_sm t886__btn"
type="button"><span class="t-btnflex__text">Хорошо</span> <style>#rec480081308 .t-btnflex.t-btnflex_type_button {color:#ffffff;background-color:#000000;--border-width:0px;border-style:none !important;border-radius:5px;box-shadow:none !important;font-weight:400;transition-duration:0.2s;transition-property:background-color,color,border-color,box-shadow,opacity,transform,gap;transition-timing-function:ease-in-out;}@media (hover:hover) {#rec480081308 .t-btnflex.t-btnflex_type_button:not(.t-animate_no-hover):hover {color:#ffffff !important;background-color:#170f63 !important;}#rec480081308 .t-btnflex.t-btnflex_type_button:not(.t-animate_no-hover):focus-visible {color:#ffffff !important;background-color:#170f63 !important;}}</style></div> </div> </div> <script type="text/javascript">t_onReady(function() {t_onFuncLoad('t886_init',function() {t886_init('480081308');});});</script> <style>#rec480081308 .t886__text{text-align:left;}</style> <style> #rec480081308 .t886__text{font-size:14px;line-height:1;color:#000000;}</style> <style> #rec480081308 .t886__wrapper{border-radius:5px;}</style> </div> <div id="rec495453579" class="r t-rec uc-footer--type0" style=" " data-animationappear="off" data-record-type="121" data-alias-record-type="396"> <!-- T396 --> <style>#rec495453579 .t396__artboard {height:847px;background-color:#ffffff;}#rec495453579 .t396__filter {height:847px;}#rec495453579 .t396__carrier{height:847px;background-position:center center;background-attachment:scroll;background-size:cover;background-repeat:no-repeat;}@media screen and (max-width:1199px) {#rec495453579 .t396__artboard,#rec495453579 .t396__filter,#rec495453579 .t396__carrier {height:840px;}#rec495453579 .t396__filter {}#rec495453579 .t396__carrier {background-attachment:scroll;}}@media screen and (max-width:959px) {#rec495453579 .t396__artboard,#rec495453579 .t396__filter,#rec495453579 .t396__carrier {height:1196px;}#rec495453579 .t396__filter {}#rec495453579 .t396__carrier {background-attachment:scroll;}}@media screen and (max-width:639px) {#rec495453579 .t396__artboard,#rec495453579 .t396__filter,#rec495453579 .t396__carrier {height:1513px;}#rec495453579 .t396__filter {}#rec495453579 .t396__carrier {background-attachment:scroll;}}@media screen and (max-width:479px) {#rec495453579 .t396__artboard,#rec495453579 .t396__filter,#rec495453579 .t396__carrier {height:1536px;}#rec495453579 .t396__filter {}#rec495453579 .t396__carrier {background-attachment:scroll;}}#rec495453579 .tn-elem[data-elem-id="1712236782477"]{z-index:3;top:74px;;left:calc(50% - 600px + 20px);;width:105px;height:auto;}#rec495453579 .tn-elem[data-elem-id="1712236782477"] .tn-atom{border-radius:0px 0px 0px 0px;background-position:center center;border-width:var(--t396-borderwidth,0);border-style:var(--t396-borderstyle,solid);border-color:var(--t396-bordercolor,transparent);transition:background-color var(--t396-speedhover,0s) ease-in-out,color var(--t396-speedhover,0s) ease-in-out,border-color var(--t396-speedhover,0s) ease-in-out,box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;}#rec495453579 .tn-elem[data-elem-id="1712236782477"] .tn-atom__img{border-radius:0px 0px 0px 0px;object-position:center center;}@media screen and (max-width:1199px){#rec495453579 .tn-elem[data-elem-id="1712236782477"]{display:table;left:calc(50% - 480px + 36px);;height:auto;}}@media screen and (max-width:959px){#rec495453579 .tn-elem[data-elem-id="1712236782477"]{display:table;top:61px;;left:calc(50% - 320px + 24px);;height:auto;}}@media screen and (max-width:639px){#rec495453579 .tn-elem[data-elem-id="1712236782477"]{display:table;top:40pxpx;;left:calc(50% - 240px + 15px);;width:105px;height:auto;}}@media screen and (max-width:479px){#rec495453579 .tn-elem[data-elem-id="1712236782477"]{display:table;top:36px;;left:calc(50% - 160px + 7px);;height:auto;}}#rec495453579 .tn-elem[data-elem-id="1712235605947"]{z-index:3;top:74px;;left:calc(50% - 600px + 20px);;width:105px;height:auto;}#rec495453579 .tn-elem[data-elem-id="1712235605947"] .tn-atom{border-radius:0px 0px 0px 0px;opacity:0;background-position:center center;border-width:var(--t396-borderwidth,0);border-style:var(--t396-borderstyle,solid);border-color:var(--t396-bordercolor,transparent);transition:background-color var(--t396-speedhover,0s) ease-in-out,color var(--t396-speedhover,0s) ease-in-out,border-color var(--t396-speedhover,0s) ease-in-out,box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;}#rec495453579 .tn-elem[data-elem-id="1712235605947"] .tn-atom__img{border-radius:0px 0px 0px 0px;object-position:center center;}@media screen and (max-width:1199px){#rec495453579 .tn-elem[data-elem-id="1712235605947"]{display:table;left:calc(50% - 480px + 36px);;height:auto;}}@media screen and (max-width:959px){#rec495453579 .tn-elem[data-elem-id="1712235605947"]{display:table;top:61px;;left:calc(50% - 320px + 24px);;height:auto;}}@media screen and (max-width:639px){#rec495453579 .tn-elem[data-elem-id="1712235605947"]{display:table;top:40px;;left:calc(50% - 240px + 15px);;width:105px;height:auto;}}@media screen and (max-width:479px){#rec495453579 .tn-elem[data-elem-id="1712235605947"]{display:table;top:36px;;left:calc(50% - 160px + 7px);;height:auto;}#rec495453579 .tn-elem[data-elem-id="1712235605947"] .tn-atom{background-size:cover;opacity:0;}}#rec495453579 .tn-elem[data-elem-id="1692506348245"]{z-index:3;top:58px;;left:calc(50% - 600px + 820px);;width:120px;height:auto;}#rec495453579 .tn-elem[data-elem-id="1692506348245"] .tn-atom{border-radius:0px 0px 0px 0px;background-position:center center;border-width:var(--t396-borderwidth,0);border-style:var(--t396-borderstyle,solid);border-color:var(--t396-bordercolor,transparent);transition:background-color var(--t396-speedhover,0s) ease-in-out,color var(--t396-speedhover,0s) ease-in-out,border-color var(--t396-speedhover,0s) ease-in-out,box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;}#rec495453579 .tn-elem[data-elem-id="1692506348245"] .tn-atom__img{border-radius:0px 0px 0px 0px;object-position:center center;}@media screen and (max-width:1199px){#rec495453579 .tn-elem[data-elem-id="1692506348245"]{display:table;left:calc(50% - 480px + 640px);;height:auto;}}@media screen and (max-width:959px){#rec495453579 .tn-elem[data-elem-id="1692506348245"]{display:table;top:755px;;left:calc(50% - 320px + 24px);;height:auto;}}@media screen and (max-width:639px){#rec495453579 .tn-elem[data-elem-id="1692506348245"]{display:table;top:835px;;left:calc(50% - 240px + 20px);;height:auto;}}@media screen and (max-width:479px){#rec495453579 .tn-elem[data-elem-id="1692506348245"]{display:table;top:863px;;left:calc(50% - 160px + 10px);;height:auto;}}#rec495453579 .tn-elem[data-elem-id="1692506631214"]{z-index:3;top:58px;;left:calc(50% - 600px + 820px);;width:120px;height:auto;}#rec495453579 .tn-elem[data-elem-id="1692506631214"] .tn-atom{border-radius:0px 0px 0px 0px;opacity:0;background-position:center center;border-width:var(--t396-borderwidth,0);border-style:var(--t396-borderstyle,solid);border-color:var(--t396-bordercolor,transparent);transition:background-color var(--t396-speedhover,0s) ease-in-out,color var(--t396-speedhover,0s) ease-in-out,border-color var(--t396-speedhover,0s) ease-in-out,box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;}#rec495453579 .tn-elem[data-elem-id="1692506631214"] .tn-atom__img{border-radius:0px 0px 0px 0px;object-position:center center;}@media screen and (max-width:1199px){#rec495453579 .tn-elem[data-elem-id="1692506631214"]{display:table;left:calc(50% - 480px + 640px);;height:auto;}}@media screen and (max-width:959px){#rec495453579 .tn-elem[data-elem-id="1692506631214"]{display:table;top:757px;;left:calc(50% - 320px + 24px);;height:auto;}}@media screen and (max-width:639px){#rec495453579 .tn-elem[data-elem-id="1692506631214"]{display:table;top:845px;;left:calc(50% - 240px + 20px);;height:auto;}}@media screen and (max-width:479px){#rec495453579 .tn-elem[data-elem-id="1692506631214"]{display:table;top:873px;;left:calc(50% - 160px + 10px);;height:auto;}}#rec495453579 .tn-elem[data-elem-id="1660327289504"]{color:#8999a9;z-index:3;top:121px;;left:calc(50% - 600px + 20px);;width:360px;height:auto;}#rec495453579 .tn-elem[data-elem-id="1660327289504"] .tn-atom{vertical-align:middle;color:#8999a9;font-size:18px;font-family:var(--t-text-font,Arial);line-height:1.33;font-weight:400;background-position:center center;border-width:var(--t396-borderwidth,0);border-style:var(--t396-borderstyle,solid);border-color:var(--t396-bordercolor,transparent);transition:background-color var(--t396-speedhover,0s) ease-in-out,color var(--t396-speedhover,0s) ease-in-out,border-color var(--t396-speedhover,0s) ease-in-out,box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;--t396-shadow-text-opacity:100%;text-shadow:var(--t396-shadow-text-x,0px) var(--t396-shadow-text-y,0px) var(--t396-shadow-text-blur,0px) rgba(var(--t396-shadow-text-color),var(--t396-shadow-text-opacity,100%));}@media screen and (max-width:1199px){#rec495453579 .tn-elem[data-elem-id="1660327289504"]{display:table;left:calc(50% - 480px + 32px);;width:288px;height:auto;}}@media screen and (max-width:959px){#rec495453579 .tn-elem[data-elem-id="1660327289504"]{display:table;top:68px;;left:calc(50% - 320px + 153px);;height:auto;}}@media screen and (max-width:639px){#rec495453579 .tn-elem[data-elem-id="1660327289504"]{display:table;top:81px;;left:calc(50% - 240px + 20px);;height:auto;}}@media screen and (max-width:479px){#rec495453579 .tn-elem[data-elem-id="1660327289504"]{display:table;left:calc(50% - 160px + 10px);;width:300px;height:auto;}#rec495453579 .tn-elem[data-elem-id="1660327289504"] .tn-atom{font-size:16px;line-height:1.5;background-size:cover;}}#rec495453579 .tn-elem[data-elem-id="1660327420094"]{color:#172b4d;z-index:3;top:185px;;left:calc(50% - 600px + 14px);;width:336px;height:auto;}#rec495453579 .tn-elem[data-elem-id="1660327420094"] .tn-atom{vertical-align:middle;color:#172b4d;font-size:24px;font-family:var(--t-text-font,Arial);line-height:1.08;font-weight:400;background-position:center center;border-width:var(--t396-borderwidth,0);border-style:var(--t396-borderstyle,solid);border-color:var(--t396-bordercolor,transparent);transition:background-color var(--t396-speedhover,0s) ease-in-out,color var(--t396-speedhover,0s) ease-in-out,border-color var(--t396-speedhover,0s) ease-in-out,box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;--t396-shadow-text-opacity:100%;text-shadow:var(--t396-shadow-text-x,0px) var(--t396-shadow-text-y,0px) var(--t396-shadow-text-blur,0px) rgba(var(--t396-shadow-text-color),var(--t396-shadow-text-opacity,100%));}@media screen and (max-width:1199px){#rec495453579 .tn-elem[data-elem-id="1660327420094"]{display:table;left:calc(50% - 480px + 27px);;width:264px;height:auto;}}@media screen and (max-width:959px){#rec495453579 .tn-elem[data-elem-id="1660327420094"]{display:table;top:124px;;left:calc(50% - 320px + 20px);;height:auto;}}@media screen and (max-width:639px){#rec495453579 .tn-elem[data-elem-id="1660327420094"]{display:table;left:calc(50% - 240px + 15px);;width:440px;height:auto;}}@media screen and (max-width:479px){#rec495453579 .tn-elem[data-elem-id="1660327420094"]{display:table;left:calc(50% - 160px + 5px);;width:300px;height:auto;}}#rec495453579 .tn-elem[data-elem-id="1660327526179"]{color:#172b4d;z-index:3;top:223px;;left:calc(50% - 600px + 16px);;width:336px;height:auto;}#rec495453579 .tn-elem[data-elem-id="1660327526179"] .tn-atom{vertical-align:middle;color:#172b4d;font-size:24px;font-family:var(--t-text-font,Arial);line-height:1.08;font-weight:400;background-position:center center;border-width:var(--t396-borderwidth,0);border-style:var(--t396-borderstyle,solid);border-color:var(--t396-bordercolor,transparent);transition:background-color var(--t396-speedhover,0s) ease-in-out,color var(--t396-speedhover,0s) ease-in-out,border-color var(--t396-speedhover,0s) ease-in-out,box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;--t396-shadow-text-opacity:100%;text-shadow:var(--t396-shadow-text-x,0px) var(--t396-shadow-text-y,0px) var(--t396-shadow-text-blur,0px) rgba(var(--t396-shadow-text-color),var(--t396-shadow-text-opacity,100%));}@media screen and (max-width:1199px){#rec495453579 .tn-elem[data-elem-id="1660327526179"]{display:table;left:calc(50% - 480px + 28px);;width:264px;height:auto;}}@media screen and (max-width:959px){#rec495453579 .tn-elem[data-elem-id="1660327526179"]{display:table;top:162px;;left:calc(50% - 320px + 20px);;height:auto;}}@media screen and (max-width:639px){#rec495453579 .tn-elem[data-elem-id="1660327526179"]{display:table;left:calc(50% - 240px + 16px);;width:440px;height:auto;}}@media screen and (max-width:479px){#rec495453579 .tn-elem[data-elem-id="1660327526179"]{display:table;left:calc(50% - 160px + 6px);;width:300px;height:auto;}}#rec495453579 .tn-elem[data-elem-id="1660328247771"]{color:#172b4d;z-index:3;top:547px;;left:calc(50% - 600px + 419px);;width:336px;height:auto;}#rec495453579 .tn-elem[data-elem-id="1660328247771"] .tn-atom{vertical-align:middle;color:#172b4d;font-size:16px;font-family:var(--t-text-font,Arial);line-height:1.5;font-weight:400;background-position:center center;border-width:var(--t396-borderwidth,0);border-style:var(--t396-borderstyle,solid);border-color:var(--t396-bordercolor,transparent);transition:background-color var(--t396-speedhover,0s) ease-in-out,color var(--t396-speedhover,0s) ease-in-out,border-color var(--t396-speedhover,0s) ease-in-out,box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;--t396-shadow-text-opacity:100%;text-shadow:var(--t396-shadow-text-x,0px) var(--t396-shadow-text-y,0px) var(--t396-shadow-text-blur,0px) rgba(var(--t396-shadow-text-color),var(--t396-shadow-text-opacity,100%));}@media screen and (max-width:1199px){#rec495453579 .tn-elem[data-elem-id="1660328247771"]{display:table;top:557px;;left:calc(50% - 480px + 332px);;width:264px;height:auto;}}@media screen and (max-width:959px){#rec495453579 .tn-elem[data-elem-id="1660328247771"]{display:table;top:532px;;left:calc(50% - 320px + 326px);;height:auto;}}@media screen and (max-width:639px){#rec495453579 .tn-elem[data-elem-id="1660328247771"]{display:table;top:622px;;left:calc(50% - 240px + 16px);;width:440px;height:auto;}#rec495453579 .tn-elem[data-elem-id="1660328247771"] .tn-atom{font-size:15px;line-height:1.47;background-size:cover;}}@media screen and (max-width:479px){#rec495453579 .tn-elem[data-elem-id="1660328247771"]{display:table;top:614px;;left:calc(50% - 160px + 6px);;width:300px;height:auto;}}#rec495453579 .tn-elem[data-elem-id="1660328067115"]{color:#172b4d;z-index:3;top:217px;;left:calc(50% - 600px + 419px);;width:336px;height:auto;}#rec495453579 .tn-elem[data-elem-id="1660328067115"] .tn-atom{vertical-align:middle;color:#172b4d;font-size:16px;font-family:var(--t-text-font,Arial);line-height:1.5;font-weight:400;background-position:center center;border-width:var(--t396-borderwidth,0);border-style:var(--t396-borderstyle,solid);border-color:var(--t396-bordercolor,transparent);transition:background-color var(--t396-speedhover,0s) ease-in-out,color var(--t396-speedhover,0s) ease-in-out,border-color var(--t396-speedhover,0s) ease-in-out,box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;--t396-shadow-text-opacity:100%;text-shadow:var(--t396-shadow-text-x,0px) var(--t396-shadow-text-y,0px) var(--t396-shadow-text-blur,0px) rgba(var(--t396-shadow-text-color),var(--t396-shadow-text-opacity,100%));}@media screen and (max-width:1199px){#rec495453579 .tn-elem[data-elem-id="1660328067115"]{display:table;top:219px;;left:calc(50% - 480px + 332px);;width:264px;height:auto;}}@media screen and (max-width:959px){#rec495453579 .tn-elem[data-elem-id="1660328067115"]{display:table;top:158px;;left:calc(50% - 320px + 326px);;height:auto;}}@media screen and (max-width:639px){#rec495453579 .tn-elem[data-elem-id="1660328067115"]{display:table;top:258px;;left:calc(50% - 240px + 244px);;width:212px;height:auto;}#rec495453579 .tn-elem[data-elem-id="1660328067115"] .tn-atom{font-size:15px;line-height:1.47;background-size:cover;}}@media screen and (max-width:479px){#rec495453579 .tn-elem[data-elem-id="1660328067115"]{display:table;top:258px;;left:calc(50% - 160px + 166px);;width:140px;height:auto;}}#rec495453579 .tn-elem[data-elem-id="1660328673693"]{color:#172b4d;z-index:3;top:229px;;left:calc(50% - 600px + 816px);;width:360px;height:auto;}#rec495453579 .tn-elem[data-elem-id="1660328673693"] .tn-atom{vertical-align:middle;color:#172b4d;font-size:16px;font-family:var(--t-text-font,Arial);line-height:1.5;font-weight:400;background-position:center center;border-width:var(--t396-borderwidth,0);border-style:var(--t396-borderstyle,solid);border-color:var(--t396-bordercolor,transparent);transition:background-color var(--t396-speedhover,0s) ease-in-out,color var(--t396-speedhover,0s) ease-in-out,border-color var(--t396-speedhover,0s) ease-in-out,box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;--t396-shadow-text-opacity:100%;text-shadow:var(--t396-shadow-text-x,0px) var(--t396-shadow-text-y,0px) var(--t396-shadow-text-blur,0px) rgba(var(--t396-shadow-text-color),var(--t396-shadow-text-opacity,100%));}@media screen and (max-width:1199px){#rec495453579 .tn-elem[data-elem-id="1660328673693"]{display:table;top:229px;;left:calc(50% - 480px + 636px);;width:288px;height:auto;}}@media screen and (max-width:959px){#rec495453579 .tn-elem[data-elem-id="1660328673693"]{display:table;top:874px;;left:calc(50% - 320px + 20px);;width:256px;height:auto;}}@media screen and (max-width:639px){#rec495453579 .tn-elem[data-elem-id="1660328673693"]{display:table;top:1008px;;left:calc(50% - 240px + 20px);;width:440px;height:auto;}#rec495453579 .tn-elem[data-elem-id="1660328673693"] .tn-atom{font-size:15px;line-height:1.47;background-size:cover;}}@media screen and (max-width:479px){#rec495453579 .tn-elem[data-elem-id="1660328673693"]{display:table;top:1017px;;left:calc(50% - 160px + 9px);;width:300px;height:auto;}}#rec495453579 .tn-elem[data-elem-id="1660327820270"]{color:#172b4d;z-index:3;top:305px;;left:calc(50% - 600px + 16px);;width:336px;height:auto;}#rec495453579 .tn-elem[data-elem-id="1660327820270"] .tn-atom{vertical-align:middle;color:#172b4d;font-size:16px;font-family:var(--t-text-font,Arial);line-height:1.5;font-weight:400;background-position:center center;border-width:var(--t396-borderwidth,0);border-style:var(--t396-borderstyle,solid);border-color:var(--t396-bordercolor,transparent);transition:background-color var(--t396-speedhover,0s) ease-in-out,color var(--t396-speedhover,0s) ease-in-out,border-color var(--t396-speedhover,0s) ease-in-out,box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;--t396-shadow-text-opacity:100%;text-shadow:var(--t396-shadow-text-x,0px) var(--t396-shadow-text-y,0px) var(--t396-shadow-text-blur,0px) rgba(var(--t396-shadow-text-color),var(--t396-shadow-text-opacity,100%));}@media screen and (max-width:1199px){#rec495453579 .tn-elem[data-elem-id="1660327820270"]{display:table;top:315px;;left:calc(50% - 480px + 28px);;width:264px;height:auto;}}@media screen and (max-width:959px){#rec495453579 .tn-elem[data-elem-id="1660327820270"]{display:table;top:246px;;left:calc(50% - 320px + 20px);;height:auto;}}@media screen and (max-width:639px){#rec495453579 .tn-elem[data-elem-id="1660327820270"]{display:table;top:258px;;left:calc(50% - 240px + 16px);;width:212px;height:auto;}#rec495453579 .tn-elem[data-elem-id="1660327820270"] .tn-atom{font-size:15px;line-height:1.47;background-size:cover;}}@media screen and (max-width:479px){#rec495453579 .tn-elem[data-elem-id="1660327820270"]{display:table;left:calc(50% - 160px + 6px);;width:140px;height:auto;}}#rec495453579 .tn-elem[data-elem-id="1660728009618"]{color:#172b4d;z-index:3;top:273px;;left:calc(50% - 600px + 16px);;width:336px;height:auto;}#rec495453579 .tn-elem[data-elem-id="1660728009618"] .tn-atom{vertical-align:middle;color:#172b4d;font-size:16px;font-family:var(--t-text-font,Arial);line-height:1.5;font-weight:400;background-position:center center;border-width:var(--t396-borderwidth,0);border-style:var(--t396-borderstyle,solid);border-color:var(--t396-bordercolor,transparent);transition:background-color var(--t396-speedhover,0s) ease-in-out,color var(--t396-speedhover,0s) ease-in-out,border-color var(--t396-speedhover,0s) ease-in-out,box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;--t396-shadow-text-opacity:100%;text-shadow:var(--t396-shadow-text-x,0px) var(--t396-shadow-text-y,0px) var(--t396-shadow-text-blur,0px) rgba(var(--t396-shadow-text-color),var(--t396-shadow-text-opacity,100%));}@media screen and (max-width:1199px){#rec495453579 .tn-elem[data-elem-id="1660728009618"]{display:table;top:281px;;left:calc(50% - 480px + 28px);;width:264px;height:auto;}}@media screen and (max-width:959px){#rec495453579 .tn-elem[data-elem-id="1660728009618"]{display:table;top:212px;;left:calc(50% - 320px + 20px);;height:auto;}}@media screen and (max-width:639px){#rec495453579 .tn-elem[data-elem-id="1660728009618"]{display:table;top:220px;;left:calc(50% - 240px + 16px);;width:212px;height:auto;}#rec495453579 .tn-elem[data-elem-id="1660728009618"] .tn-atom{font-size:15px;line-height:1.47;background-size:cover;}}@media screen and (max-width:479px){#rec495453579 .tn-elem[data-elem-id="1660728009618"]{display:table;left:calc(50% - 160px + 6px);;width:140px;height:auto;}}#rec495453579 .tn-elem[data-elem-id="1660728533851"]{color:#ff8888;z-index:3;top:274px;;left:calc(50% - 600px + 8px);;width:9px;height:auto;}#rec495453579 .tn-elem[data-elem-id="1660728533851"] .tn-atom{vertical-align:middle;color:#ff8888;font-size:16px;font-family:var(--t-text-font,Arial);line-height:1.5;font-weight:400;background-position:center center;border-width:var(--t396-borderwidth,0);border-style:var(--t396-borderstyle,solid);border-color:var(--t396-bordercolor,transparent);transition:background-color var(--t396-speedhover,0s) ease-in-out,color var(--t396-speedhover,0s) ease-in-out,border-color var(--t396-speedhover,0s) ease-in-out,box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;--t396-shadow-text-opacity:100%;text-shadow:var(--t396-shadow-text-x,0px) var(--t396-shadow-text-y,0px) var(--t396-shadow-text-blur,0px) rgba(var(--t396-shadow-text-color),var(--t396-shadow-text-opacity,100%));}@media screen and (max-width:1199px){#rec495453579 .tn-elem[data-elem-id="1660728533851"]{display:table;top:283px;;left:calc(50% - 480px + 20px);;height:auto;}}@media screen and (max-width:959px){#rec495453579 .tn-elem[data-elem-id="1660728533851"]{display:table;top:211px;;left:calc(50% - 320px + 10px);;height:auto;}}@media screen and (max-width:639px){#rec495453579 .tn-elem[data-elem-id="1660728533851"]{display:table;top:222px;;left:calc(50% - 240px + 8px);;height:auto;}#rec495453579 .tn-elem[data-elem-id="1660728533851"] .tn-atom{font-size:15px;line-height:1.47;background-size:cover;}}@media screen and (max-width:479px){#rec495453579 .tn-elem[data-elem-id="1660728533851"]{display:table;top:218px;;left:calc(50% - 160px + 0px);;height:auto;}}#rec495453579 .tn-elem[data-elem-id="1660328247775"]{color:#172b4d;z-index:3;top:579px;;left:calc(50% - 600px + 419px);;width:336px;height:auto;}#rec495453579 .tn-elem[data-elem-id="1660328247775"] .tn-atom{vertical-align:middle;color:#172b4d;font-size:16px;font-family:var(--t-text-font,Arial);line-height:1.5;font-weight:400;background-position:center center;border-width:var(--t396-borderwidth,0);border-style:var(--t396-borderstyle,solid);border-color:var(--t396-bordercolor,transparent);transition:background-color var(--t396-speedhover,0s) ease-in-out,color var(--t396-speedhover,0s) ease-in-out,border-color var(--t396-speedhover,0s) ease-in-out,box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;--t396-shadow-text-opacity:100%;text-shadow:var(--t396-shadow-text-x,0px) var(--t396-shadow-text-y,0px) var(--t396-shadow-text-blur,0px) rgba(var(--t396-shadow-text-color),var(--t396-shadow-text-opacity,100%));}@media screen and (max-width:1199px){#rec495453579 .tn-elem[data-elem-id="1660328247775"]{display:table;top:591px;;left:calc(50% - 480px + 332px);;width:264px;height:auto;}}@media screen and (max-width:959px){#rec495453579 .tn-elem[data-elem-id="1660328247775"]{display:table;top:566px;;left:calc(50% - 320px + 326px);;height:auto;}}@media screen and (max-width:639px){#rec495453579 .tn-elem[data-elem-id="1660328247775"]{display:table;top:660px;;left:calc(50% - 240px + 16px);;width:440px;height:auto;}#rec495453579 .tn-elem[data-elem-id="1660328247775"] .tn-atom{font-size:15px;line-height:1.47;background-size:cover;}}@media screen and (max-width:479px){#rec495453579 .tn-elem[data-elem-id="1660328247775"]{display:table;top:652px;;left:calc(50% - 160px + 6px);;width:300px;height:auto;}}#rec495453579 .tn-elem[data-elem-id="1660328067118"]{color:#172b4d;z-index:3;top:185px;;left:calc(50% - 600px + 419px);;width:336px;height:auto;}#rec495453579 .tn-elem[data-elem-id="1660328067118"] .tn-atom{vertical-align:middle;color:#172b4d;font-size:16px;font-family:var(--t-text-font,Arial);line-height:1.5;font-weight:400;background-position:center center;border-width:var(--t396-borderwidth,0);border-style:var(--t396-borderstyle,solid);border-color:var(--t396-bordercolor,transparent);transition:background-color var(--t396-speedhover,0s) ease-in-out,color var(--t396-speedhover,0s) ease-in-out,border-color var(--t396-speedhover,0s) ease-in-out,box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;--t396-shadow-text-opacity:100%;text-shadow:var(--t396-shadow-text-x,0px) var(--t396-shadow-text-y,0px) var(--t396-shadow-text-blur,0px) rgba(var(--t396-shadow-text-color),var(--t396-shadow-text-opacity,100%));}@media screen and (max-width:1199px){#rec495453579 .tn-elem[data-elem-id="1660328067118"]{display:table;top:185px;;left:calc(50% - 480px + 332px);;width:264px;height:auto;}}@media screen and (max-width:959px){#rec495453579 .tn-elem[data-elem-id="1660328067118"]{display:table;top:124px;;left:calc(50% - 320px + 326px);;height:auto;}}@media screen and (max-width:639px){#rec495453579 .tn-elem[data-elem-id="1660328067118"]{display:table;top:220px;;left:calc(50% - 240px + 244px);;width:212px;height:auto;}#rec495453579 .tn-elem[data-elem-id="1660328067118"] .tn-atom{font-size:15px;line-height:1.47;background-size:cover;}}@media screen and (max-width:479px){#rec495453579 .tn-elem[data-elem-id="1660328067118"]{display:table;top:220px;;left:calc(50% - 160px + 166px);;width:140px;height:auto;}}#rec495453579 .tn-elem[data-elem-id="1660328247777"]{color:#172b4d;z-index:3;top:611px;;left:calc(50% - 600px + 419px);;width:336px;height:auto;}#rec495453579 .tn-elem[data-elem-id="1660328247777"] .tn-atom{vertical-align:middle;color:#172b4d;font-size:16px;font-family:var(--t-text-font,Arial);line-height:1.5;font-weight:400;background-position:center center;border-width:var(--t396-borderwidth,0);border-style:var(--t396-borderstyle,solid);border-color:var(--t396-bordercolor,transparent);transition:background-color var(--t396-speedhover,0s) ease-in-out,color var(--t396-speedhover,0s) ease-in-out,border-color var(--t396-speedhover,0s) ease-in-out,box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;--t396-shadow-text-opacity:100%;text-shadow:var(--t396-shadow-text-x,0px) var(--t396-shadow-text-y,0px) var(--t396-shadow-text-blur,0px) rgba(var(--t396-shadow-text-color),var(--t396-shadow-text-opacity,100%));}@media screen and (max-width:1199px){#rec495453579 .tn-elem[data-elem-id="1660328247777"]{display:table;top:625px;;left:calc(50% - 480px + 332px);;width:264px;height:auto;}}@media screen and (max-width:959px){#rec495453579 .tn-elem[data-elem-id="1660328247777"]{display:table;top:600px;;left:calc(50% - 320px + 326px);;height:auto;}}@media screen and (max-width:639px){#rec495453579 .tn-elem[data-elem-id="1660328247777"]{display:table;top:698px;;left:calc(50% - 240px + 16px);;width:440px;height:auto;}#rec495453579 .tn-elem[data-elem-id="1660328247777"] .tn-atom{font-size:15px;line-height:1.47;background-size:cover;}}@media screen and (max-width:479px){#rec495453579 .tn-elem[data-elem-id="1660328247777"]{display:table;top:690px;;left:calc(50% - 160px + 6px);;width:300px;height:auto;}}#rec495453579 .tn-elem[data-elem-id="1660328067120"]{color:#172b4d;z-index:3;top:249px;;left:calc(50% - 600px + 419px);;width:336px;height:auto;}#rec495453579 .tn-elem[data-elem-id="1660328067120"] .tn-atom{vertical-align:middle;color:#172b4d;font-size:16px;font-family:var(--t-text-font,Arial);line-height:1.5;font-weight:400;background-position:center center;border-width:var(--t396-borderwidth,0);border-style:var(--t396-borderstyle,solid);border-color:var(--t396-bordercolor,transparent);transition:background-color var(--t396-speedhover,0s) ease-in-out,color var(--t396-speedhover,0s) ease-in-out,border-color var(--t396-speedhover,0s) ease-in-out,box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;--t396-shadow-text-opacity:100%;text-shadow:var(--t396-shadow-text-x,0px) var(--t396-shadow-text-y,0px) var(--t396-shadow-text-blur,0px) rgba(var(--t396-shadow-text-color),var(--t396-shadow-text-opacity,100%));}@media screen and (max-width:1199px){#rec495453579 .tn-elem[data-elem-id="1660328067120"]{display:table;top:253px;;left:calc(50% - 480px + 332px);;width:264px;height:auto;}}@media screen and (max-width:959px){#rec495453579 .tn-elem[data-elem-id="1660328067120"]{display:table;top:192px;;left:calc(50% - 320px + 326px);;height:auto;}}@media screen and (max-width:639px){#rec495453579 .tn-elem[data-elem-id="1660328067120"]{display:table;top:296px;;left:calc(50% - 240px + 244px);;width:212px;height:auto;}#rec495453579 .tn-elem[data-elem-id="1660328067120"] .tn-atom{font-size:15px;line-height:1.47;background-size:cover;}}@media screen and (max-width:479px){#rec495453579 .tn-elem[data-elem-id="1660328067120"]{display:table;top:296px;;left:calc(50% - 160px + 166px);;width:140px;height:auto;}#rec495453579 .tn-elem[data-elem-id="1660328067120"] .tn-atom{line-height:1.2;background-size:cover;}}#rec495453579 .tn-elem[data-elem-id="1660327823456"]{color:#172b4d;z-index:3;top:337px;;left:calc(50% - 600px + 16px);;width:336px;height:auto;}#rec495453579 .tn-elem[data-elem-id="1660327823456"] .tn-atom{vertical-align:middle;color:#172b4d;font-size:16px;font-family:var(--t-text-font,Arial);line-height:1.5;font-weight:400;background-position:center center;border-width:var(--t396-borderwidth,0);border-style:var(--t396-borderstyle,solid);border-color:var(--t396-bordercolor,transparent);transition:background-color var(--t396-speedhover,0s) ease-in-out,color var(--t396-speedhover,0s) ease-in-out,border-color var(--t396-speedhover,0s) ease-in-out,box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;--t396-shadow-text-opacity:100%;text-shadow:var(--t396-shadow-text-x,0px) var(--t396-shadow-text-y,0px) var(--t396-shadow-text-blur,0px) rgba(var(--t396-shadow-text-color),var(--t396-shadow-text-opacity,100%));}@media screen and (max-width:1199px){#rec495453579 .tn-elem[data-elem-id="1660327823456"]{display:table;top:349px;;left:calc(50% - 480px + 28px);;width:264px;height:auto;}}@media screen and (max-width:959px){#rec495453579 .tn-elem[data-elem-id="1660327823456"]{display:table;top:280px;;left:calc(50% - 320px + 20px);;height:auto;}}@media screen and (max-width:639px){#rec495453579 .tn-elem[data-elem-id="1660327823456"]{display:table;top:296px;;left:calc(50% - 240px + 16px);;width:212px;height:auto;}#rec495453579 .tn-elem[data-elem-id="1660327823456"] .tn-atom{font-size:15px;line-height:1.47;background-size:cover;}}@media screen and (max-width:479px){#rec495453579 .tn-elem[data-elem-id="1660327823456"]{display:table;left:calc(50% - 160px + 6px);;width:140px;height:auto;}}#rec495453579 .tn-elem[data-elem-id="1660328067122"]{color:#172b4d;z-index:3;top:281px;;left:calc(50% - 600px + 419px);;width:336px;height:auto;}#rec495453579 .tn-elem[data-elem-id="1660328067122"] .tn-atom{vertical-align:middle;color:#172b4d;font-size:16px;font-family:var(--t-text-font,Arial);line-height:1.5;font-weight:400;background-position:center center;border-width:var(--t396-borderwidth,0);border-style:var(--t396-borderstyle,solid);border-color:var(--t396-bordercolor,transparent);transition:background-color var(--t396-speedhover,0s) ease-in-out,color var(--t396-speedhover,0s) ease-in-out,border-color var(--t396-speedhover,0s) ease-in-out,box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;--t396-shadow-text-opacity:100%;text-shadow:var(--t396-shadow-text-x,0px) var(--t396-shadow-text-y,0px) var(--t396-shadow-text-blur,0px) rgba(var(--t396-shadow-text-color),var(--t396-shadow-text-opacity,100%));}@media screen and (max-width:1199px){#rec495453579 .tn-elem[data-elem-id="1660328067122"]{display:table;top:287px;;left:calc(50% - 480px + 332px);;width:264px;height:auto;}}@media screen and (max-width:959px){#rec495453579 .tn-elem[data-elem-id="1660328067122"]{display:table;top:226px;;left:calc(50% - 320px + 326px);;height:auto;}}@media screen and (max-width:639px){#rec495453579 .tn-elem[data-elem-id="1660328067122"]{display:table;top:334px;;left:calc(50% - 240px + 244px);;width:212px;height:auto;}#rec495453579 .tn-elem[data-elem-id="1660328067122"] .tn-atom{font-size:15px;line-height:1.47;background-size:cover;}}@media screen and (max-width:479px){#rec495453579 .tn-elem[data-elem-id="1660328067122"]{display:table;top:344px;;left:calc(50% - 160px + 166px);;width:140px;height:auto;}}#rec495453579 .tn-elem[data-elem-id="1664355590156"]{color:#172b4d;z-index:3;top:313px;;left:calc(50% - 600px + 419px);;width:336px;height:auto;}#rec495453579 .tn-elem[data-elem-id="1664355590156"] .tn-atom{vertical-align:middle;color:#172b4d;font-size:16px;font-family:var(--t-text-font,Arial);line-height:1.5;font-weight:400;background-position:center center;border-width:var(--t396-borderwidth,0);border-style:var(--t396-borderstyle,solid);border-color:var(--t396-bordercolor,transparent);transition:background-color var(--t396-speedhover,0s) ease-in-out,color var(--t396-speedhover,0s) ease-in-out,border-color var(--t396-speedhover,0s) ease-in-out,box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;--t396-shadow-text-opacity:100%;text-shadow:var(--t396-shadow-text-x,0px) var(--t396-shadow-text-y,0px) var(--t396-shadow-text-blur,0px) rgba(var(--t396-shadow-text-color),var(--t396-shadow-text-opacity,100%));}@media screen and (max-width:1199px){#rec495453579 .tn-elem[data-elem-id="1664355590156"]{display:table;top:321px;;left:calc(50% - 480px + 332px);;width:264px;height:auto;}}@media screen and (max-width:959px){#rec495453579 .tn-elem[data-elem-id="1664355590156"]{display:table;top:260px;;left:calc(50% - 320px + 326px);;height:auto;}}@media screen and (max-width:639px){#rec495453579 .tn-elem[data-elem-id="1664355590156"]{display:table;top:372px;;left:calc(50% - 240px + 244px);;width:212px;height:auto;}#rec495453579 .tn-elem[data-elem-id="1664355590156"] .tn-atom{font-size:15px;line-height:1.47;background-size:cover;}}@media screen and (max-width:479px){#rec495453579 .tn-elem[data-elem-id="1664355590156"]{display:table;top:382px;;left:calc(50% - 160px + 166px);;width:140px;height:auto;}}#rec495453579 .tn-elem[data-elem-id="1738909171549"]{color:#172b4d;z-index:3;top:345px;;left:calc(50% - 600px + 419px);;width:336px;height:auto;}#rec495453579 .tn-elem[data-elem-id="1738909171549"] .tn-atom{vertical-align:middle;color:#172b4d;font-size:16px;font-family:var(--t-text-font,Arial);line-height:1.5;font-weight:400;background-position:center center;border-width:var(--t396-borderwidth,0);border-style:var(--t396-borderstyle,solid);border-color:var(--t396-bordercolor,transparent);transition:background-color var(--t396-speedhover,0s) ease-in-out,color var(--t396-speedhover,0s) ease-in-out,border-color var(--t396-speedhover,0s) ease-in-out,box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;--t396-shadow-text-opacity:100%;text-shadow:var(--t396-shadow-text-x,0px) var(--t396-shadow-text-y,0px) var(--t396-shadow-text-blur,0px) rgba(var(--t396-shadow-text-color),var(--t396-shadow-text-opacity,100%));}@media screen and (max-width:1199px){#rec495453579 .tn-elem[data-elem-id="1738909171549"]{display:table;top:355px;;left:calc(50% - 480px + 332px);;width:264px;height:auto;}}@media screen and (max-width:959px){#rec495453579 .tn-elem[data-elem-id="1738909171549"]{display:table;top:294px;;left:calc(50% - 320px + 326px);;height:auto;}}@media screen and (max-width:639px){#rec495453579 .tn-elem[data-elem-id="1738909171549"]{display:table;top:410px;;left:calc(50% - 240px + 244px);;width:212px;height:auto;}#rec495453579 .tn-elem[data-elem-id="1738909171549"] .tn-atom{font-size:15px;line-height:1.47;background-size:cover;}}@media screen and (max-width:479px){#rec495453579 .tn-elem[data-elem-id="1738909171549"]{display:table;top:420px;;left:calc(50% - 160px + 166px);;width:140px;height:auto;}}#rec495453579 .tn-elem[data-elem-id="1660328170303"]{color:#8999a9;z-index:3;top:503px;;left:calc(50% - 600px + 419px);;width:336px;height:auto;}#rec495453579 .tn-elem[data-elem-id="1660328170303"] .tn-atom{vertical-align:middle;color:#8999a9;font-size:18px;font-family:var(--t-text-font,Arial);line-height:1.33;font-weight:400;background-position:center center;border-width:var(--t396-borderwidth,0);border-style:var(--t396-borderstyle,solid);border-color:var(--t396-bordercolor,transparent);transition:background-color var(--t396-speedhover,0s) ease-in-out,color var(--t396-speedhover,0s) ease-in-out,border-color var(--t396-speedhover,0s) ease-in-out,box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;--t396-shadow-text-opacity:100%;text-shadow:var(--t396-shadow-text-x,0px) var(--t396-shadow-text-y,0px) var(--t396-shadow-text-blur,0px) rgba(var(--t396-shadow-text-color),var(--t396-shadow-text-opacity,100%));}@media screen and (max-width:1199px){#rec495453579 .tn-elem[data-elem-id="1660328170303"]{display:table;top:513px;;left:calc(50% - 480px + 332px);;width:264px;height:auto;}}@media screen and (max-width:959px){#rec495453579 .tn-elem[data-elem-id="1660328170303"]{display:table;top:488px;;left:calc(50% - 320px + 326px);;height:auto;}}@media screen and (max-width:639px){#rec495453579 .tn-elem[data-elem-id="1660328170303"]{display:table;top:578px;;left:calc(50% - 240px + 16px);;width:440px;height:auto;}}@media screen and (max-width:479px){#rec495453579 .tn-elem[data-elem-id="1660328170303"]{display:table;top:570px;;left:calc(50% - 160px + 9px);;width:300px;height:auto;}#rec495453579 .tn-elem[data-elem-id="1660328170303"] .tn-atom{font-size:16px;line-height:1.5;background-size:cover;}}#rec495453579 .tn-elem[data-elem-id="1660328581896"]{color:#8999a9;z-index:3;top:185px;;left:calc(50% - 600px + 820px);;width:360px;height:auto;}#rec495453579 .tn-elem[data-elem-id="1660328581896"] .tn-atom{vertical-align:middle;color:#8999a9;font-size:18px;font-family:var(--t-text-font,Arial);line-height:1.33;font-weight:400;background-position:center center;border-width:var(--t396-borderwidth,0);border-style:var(--t396-borderstyle,solid);border-color:var(--t396-bordercolor,transparent);transition:background-color var(--t396-speedhover,0s) ease-in-out,color var(--t396-speedhover,0s) ease-in-out,border-color var(--t396-speedhover,0s) ease-in-out,box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;--t396-shadow-text-opacity:100%;text-shadow:var(--t396-shadow-text-x,0px) var(--t396-shadow-text-y,0px) var(--t396-shadow-text-blur,0px) rgba(var(--t396-shadow-text-color),var(--t396-shadow-text-opacity,100%));}@media screen and (max-width:1199px){#rec495453579 .tn-elem[data-elem-id="1660328581896"]{display:table;left:calc(50% - 480px + 640px);;width:288px;height:auto;}}@media screen and (max-width:959px){#rec495453579 .tn-elem[data-elem-id="1660328581896"]{display:table;top:830px;;left:calc(50% - 320px + 24px);;width:288px;height:auto;}}@media screen and (max-width:639px){#rec495453579 .tn-elem[data-elem-id="1660328581896"]{display:table;top:964px;;left:calc(50% - 240px + 20px);;width:440px;height:auto;}}@media screen and (max-width:479px){#rec495453579 .tn-elem[data-elem-id="1660328581896"]{display:table;top:973px;;left:calc(50% - 160px + 12px);;width:300px;height:auto;}#rec495453579 .tn-elem[data-elem-id="1660328581896"] .tn-atom{font-size:16px;line-height:1.5;background-size:cover;}}#rec495453579 .tn-elem[data-elem-id="1660328396738"]{color:#8999a9;z-index:3;top:736px;;left:calc(50% - 600px + 20px);;width:360px;height:auto;}#rec495453579 .tn-elem[data-elem-id="1660328396738"] .tn-atom{vertical-align:middle;color:#8999a9;font-size:16px;font-family:var(--t-text-font,Arial);line-height:1.5;font-weight:400;background-position:center center;border-width:var(--t396-borderwidth,0);border-style:var(--t396-borderstyle,solid);border-color:var(--t396-bordercolor,transparent);transition:background-color var(--t396-speedhover,0s) ease-in-out,color var(--t396-speedhover,0s) ease-in-out,border-color var(--t396-speedhover,0s) ease-in-out,box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;--t396-shadow-text-opacity:100%;text-shadow:var(--t396-shadow-text-x,0px) var(--t396-shadow-text-y,0px) var(--t396-shadow-text-blur,0px) rgba(var(--t396-shadow-text-color),var(--t396-shadow-text-opacity,100%));}@media screen and (max-width:1199px){#rec495453579 .tn-elem[data-elem-id="1660328396738"]{display:table;top:765px;;left:calc(50% - 480px + 32px);;width:288px;height:auto;}}@media screen and (max-width:959px){#rec495453579 .tn-elem[data-elem-id="1660328396738"]{display:table;top:1125px;;left:calc(50% - 320px + 24px);;height:auto;}}@media screen and (max-width:639px){#rec495453579 .tn-elem[data-elem-id="1660328396738"]{display:table;top:1435px;;left:calc(50% - 240px + 23px);;height:auto;}}@media screen and (max-width:479px){#rec495453579 .tn-elem[data-elem-id="1660328396738"]{display:table;top:1428px;;left:calc(50% - 160px + 9px);;height:auto;}}#rec495453579 .tn-elem[data-elem-id="1660327824923"]{color:#172b4d;z-index:3;top:401px;;left:calc(50% - 600px + 16px);;width:336px;height:auto;}#rec495453579 .tn-elem[data-elem-id="1660327824923"] .tn-atom{vertical-align:middle;color:#172b4d;font-size:16px;font-family:var(--t-text-font,Arial);line-height:1.5;font-weight:400;background-position:center center;border-width:var(--t396-borderwidth,0);border-style:var(--t396-borderstyle,solid);border-color:var(--t396-bordercolor,transparent);transition:background-color var(--t396-speedhover,0s) ease-in-out,color var(--t396-speedhover,0s) ease-in-out,border-color var(--t396-speedhover,0s) ease-in-out,box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;--t396-shadow-text-opacity:100%;text-shadow:var(--t396-shadow-text-x,0px) var(--t396-shadow-text-y,0px) var(--t396-shadow-text-blur,0px) rgba(var(--t396-shadow-text-color),var(--t396-shadow-text-opacity,100%));}@media screen and (max-width:1199px){#rec495453579 .tn-elem[data-elem-id="1660327824923"]{display:table;top:417px;;left:calc(50% - 480px + 28px);;width:264px;height:auto;}}@media screen and (max-width:959px){#rec495453579 .tn-elem[data-elem-id="1660327824923"]{display:table;top:348px;;left:calc(50% - 320px + 20px);;height:auto;}}@media screen and (max-width:639px){#rec495453579 .tn-elem[data-elem-id="1660327824923"]{display:table;top:372px;;left:calc(50% - 240px + 16px);;width:212px;height:auto;}#rec495453579 .tn-elem[data-elem-id="1660327824923"] .tn-atom{font-size:15px;line-height:1.47;background-size:cover;}}@media screen and (max-width:479px){#rec495453579 .tn-elem[data-elem-id="1660327824923"]{display:table;left:calc(50% - 160px + 6px);;width:140px;height:auto;}}#rec495453579 .tn-elem[data-elem-id="1660327826356"]{color:#172b4d;z-index:3;top:369px;;left:calc(50% - 600px + 16px);;width:336px;height:auto;}#rec495453579 .tn-elem[data-elem-id="1660327826356"] .tn-atom{vertical-align:middle;color:#172b4d;font-size:16px;font-family:var(--t-text-font,Arial);line-height:1.5;font-weight:400;background-position:center center;border-width:var(--t396-borderwidth,0);border-style:var(--t396-borderstyle,solid);border-color:var(--t396-bordercolor,transparent);transition:background-color var(--t396-speedhover,0s) ease-in-out,color var(--t396-speedhover,0s) ease-in-out,border-color var(--t396-speedhover,0s) ease-in-out,box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;--t396-shadow-text-opacity:100%;text-shadow:var(--t396-shadow-text-x,0px) var(--t396-shadow-text-y,0px) var(--t396-shadow-text-blur,0px) rgba(var(--t396-shadow-text-color),var(--t396-shadow-text-opacity,100%));}@media screen and (max-width:1199px){#rec495453579 .tn-elem[data-elem-id="1660327826356"]{display:table;top:383px;;left:calc(50% - 480px + 28px);;width:264px;height:auto;}}@media screen and (max-width:959px){#rec495453579 .tn-elem[data-elem-id="1660327826356"]{display:table;top:314px;;left:calc(50% - 320px + 20px);;height:auto;}}@media screen and (max-width:639px){#rec495453579 .tn-elem[data-elem-id="1660327826356"]{display:table;top:334px;;left:calc(50% - 240px + 16px);;width:212px;height:auto;}#rec495453579 .tn-elem[data-elem-id="1660327826356"] .tn-atom{font-size:15px;line-height:1.47;background-size:cover;}}@media screen and (max-width:479px){#rec495453579 .tn-elem[data-elem-id="1660327826356"]{display:table;left:calc(50% - 160px + 6px);;width:140px;height:auto;}}#rec495453579 .tn-elem[data-elem-id="1660327833780"]{color:#172b4d;z-index:3;top:433px;;left:calc(50% - 600px + 16px);;width:336px;height:auto;}#rec495453579 .tn-elem[data-elem-id="1660327833780"] .tn-atom{vertical-align:middle;color:#172b4d;font-size:16px;font-family:var(--t-text-font,Arial);line-height:1.5;font-weight:400;background-position:center center;border-width:var(--t396-borderwidth,0);border-style:var(--t396-borderstyle,solid);border-color:var(--t396-bordercolor,transparent);transition:background-color var(--t396-speedhover,0s) ease-in-out,color var(--t396-speedhover,0s) ease-in-out,border-color var(--t396-speedhover,0s) ease-in-out,box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;--t396-shadow-text-opacity:100%;text-shadow:var(--t396-shadow-text-x,0px) var(--t396-shadow-text-y,0px) var(--t396-shadow-text-blur,0px) rgba(var(--t396-shadow-text-color),var(--t396-shadow-text-opacity,100%));}@media screen and (max-width:1199px){#rec495453579 .tn-elem[data-elem-id="1660327833780"]{display:table;top:451px;;left:calc(50% - 480px + 28px);;width:264px;height:auto;}}@media screen and (max-width:959px){#rec495453579 .tn-elem[data-elem-id="1660327833780"]{display:table;top:382px;;left:calc(50% - 320px + 20px);;height:auto;}}@media screen and (max-width:639px){#rec495453579 .tn-elem[data-elem-id="1660327833780"]{display:table;top:410px;;left:calc(50% - 240px + 16px);;width:212px;height:auto;}#rec495453579 .tn-elem[data-elem-id="1660327833780"] .tn-atom{font-size:15px;line-height:1.47;background-size:cover;}}@media screen and (max-width:479px){#rec495453579 .tn-elem[data-elem-id="1660327833780"]{display:table;left:calc(50% - 160px + 6px);;width:140px;height:auto;}}#rec495453579 .tn-elem[data-elem-id="1660327835132"]{color:#172b4d;z-index:3;top:497px;;left:calc(50% - 600px + 16px);;width:336px;height:auto;}#rec495453579 .tn-elem[data-elem-id="1660327835132"] .tn-atom{vertical-align:middle;color:#172b4d;font-size:16px;font-family:var(--t-text-font,Arial);line-height:1.5;font-weight:400;background-position:center center;border-width:var(--t396-borderwidth,0);border-style:var(--t396-borderstyle,solid);border-color:var(--t396-bordercolor,transparent);transition:background-color var(--t396-speedhover,0s) ease-in-out,color var(--t396-speedhover,0s) ease-in-out,border-color var(--t396-speedhover,0s) ease-in-out,box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;--t396-shadow-text-opacity:100%;text-shadow:var(--t396-shadow-text-x,0px) var(--t396-shadow-text-y,0px) var(--t396-shadow-text-blur,0px) rgba(var(--t396-shadow-text-color),var(--t396-shadow-text-opacity,100%));}@media screen and (max-width:1199px){#rec495453579 .tn-elem[data-elem-id="1660327835132"]{display:table;top:519px;;left:calc(50% - 480px + 28px);;width:264px;height:auto;}}@media screen and (max-width:959px){#rec495453579 .tn-elem[data-elem-id="1660327835132"]{display:table;top:450px;;left:calc(50% - 320px + 20px);;height:auto;}}@media screen and (max-width:639px){#rec495453579 .tn-elem[data-elem-id="1660327835132"]{display:table;top:486px;;left:calc(50% - 240px + 16px);;width:212px;height:auto;}#rec495453579 .tn-elem[data-elem-id="1660327835132"] .tn-atom{font-size:15px;line-height:1.47;background-size:cover;}}@media screen and (max-width:479px){#rec495453579 .tn-elem[data-elem-id="1660327835132"]{display:table;left:calc(50% - 160px + 6px);;width:140px;height:auto;}}#rec495453579 .tn-elem[data-elem-id="1695983077804"]{color:#172b4d;z-index:3;top:586px;;left:calc(50% - 600px + 16px);;width:336px;height:auto;}#rec495453579 .tn-elem[data-elem-id="1695983077804"] .tn-atom{vertical-align:middle;color:#172b4d;font-size:16px;font-family:var(--t-text-font,Arial);line-height:1.5;font-weight:400;background-position:center center;border-width:var(--t396-borderwidth,0);border-style:var(--t396-borderstyle,solid);border-color:var(--t396-bordercolor,transparent);transition:background-color var(--t396-speedhover,0s) ease-in-out,color var(--t396-speedhover,0s) ease-in-out,border-color var(--t396-speedhover,0s) ease-in-out,box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;--t396-shadow-text-opacity:100%;text-shadow:var(--t396-shadow-text-x,0px) var(--t396-shadow-text-y,0px) var(--t396-shadow-text-blur,0px) rgba(var(--t396-shadow-text-color),var(--t396-shadow-text-opacity,100%));}@media screen and (max-width:1199px){#rec495453579 .tn-elem[data-elem-id="1695983077804"]{display:table;top:619px;;left:calc(50% - 480px + 28px);;width:264px;height:auto;}}@media screen and (max-width:959px){#rec495453579 .tn-elem[data-elem-id="1695983077804"]{display:table;top:590px;;left:calc(50% - 320px + 20px);;height:auto;}}@media screen and (max-width:639px){#rec495453579 .tn-elem[data-elem-id="1695983077804"]{display:table;top:1265px;;left:calc(50% - 240px + 19px);;width:440px;height:auto;}#rec495453579 .tn-elem[data-elem-id="1695983077804"] .tn-atom{font-size:15px;line-height:1.47;background-size:cover;}}@media screen and (max-width:479px){#rec495453579 .tn-elem[data-elem-id="1695983077804"]{display:table;top:1268px;;left:calc(50% - 160px + 9px);;width:300px;height:auto;}}#rec495453579 .tn-elem[data-elem-id="1660328020471"]{color:#172b4d;z-index:3;top:618px;;left:calc(50% - 600px + 16px);;width:336px;height:auto;}#rec495453579 .tn-elem[data-elem-id="1660328020471"] .tn-atom{vertical-align:middle;color:#172b4d;font-size:16px;font-family:var(--t-text-font,Arial);line-height:1.5;font-weight:400;background-position:center center;border-width:var(--t396-borderwidth,0);border-style:var(--t396-borderstyle,solid);border-color:var(--t396-bordercolor,transparent);transition:background-color var(--t396-speedhover,0s) ease-in-out,color var(--t396-speedhover,0s) ease-in-out,border-color var(--t396-speedhover,0s) ease-in-out,box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;--t396-shadow-text-opacity:100%;text-shadow:var(--t396-shadow-text-x,0px) var(--t396-shadow-text-y,0px) var(--t396-shadow-text-blur,0px) rgba(var(--t396-shadow-text-color),var(--t396-shadow-text-opacity,100%));}@media screen and (max-width:1199px){#rec495453579 .tn-elem[data-elem-id="1660328020471"]{display:table;top:653px;;left:calc(50% - 480px + 28px);;width:264px;height:auto;}}@media screen and (max-width:959px){#rec495453579 .tn-elem[data-elem-id="1660328020471"]{display:table;top:624px;;left:calc(50% - 320px + 20px);;height:auto;}}@media screen and (max-width:639px){#rec495453579 .tn-elem[data-elem-id="1660328020471"]{display:table;top:1303px;;left:calc(50% - 240px + 19px);;width:440px;height:auto;}#rec495453579 .tn-elem[data-elem-id="1660328020471"] .tn-atom{font-size:15px;line-height:1.47;background-size:cover;}}@media screen and (max-width:479px){#rec495453579 .tn-elem[data-elem-id="1660328020471"]{display:table;top:1306px;;left:calc(50% - 160px + 9px);;width:300px;height:auto;}}#rec495453579 .tn-elem[data-elem-id="1660327366231"]{color:#8999a9;z-index:3;top:121px;;left:calc(50% - 600px + 820px);;width:360px;height:auto;}#rec495453579 .tn-elem[data-elem-id="1660327366231"] .tn-atom{vertical-align:middle;color:#8999a9;font-size:18px;font-family:var(--t-text-font,Arial);line-height:1.33;font-weight:400;background-position:center center;border-width:var(--t396-borderwidth,0);border-style:var(--t396-borderstyle,solid);border-color:var(--t396-bordercolor,transparent);transition:background-color var(--t396-speedhover,0s) ease-in-out,color var(--t396-speedhover,0s) ease-in-out,border-color var(--t396-speedhover,0s) ease-in-out,box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;--t396-shadow-text-opacity:100%;text-shadow:var(--t396-shadow-text-x,0px) var(--t396-shadow-text-y,0px) var(--t396-shadow-text-blur,0px) rgba(var(--t396-shadow-text-color),var(--t396-shadow-text-opacity,100%));}@media screen and (max-width:1199px){#rec495453579 .tn-elem[data-elem-id="1660327366231"]{display:table;left:calc(50% - 480px + 640px);;height:auto;}#rec495453579 .tn-elem[data-elem-id="1660327366231"] .tn-atom{background-size:cover;opacity:1;}}@media screen and (max-width:959px){#rec495453579 .tn-elem[data-elem-id="1660327366231"]{display:table;top:784px;;left:calc(50% - 320px + 168px);;height:auto;}#rec495453579 .tn-elem[data-elem-id="1660327366231"] .tn-atom{background-size:cover;opacity:1;}}@media screen and (max-width:639px){#rec495453579 .tn-elem[data-elem-id="1660327366231"]{display:table;top:908px;;left:calc(50% - 240px + 20px);;width:440px;height:auto;}}@media screen and (max-width:479px){#rec495453579 .tn-elem[data-elem-id="1660327366231"]{display:table;top:925px;;left:calc(50% - 160px + 10px);;width:300px;height:auto;}#rec495453579 .tn-elem[data-elem-id="1660327366231"] .tn-atom{font-size:16px;line-height:1.5;background-size:cover;}}#rec495453579 .tn-elem[data-elem-id="1660723679978"]{z-index:3;top:0px;;left:calc(50% - 600px + 787px);;width:1px;height:100%;}#rec495453579 .tn-elem[data-elem-id="1660723679978"] .tn-atom{border-radius:0px 0px 0px 0px;background-color:#d0d6dd;background-position:center center;border-width:var(--t396-borderwidth,0);border-style:var(--t396-borderstyle,solid);border-color:var(--t396-bordercolor,transparent);transition:background-color var(--t396-speedhover,0s) ease-in-out,color var(--t396-speedhover,0s) ease-in-out,border-color var(--t396-speedhover,0s) ease-in-out,box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;}@media screen and (max-width:1199px){#rec495453579 .tn-elem[data-elem-id="1660723679978"]{display:table;left:calc(50% - 480px + 619px);;height:100%;}}@media screen and (max-width:959px){#rec495453579 .tn-elem[data-elem-id="1660723679978"]{display:table;}#rec495453579 .tn-elem[data-elem-id="1660723679978"] .tn-atom{background-size:cover;opacity:0;}}@media screen and (max-width:639px){#rec495453579 .tn-elem[data-elem-id="1660723679978"]{display:table;}}@media screen and (max-width:479px){#rec495453579 .tn-elem[data-elem-id="1660723679978"]{display:table;}}#rec495453579 .tn-elem[data-elem-id="1660625517826"]{z-index:3;top:0px;;left:calc(50% - 600px + 0px);;width:592px;height:1px;}#rec495453579 .tn-elem[data-elem-id="1660625517826"] .tn-atom{border-radius:0px 0px 0px 0px;opacity:0;background-color:#d0d6dd;background-position:center center;border-width:var(--t396-borderwidth,0);border-style:var(--t396-borderstyle,solid);border-color:var(--t396-bordercolor,transparent);transition:background-color var(--t396-speedhover,0s) ease-in-out,color var(--t396-speedhover,0s) ease-in-out,border-color var(--t396-speedhover,0s) ease-in-out,box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;}@media screen and (max-width:1199px){#rec495453579 .tn-elem[data-elem-id="1660625517826"]{display:table;}}@media screen and (max-width:959px){#rec495453579 .tn-elem[data-elem-id="1660625517826"]{display:table;top:743px;;left:calc(50% - 320px + 24px);;}#rec495453579 .tn-elem[data-elem-id="1660625517826"] .tn-atom{background-size:cover;opacity:1;}}@media screen and (max-width:639px){#rec495453579 .tn-elem[data-elem-id="1660625517826"]{display:table;top:782px;;left:calc(50% - 240px + 20px);;width:440px;}}@media screen and (max-width:479px){#rec495453579 .tn-elem[data-elem-id="1660625517826"]{display:table;top:770px;;left:calc(50% - 160px + 10px);;width:300px;}}#rec495453579 .tn-elem[data-elem-id="1660625579543"]{z-index:3;top:0px;;left:calc(50% - 600px + 0px);;width:592px;height:1px;}#rec495453579 .tn-elem[data-elem-id="1660625579543"] .tn-atom{border-radius:0px 0px 0px 0px;opacity:0;background-color:#d0d6dd;background-position:center center;border-width:var(--t396-borderwidth,0);border-style:var(--t396-borderstyle,solid);border-color:var(--t396-bordercolor,transparent);transition:background-color var(--t396-speedhover,0s) ease-in-out,color var(--t396-speedhover,0s) ease-in-out,border-color var(--t396-speedhover,0s) ease-in-out,box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;}@media screen and (max-width:1199px){#rec495453579 .tn-elem[data-elem-id="1660625579543"]{display:table;}}@media screen and (max-width:959px){#rec495453579 .tn-elem[data-elem-id="1660625579543"]{display:table;top:1060px;;left:calc(50% - 320px + 24px);;}#rec495453579 .tn-elem[data-elem-id="1660625579543"] .tn-atom{background-size:cover;opacity:1;}}@media screen and (max-width:639px){#rec495453579 .tn-elem[data-elem-id="1660625579543"]{display:table;top:1204px;;left:calc(50% - 240px + 20px);;width:440px;}}@media screen and (max-width:479px){#rec495453579 .tn-elem[data-elem-id="1660625579543"]{display:table;top:1215px;;left:calc(50% - 160px + 9px);;width:300px;}}#rec495453579 .tn-elem[data-elem-id="1660723501956"]{z-index:3;top:0px;;left:calc(50% - 50% + 0px);;width:100%;height:1px;}#rec495453579 .tn-elem[data-elem-id="1660723501956"] .tn-atom{border-radius:0px 0px 0px 0px;background-color:#d0d6dd;background-position:center center;border-width:var(--t396-borderwidth,0);border-style:var(--t396-borderstyle,solid);border-color:var(--t396-bordercolor,transparent);transition:background-color var(--t396-speedhover,0s) ease-in-out,color var(--t396-speedhover,0s) ease-in-out,border-color var(--t396-speedhover,0s) ease-in-out,box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;}@media screen and (max-width:1199px){#rec495453579 .tn-elem[data-elem-id="1660723501956"]{display:table;}}@media screen and (max-width:959px){#rec495453579 .tn-elem[data-elem-id="1660723501956"]{display:table;}}@media screen and (max-width:639px){#rec495453579 .tn-elem[data-elem-id="1660723501956"]{display:table;}}@media screen and (max-width:479px){#rec495453579 .tn-elem[data-elem-id="1660723501956"]{display:table;}}#rec495453579 .tn-elem[data-elem-id="1660328018624"]{color:#172b4d;z-index:3;top:553px;;left:calc(50% - 600px + 16px);;width:336px;height:auto;}#rec495453579 .tn-elem[data-elem-id="1660328018624"] .tn-atom{vertical-align:middle;color:#172b4d;font-size:16px;font-family:var(--t-text-font,Arial);line-height:1.5;font-weight:400;background-position:center center;border-width:var(--t396-borderwidth,0);border-style:var(--t396-borderstyle,solid);border-color:var(--t396-bordercolor,transparent);transition:background-color var(--t396-speedhover,0s) ease-in-out,color var(--t396-speedhover,0s) ease-in-out,border-color var(--t396-speedhover,0s) ease-in-out,box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;--t396-shadow-text-opacity:100%;text-shadow:var(--t396-shadow-text-x,0px) var(--t396-shadow-text-y,0px) var(--t396-shadow-text-blur,0px) rgba(var(--t396-shadow-text-color),var(--t396-shadow-text-opacity,100%));}@media screen and (max-width:1199px){#rec495453579 .tn-elem[data-elem-id="1660328018624"]{display:table;top:585px;;left:calc(50% - 480px + 28px);;width:278px;height:auto;}}@media screen and (max-width:959px){#rec495453579 .tn-elem[data-elem-id="1660328018624"]{display:table;top:556px;;left:calc(50% - 320px + 20px);;height:auto;}}@media screen and (max-width:639px){#rec495453579 .tn-elem[data-elem-id="1660328018624"]{display:table;top:1227px;;left:calc(50% - 240px + 19px);;width:440px;height:auto;}#rec495453579 .tn-elem[data-elem-id="1660328018624"] .tn-atom{font-size:15px;line-height:1.47;background-size:cover;}}@media screen and (max-width:479px){#rec495453579 .tn-elem[data-elem-id="1660328018624"]{display:table;top:1230px;;left:calc(50% - 160px + 9px);;width:300px;height:auto;}}#rec495453579 .tn-elem[data-elem-id="1705327730563"]{z-index:3;top:calc(847px - 101px + 3px);;left:calc(50% - 3% + -3px);;width:6%;height:auto;}#rec495453579 .tn-elem[data-elem-id="1705327730563"] .tn-atom{border-radius:0px 0px 0px 0px;background-position:center center;border-width:var(--t396-borderwidth,0);border-style:var(--t396-borderstyle,solid);border-color:var(--t396-bordercolor,transparent);transition:background-color var(--t396-speedhover,0s) ease-in-out,color var(--t396-speedhover,0s) ease-in-out,border-color var(--t396-speedhover,0s) ease-in-out,box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;}#rec495453579 .tn-elem[data-elem-id="1705327730563"] .tn-atom__img{border-radius:0px 0px 0px 0px;object-position:center center;}@media screen and (max-width:1199px){#rec495453579 .tn-elem[data-elem-id="1705327730563"]{display:table;top:calc(847px - 101px + 4px);;left:calc(50% - 3% + 2px);;height:auto;}}@media screen and (max-width:959px){#rec495453579 .tn-elem[data-elem-id="1705327730563"]{display:table;top:calc(847px - 101px + -112px);;left:calc(50% - 3% + 173px);;width:94px;height:auto;}}@media screen and (max-width:639px){#rec495453579 .tn-elem[data-elem-id="1705327730563"]{display:table;top:calc(847px - 101px + 57px);;left:calc(50% - 3% + 147px);;width:100px;height:auto;}}@media screen and (max-width:479px){#rec495453579 .tn-elem[data-elem-id="1705327730563"]{display:table;top:calc(847px - 101px + 25px);;left:calc(50% - 3% + 1px);;width:71%;height:auto;}}#rec495453579 .tn-elem[data-elem-id="1706690444440"]{color:#172b4d;z-index:3;top:377px;;left:calc(50% - 600px + 419px);;width:336px;height:auto;}#rec495453579 .tn-elem[data-elem-id="1706690444440"] .tn-atom{vertical-align:middle;color:#172b4d;font-size:16px;font-family:var(--t-text-font,Arial);line-height:1.5;font-weight:400;background-position:center center;border-width:var(--t396-borderwidth,0);border-style:var(--t396-borderstyle,solid);border-color:var(--t396-bordercolor,transparent);transition:background-color var(--t396-speedhover,0s) ease-in-out,color var(--t396-speedhover,0s) ease-in-out,border-color var(--t396-speedhover,0s) ease-in-out,box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;--t396-shadow-text-opacity:100%;text-shadow:var(--t396-shadow-text-x,0px) var(--t396-shadow-text-y,0px) var(--t396-shadow-text-blur,0px) rgba(var(--t396-shadow-text-color),var(--t396-shadow-text-opacity,100%));}@media screen and (max-width:1199px){#rec495453579 .tn-elem[data-elem-id="1706690444440"]{display:table;top:389px;;left:calc(50% - 480px + 332px);;width:264px;height:auto;}}@media screen and (max-width:959px){#rec495453579 .tn-elem[data-elem-id="1706690444440"]{display:table;top:328px;;left:calc(50% - 320px + 326px);;height:auto;}}@media screen and (max-width:639px){#rec495453579 .tn-elem[data-elem-id="1706690444440"]{display:table;top:448px;;left:calc(50% - 240px + 244px);;width:212px;height:auto;}#rec495453579 .tn-elem[data-elem-id="1706690444440"] .tn-atom{font-size:15px;line-height:1.47;background-size:cover;}}@media screen and (max-width:479px){#rec495453579 .tn-elem[data-elem-id="1706690444440"]{display:table;top:458px;;left:calc(50% - 160px + 166px);;width:140px;height:auto;}}#rec495453579 .tn-elem[data-elem-id="1707905565159"]{color:#172b4d;z-index:3;top:441px;;left:calc(50% - 600px + 420px);;width:336px;height:auto;}#rec495453579 .tn-elem[data-elem-id="1707905565159"] .tn-atom{vertical-align:middle;color:#172b4d;font-size:16px;font-family:var(--t-text-font,Arial);line-height:1.5;font-weight:400;background-position:center center;border-width:var(--t396-borderwidth,0);border-style:var(--t396-borderstyle,solid);border-color:var(--t396-bordercolor,transparent);transition:background-color var(--t396-speedhover,0s) ease-in-out,color var(--t396-speedhover,0s) ease-in-out,border-color var(--t396-speedhover,0s) ease-in-out,box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;--t396-shadow-text-opacity:100%;text-shadow:var(--t396-shadow-text-x,0px) var(--t396-shadow-text-y,0px) var(--t396-shadow-text-blur,0px) rgba(var(--t396-shadow-text-color),var(--t396-shadow-text-opacity,100%));}@media screen and (max-width:1199px){#rec495453579 .tn-elem[data-elem-id="1707905565159"]{display:table;top:457px;;left:calc(50% - 480px + 332px);;width:264px;height:auto;}}@media screen and (max-width:959px){#rec495453579 .tn-elem[data-elem-id="1707905565159"]{display:table;top:396px;;left:calc(50% - 320px + 326px);;height:auto;}}@media screen and (max-width:639px){#rec495453579 .tn-elem[data-elem-id="1707905565159"]{display:table;top:524px;;left:calc(50% - 240px + 244px);;width:212px;height:auto;}#rec495453579 .tn-elem[data-elem-id="1707905565159"] .tn-atom{font-size:15px;line-height:1.47;background-size:cover;}}@media screen and (max-width:479px){#rec495453579 .tn-elem[data-elem-id="1707905565159"]{display:table;top:532px;;left:calc(50% - 160px + 166px);;width:140px;height:auto;}}#rec495453579 .tn-elem[data-elem-id="1742980584483"]{color:#172b4d;z-index:3;top:409px;;left:calc(50% - 600px + 419px);;width:336px;height:auto;}#rec495453579 .tn-elem[data-elem-id="1742980584483"] .tn-atom{vertical-align:middle;color:#172b4d;font-size:16px;font-family:var(--t-text-font,Arial);line-height:1.5;font-weight:400;background-position:center center;border-width:var(--t396-borderwidth,0);border-style:var(--t396-borderstyle,solid);border-color:var(--t396-bordercolor,transparent);transition:background-color var(--t396-speedhover,0s) ease-in-out,color var(--t396-speedhover,0s) ease-in-out,border-color var(--t396-speedhover,0s) ease-in-out,box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;--t396-shadow-text-opacity:100%;text-shadow:var(--t396-shadow-text-x,0px) var(--t396-shadow-text-y,0px) var(--t396-shadow-text-blur,0px) rgba(var(--t396-shadow-text-color),var(--t396-shadow-text-opacity,100%));}@media screen and (max-width:1199px){#rec495453579 .tn-elem[data-elem-id="1742980584483"]{display:table;top:423px;;left:calc(50% - 480px + 332px);;width:264px;height:auto;}}@media screen and (max-width:959px){#rec495453579 .tn-elem[data-elem-id="1742980584483"]{display:table;top:362px;;left:calc(50% - 320px + 326px);;height:auto;}}@media screen and (max-width:639px){#rec495453579 .tn-elem[data-elem-id="1742980584483"]{display:table;top:486px;;left:calc(50% - 240px + 244px);;width:212px;height:auto;}#rec495453579 .tn-elem[data-elem-id="1742980584483"] .tn-atom{font-size:15px;line-height:1.47;background-size:cover;}}@media screen and (max-width:479px){#rec495453579 .tn-elem[data-elem-id="1742980584483"]{display:table;top:496px;;left:calc(50% - 160px + 166px);;width:140px;height:auto;}}#rec495453579 .tn-elem[data-elem-id="1708962345240"]{color:#172b4d;z-index:3;top:682px;;left:calc(50% - 600px + 16px);;width:336px;height:auto;}#rec495453579 .tn-elem[data-elem-id="1708962345240"] .tn-atom{vertical-align:middle;color:#172b4d;font-size:16px;font-family:var(--t-text-font,Arial);line-height:1.5;font-weight:400;background-position:center center;border-width:var(--t396-borderwidth,0);border-style:var(--t396-borderstyle,solid);border-color:var(--t396-bordercolor,transparent);transition:background-color var(--t396-speedhover,0s) ease-in-out,color var(--t396-speedhover,0s) ease-in-out,border-color var(--t396-speedhover,0s) ease-in-out,box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;--t396-shadow-text-opacity:100%;text-shadow:var(--t396-shadow-text-x,0px) var(--t396-shadow-text-y,0px) var(--t396-shadow-text-blur,0px) rgba(var(--t396-shadow-text-color),var(--t396-shadow-text-opacity,100%));}@media screen and (max-width:1199px){#rec495453579 .tn-elem[data-elem-id="1708962345240"]{display:table;top:721px;;left:calc(50% - 480px + 28px);;width:264px;height:auto;}}@media screen and (max-width:959px){#rec495453579 .tn-elem[data-elem-id="1708962345240"]{display:table;top:692px;;left:calc(50% - 320px + 20px);;height:auto;}}@media screen and (max-width:639px){#rec495453579 .tn-elem[data-elem-id="1708962345240"]{display:table;top:1379px;;left:calc(50% - 240px + 19px);;width:440px;height:auto;}#rec495453579 .tn-elem[data-elem-id="1708962345240"] .tn-atom{font-size:15px;line-height:1.47;background-size:cover;}}@media screen and (max-width:479px){#rec495453579 .tn-elem[data-elem-id="1708962345240"]{display:table;top:1382px;;left:calc(50% - 160px + 9px);;width:300px;height:auto;}}#rec495453579 .tn-elem[data-elem-id="1742566995756"]{color:#172b4d;z-index:3;top:650px;;left:calc(50% - 600px + 16px);;width:336px;height:auto;}#rec495453579 .tn-elem[data-elem-id="1742566995756"] .tn-atom{vertical-align:middle;color:#172b4d;font-size:16px;font-family:var(--t-text-font,Arial);line-height:1.5;font-weight:400;background-position:center center;border-width:var(--t396-borderwidth,0);border-style:var(--t396-borderstyle,solid);border-color:var(--t396-bordercolor,transparent);transition:background-color var(--t396-speedhover,0s) ease-in-out,color var(--t396-speedhover,0s) ease-in-out,border-color var(--t396-speedhover,0s) ease-in-out,box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;--t396-shadow-text-opacity:100%;text-shadow:var(--t396-shadow-text-x,0px) var(--t396-shadow-text-y,0px) var(--t396-shadow-text-blur,0px) rgba(var(--t396-shadow-text-color),var(--t396-shadow-text-opacity,100%));}@media screen and (max-width:1199px){#rec495453579 .tn-elem[data-elem-id="1742566995756"]{display:table;top:687px;;left:calc(50% - 480px + 28px);;width:264px;height:auto;}}@media screen and (max-width:959px){#rec495453579 .tn-elem[data-elem-id="1742566995756"]{display:table;top:658px;;left:calc(50% - 320px + 20px);;height:auto;}}@media screen and (max-width:639px){#rec495453579 .tn-elem[data-elem-id="1742566995756"]{display:table;top:1341px;;left:calc(50% - 240px + 19px);;width:440px;height:auto;}#rec495453579 .tn-elem[data-elem-id="1742566995756"] .tn-atom{font-size:15px;line-height:1.47;background-size:cover;}}@media screen and (max-width:479px){#rec495453579 .tn-elem[data-elem-id="1742566995756"]{display:table;top:1344px;;left:calc(50% - 160px + 9px);;width:300px;height:auto;}}#rec495453579 .tn-elem[data-elem-id="1723122768750"]{color:#172b4d;z-index:3;top:373px;;left:calc(50% - 600px + 886px);;width:360px;height:auto;}#rec495453579 .tn-elem[data-elem-id="1723122768750"] .tn-atom{vertical-align:middle;color:#172b4d;font-size:16px;font-family:var(--t-text-font,Arial);line-height:1.5;font-weight:400;background-position:center center;border-width:var(--t396-borderwidth,0);border-style:var(--t396-borderstyle,solid);border-color:var(--t396-bordercolor,transparent);transition:background-color var(--t396-speedhover,0s) ease-in-out,color var(--t396-speedhover,0s) ease-in-out,border-color var(--t396-speedhover,0s) ease-in-out,box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;--t396-shadow-text-opacity:100%;text-shadow:var(--t396-shadow-text-x,0px) var(--t396-shadow-text-y,0px) var(--t396-shadow-text-blur,0px) rgba(var(--t396-shadow-text-color),var(--t396-shadow-text-opacity,100%));}@media screen and (max-width:1199px){#rec495453579 .tn-elem[data-elem-id="1723122768750"]{display:table;top:409px;;left:calc(50% - 480px + 709px);;width:215px;height:auto;}}@media screen and (max-width:959px){#rec495453579 .tn-elem[data-elem-id="1723122768750"]{display:table;top:973px;;left:calc(50% - 320px + 89px);;width:330px;height:auto;}#rec495453579 .tn-elem[data-elem-id="1723122768750"] .tn-atom{vertical-align:middle;white-space:normal;background-size:cover;}}@media screen and (max-width:639px){#rec495453579 .tn-elem[data-elem-id="1723122768750"]{display:table;top:1128px;;left:calc(50% - 240px + 71px);;width:440px;height:auto;}#rec495453579 .tn-elem[data-elem-id="1723122768750"] .tn-atom{font-size:15px;line-height:1.47;background-size:cover;}}@media screen and (max-width:479px){#rec495453579 .tn-elem[data-elem-id="1723122768750"]{display:table;top:793px;;left:calc(50% - 160px + 57px);;width:300px;height:auto;}}#rec495453579 .tn-elem[data-elem-id="1768398747383000001"]{color:#172b4d;z-index:3;top:297px;;left:calc(50% - 600px + 816px);;width:360px;height:auto;}#rec495453579 .tn-elem[data-elem-id="1768398747383000001"] .tn-atom{vertical-align:middle;color:#172b4d;font-size:16px;font-family:var(--t-text-font,Arial);line-height:1.5;font-weight:400;background-position:center center;border-width:var(--t396-borderwidth,0);border-style:var(--t396-borderstyle,solid);border-color:var(--t396-bordercolor,transparent);transition:background-color var(--t396-speedhover,0s) ease-in-out,color var(--t396-speedhover,0s) ease-in-out,border-color var(--t396-speedhover,0s) ease-in-out,box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;--t396-shadow-text-opacity:100%;text-shadow:var(--t396-shadow-text-x,0px) var(--t396-shadow-text-y,0px) var(--t396-shadow-text-blur,0px) rgba(var(--t396-shadow-text-color),var(--t396-shadow-text-opacity,100%));}@media screen and (max-width:1199px){#rec495453579 .tn-elem[data-elem-id="1768398747383000001"]{display:table;top:317px;;left:calc(50% - 480px + 636px);;width:288px;height:auto;}}@media screen and (max-width:959px){#rec495453579 .tn-elem[data-elem-id="1768398747383000001"]{display:table;top:874px;;left:calc(50% - 320px + 328px);;width:273px;height:auto;}#rec495453579 .tn-elem[data-elem-id="1768398747383000001"] .tn-atom{vertical-align:middle;white-space:normal;background-size:cover;}}@media screen and (max-width:639px){#rec495453579 .tn-elem[data-elem-id="1768398747383000001"]{display:table;top:1068px;;left:calc(50% - 240px + 20px);;width:335px;height:auto;}#rec495453579 .tn-elem[data-elem-id="1768398747383000001"] .tn-atom{font-size:15px;line-height:1.47;background-size:cover;}}@media screen and (max-width:479px){#rec495453579 .tn-elem[data-elem-id="1768398747383000001"]{display:table;top:1099px;;left:calc(50% - 160px + 9px);;width:300px;height:auto;}}#rec495453579 .tn-elem[data-elem-id="1726735717183"]{color:#172b4d;z-index:3;top:465px;;left:calc(50% - 600px + 16px);;width:336px;height:auto;}#rec495453579 .tn-elem[data-elem-id="1726735717183"] .tn-atom{vertical-align:middle;color:#172b4d;font-size:16px;font-family:var(--t-text-font,Arial);line-height:1.5;font-weight:400;background-position:center center;border-width:var(--t396-borderwidth,0);border-style:var(--t396-borderstyle,solid);border-color:var(--t396-bordercolor,transparent);transition:background-color var(--t396-speedhover,0s) ease-in-out,color var(--t396-speedhover,0s) ease-in-out,border-color var(--t396-speedhover,0s) ease-in-out,box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;--t396-shadow-text-opacity:100%;text-shadow:var(--t396-shadow-text-x,0px) var(--t396-shadow-text-y,0px) var(--t396-shadow-text-blur,0px) rgba(var(--t396-shadow-text-color),var(--t396-shadow-text-opacity,100%));}@media screen and (max-width:1199px){#rec495453579 .tn-elem[data-elem-id="1726735717183"]{display:table;top:485px;;left:calc(50% - 480px + 28px);;width:264px;height:auto;}}@media screen and (max-width:959px){#rec495453579 .tn-elem[data-elem-id="1726735717183"]{display:table;top:416px;;left:calc(50% - 320px + 20px);;height:auto;}}@media screen and (max-width:639px){#rec495453579 .tn-elem[data-elem-id="1726735717183"]{display:table;top:448px;;left:calc(50% - 240px + 16px);;width:212px;height:auto;}#rec495453579 .tn-elem[data-elem-id="1726735717183"] .tn-atom{font-size:15px;line-height:1.47;background-size:cover;}}@media screen and (max-width:479px){#rec495453579 .tn-elem[data-elem-id="1726735717183"]{display:table;left:calc(50% - 160px + 6px);;width:140px;height:auto;}}#rec495453579 .tn-elem[data-elem-id="1768399150632"]{z-index:3;top:369px;;left:calc(50% - 600px + 820px);;width:55px;height:55px;}#rec495453579 .tn-elem[data-elem-id="1768399150632"] .tn-atom{border-radius:10px 10px 10px 10px;background-color:#172b4d;background-position:center center;border-width:var(--t396-borderwidth,0);border-style:var(--t396-borderstyle,solid);border-color:var(--t396-bordercolor,transparent);transition:background-color var(--t396-speedhover,0s) ease-in-out,color var(--t396-speedhover,0s) ease-in-out,border-color var(--t396-speedhover,0s) ease-in-out,box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;}@media screen and (max-width:1199px){#rec495453579 .tn-elem[data-elem-id="1768399150632"]{display:table;top:417px;;left:calc(50% - 480px + 640px);;}}@media screen and (max-width:959px){#rec495453579 .tn-elem[data-elem-id="1768399150632"]{display:table;top:968px;;left:calc(50% - 320px + 24px);;}}@media screen and (max-width:639px){#rec495453579 .tn-elem[data-elem-id="1768399150632"]{display:table;top:1129px;;left:calc(50% - 240px + 21px);;width:41px;height:41px;}}@media screen and (max-width:479px){#rec495453579 .tn-elem[data-elem-id="1768399150632"]{display:table;top:794px;;left:calc(50% - 160px + 10px);;}}#rec495453579 .tn-elem[data-elem-id="1768399141699"]{z-index:3;top:378px;;left:calc(50% - 600px + 829px);;width:38px;height:auto;}#rec495453579 .tn-elem[data-elem-id="1768399141699"] .tn-atom{border-radius:0px 0px 0px 0px;background-position:center center;border-width:var(--t396-borderwidth,0);border-style:var(--t396-borderstyle,solid);border-color:var(--t396-bordercolor,transparent);transition:background-color var(--t396-speedhover,0s) ease-in-out,color var(--t396-speedhover,0s) ease-in-out,border-color var(--t396-speedhover,0s) ease-in-out,box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;}#rec495453579 .tn-elem[data-elem-id="1768399141699"] .tn-atom__img{border-radius:0px 0px 0px 0px;object-position:center center;}@media screen and (max-width:1199px){#rec495453579 .tn-elem[data-elem-id="1768399141699"]{display:table;top:426px;;left:calc(50% - 480px + 649px);;height:auto;}}@media screen and (max-width:959px){#rec495453579 .tn-elem[data-elem-id="1768399141699"]{display:table;top:977px;;left:calc(50% - 320px + 33px);;height:auto;}}@media screen and (max-width:639px){#rec495453579 .tn-elem[data-elem-id="1768399141699"]{display:table;top:1136px;;left:calc(50% - 240px + 28px);;width:28px;height:auto;}}@media screen and (max-width:479px){#rec495453579 .tn-elem[data-elem-id="1768399141699"]{display:table;top:801px;;left:calc(50% - 160px + 17px);;height:auto;}}</style> <div class='t396'> <div class="t396__artboard" data-artboard-recid="495453579" data-artboard-screens="320,480,640,960,1200" data-artboard-height="847" data-artboard-valign="center" data-artboard-upscale="grid" data-artboard-height-res-320="1536" data-artboard-height-res-480="1513" data-artboard-height-res-640="1196" data-artboard-height-res-960="840"> <div class="t396__carrier" data-artboard-recid="495453579"></div> <div class="t396__filter" data-artboard-recid="495453579"></div> <div class='t396__elem tn-elem uc-logo--on-white tn-elem__4954535791712236782477' data-elem-id='1712236782477' data-elem-type='image' data-field-top-value="74" data-field-left-value="20" data-field-height-value="42" data-field-width-value="105" data-field-axisy-value="top" data-field-axisx-value="left" data-field-container-value="grid" data-field-topunits-value="px" data-field-leftunits-value="px" data-field-heightunits-value="px" data-field-widthunits-value="px" data-field-filewidth-value="259" data-field-fileheight-value="103" data-field-heightmode-value="hug" data-field-top-res-320-value="36" data-field-left-res-320-value="7" data-field-height-res-320-value="42" data-field-top-res-480-value="40px" data-field-left-res-480-value="15" data-field-height-res-480-value="42" data-field-width-res-480-value="105" data-field-container-res-480-value="grid" data-field-top-res-640-value="61" data-field-left-res-640-value="24" data-field-height-res-640-value="42" data-field-left-res-960-value="36" data-field-height-res-960-value="42"> <a class='tn-atom' href="https://slurm.io/"> <img class='tn-atom__img t-img' data-original='https://static.tildacdn.com/tild3630-3434-4637-b730-343538653735/slurm_logo_new_1_1.svg'
src='https://static.tildacdn.com/tild3630-3434-4637-b730-343538653735/slurm_logo_new_1_1.svg'
alt='' imgfield='tn_img_1712236782477'
/> </a> </div> <div class='t396__elem tn-elem uc-logo--on-dark tn-elem__4954535791712235605947' data-elem-id='1712235605947' data-elem-type='image' data-field-top-value="74" data-field-left-value="20" data-field-height-value="42" data-field-width-value="105" data-field-axisy-value="top" data-field-axisx-value="left" data-field-container-value="grid" data-field-topunits-value="px" data-field-leftunits-value="px" data-field-heightunits-value="px" data-field-widthunits-value="px" data-field-filewidth-value="1188" data-field-fileheight-value="471" data-field-heightmode-value="hug" data-field-top-res-320-value="36" data-field-left-res-320-value="7" data-field-height-res-320-value="42" data-field-top-res-480-value="40" data-field-left-res-480-value="15" data-field-height-res-480-value="42" data-field-width-res-480-value="105" data-field-container-res-480-value="grid" data-field-top-res-640-value="61" data-field-left-res-640-value="24" data-field-height-res-640-value="42" data-field-left-res-960-value="36" data-field-height-res-960-value="42"> <a class='tn-atom' href="https://slurm.io/"> <img class='tn-atom__img t-img' data-original='https://static.tildacdn.com/tild6135-3939-4135-b731-656566303162/white.svg'
src='https://static.tildacdn.com/tild6135-3939-4135-b731-656566303162/white.svg'
alt='' imgfield='tn_img_1712235605947'
/> </a> </div> <div class='t396__elem tn-elem uc-logo--on-white tn-elem__4954535791692506348245' data-elem-id='1692506348245' data-elem-type='image' data-field-top-value="58" data-field-left-value="820" data-field-height-value="57" data-field-width-value="120" data-field-axisy-value="top" data-field-axisx-value="left" data-field-container-value="grid" data-field-topunits-value="px" data-field-leftunits-value="px" data-field-heightunits-value="px" data-field-widthunits-value="px" data-field-filewidth-value="87" data-field-fileheight-value="41" data-field-heightmode-value="hug" data-field-top-res-320-value="863" data-field-left-res-320-value="10" data-field-height-res-320-value="57" data-field-top-res-480-value="835" data-field-left-res-480-value="20" data-field-height-res-480-value="57" data-field-top-res-640-value="755" data-field-left-res-640-value="24" data-field-height-res-640-value="57" data-field-left-res-960-value="640" data-field-height-res-960-value="57"> <a class='tn-atom js-click-zero-stat' href="https://southbridge.io/?utm_source=slurm&utm_medium=footer" rel="nofollow" data-tilda-event-name="/tilda/click/rec495453579/button1692506348245"> <img class='tn-atom__img t-img' data-original='https://static.tildacdn.com/tild6266-3163-4334-b735-323663336439/sb-logo-dark.svg'
src='https://static.tildacdn.com/tild6266-3163-4334-b735-323663336439/sb-logo-dark.svg'
alt='' imgfield='tn_img_1692506348245'
/> </a> </div> <div class='t396__elem tn-elem uc-logo--on-dark tn-elem__4954535791692506631214' data-elem-id='1692506631214' data-elem-type='image' data-field-top-value="58" data-field-left-value="820" data-field-height-value="56" data-field-width-value="120" data-field-axisy-value="top" data-field-axisx-value="left" data-field-container-value="grid" data-field-topunits-value="px" data-field-leftunits-value="px" data-field-heightunits-value="px" data-field-widthunits-value="px" data-field-filewidth-value="86" data-field-fileheight-value="40" data-field-heightmode-value="hug" data-field-top-res-320-value="873" data-field-left-res-320-value="10" data-field-height-res-320-value="56" data-field-top-res-480-value="845" data-field-left-res-480-value="20" data-field-height-res-480-value="56" data-field-top-res-640-value="757" data-field-left-res-640-value="24" data-field-height-res-640-value="56" data-field-left-res-960-value="640" data-field-height-res-960-value="56"> <a class='tn-atom js-click-zero-stat' href="https://southbridge.io/?utm_source=slurm&utm_medium=footer" rel="nofollow" data-tilda-event-name="/tilda/click/rec495453579/button1692506631214"> <img class='tn-atom__img t-img' data-original='https://static.tildacdn.com/tild3438-6232-4636-b961-366339386263/sb-logo-light.svg'
src='https://static.tildacdn.com/tild3438-6232-4636-b961-366339386263/sb-logo-light.svg'
alt='' imgfield='tn_img_1692506631214'
/> </a> </div> <div class='t396__elem tn-elem tn-elem__4954535791660327289504' data-elem-id='1660327289504' data-elem-type='text' data-field-top-value="121" data-field-left-value="20" data-field-height-value="24" data-field-width-value="360" data-field-axisy-value="top" data-field-axisx-value="left" data-field-container-value="grid" data-field-topunits-value="px" data-field-leftunits-value="px" data-field-heightunits-value="px" data-field-widthunits-value="px" data-field-textfit-value="autoheight" data-field-fontsize-value="18" data-field-left-res-320-value="10" data-field-width-res-320-value="300" data-field-fontsize-res-320-value="16" data-field-top-res-480-value="81" data-field-left-res-480-value="20" data-field-top-res-640-value="68" data-field-left-res-640-value="153" data-field-left-res-960-value="32" data-field-width-res-960-value="288"> <div class='tn-atom'field='tn_text_1660327289504'>Обучение ИТ-профессионалов</div> </div> <div class='t396__elem tn-elem uc-footer-menu tn-elem__4954535791660327420094' data-elem-id='1660327420094' data-elem-type='text' data-field-top-value="185" data-field-left-value="14" data-field-height-value="26" data-field-width-value="336" data-field-axisy-value="top" data-field-axisx-value="left" data-field-container-value="grid" data-field-topunits-value="px" data-field-leftunits-value="px" data-field-heightunits-value="px" data-field-widthunits-value="px" data-field-textfit-value="autoheight" data-field-fontsize-value="24" data-field-left-res-320-value="5" data-field-width-res-320-value="300" data-field-left-res-480-value="15" data-field-width-res-480-value="440" data-field-top-res-640-value="124" data-field-left-res-640-value="20" data-field-left-res-960-value="27" data-field-width-res-960-value="264"> <div class='tn-atom'><a href="tel:+74952480580"rel="nofollow"style="color: inherit">+7 (495) 248-05-80</a></div> </div> <div class='t396__elem tn-elem uc-footer-menu tn-elem__4954535791660327526179' data-elem-id='1660327526179' data-elem-type='text' data-field-top-value="223" data-field-left-value="16" data-field-height-value="26" data-field-width-value="336" data-field-axisy-value="top" data-field-axisx-value="left" data-field-container-value="grid" data-field-topunits-value="px" data-field-leftunits-value="px" data-field-heightunits-value="px" data-field-widthunits-value="px" data-field-textfit-value="autoheight" data-field-fontsize-value="24" data-field-left-res-320-value="6" data-field-width-res-320-value="300" data-field-left-res-480-value="16" data-field-width-res-480-value="440" data-field-top-res-640-value="162" data-field-left-res-640-value="20" data-field-left-res-960-value="28" data-field-width-res-960-value="264"> <div class='tn-atom'><a href="mailto:ask@slurm.io"rel="nofollow"style="color: inherit">ask@slurm.io</a></div> </div> <div class='t396__elem tn-elem uc-footer-menu tn-elem__4954535791660328247771' data-elem-id='1660328247771' data-elem-type='text' data-field-top-value="547" data-field-left-value="419" data-field-height-value="24" data-field-width-value="336" data-field-axisy-value="top" data-field-axisx-value="left" data-field-container-value="grid" data-field-topunits-value="px" data-field-leftunits-value="px" data-field-heightunits-value="px" data-field-widthunits-value="px" data-field-textfit-value="autoheight" data-field-fontsize-value="16" data-field-top-res-320-value="614" data-field-left-res-320-value="6" data-field-width-res-320-value="300" data-field-top-res-480-value="622" data-field-left-res-480-value="16" data-field-width-res-480-value="440" data-field-fontsize-res-480-value="15" data-field-top-res-640-value="532" data-field-left-res-640-value="326" data-field-top-res-960-value="557" data-field-left-res-960-value="332" data-field-width-res-960-value="264"> <div class='tn-atom'><a href="/corporate"style="color: inherit">Корпоративное обучение</a></div> </div> <div class='t396__elem tn-elem uc-footer-menu tn-elem__4954535791660328067115' data-elem-id='1660328067115' data-elem-type='text' data-field-top-value="217" data-field-left-value="419" data-field-height-value="24" data-field-width-value="336" data-field-axisy-value="top" data-field-axisx-value="left" data-field-container-value="grid" data-field-topunits-value="px" data-field-leftunits-value="px" data-field-heightunits-value="px" data-field-widthunits-value="px" data-field-textfit-value="autoheight" data-field-fontsize-value="16" data-field-top-res-320-value="258" data-field-left-res-320-value="166" data-field-width-res-320-value="140" data-field-top-res-480-value="258" data-field-left-res-480-value="244" data-field-width-res-480-value="212" data-field-fontsize-res-480-value="15" data-field-top-res-640-value="158" data-field-left-res-640-value="326" data-field-top-res-960-value="219" data-field-left-res-960-value="332" data-field-width-res-960-value="264"> <div class='tn-atom'><a href="/calendar"style="color: inherit">Календарь</a></div> </div> <div class='t396__elem tn-elem uc-footer-menu--partner tn-elem__4954535791660328673693' data-elem-id='1660328673693' data-elem-type='text' data-field-top-value="229" data-field-left-value="816" data-field-height-value="48" data-field-width-value="360" data-field-axisy-value="top" data-field-axisx-value="left" data-field-container-value="grid" data-field-topunits-value="px" data-field-leftunits-value="px" data-field-heightunits-value="px" data-field-widthunits-value="px" data-field-textfit-value="autoheight" data-field-fontsize-value="16" data-field-top-res-320-value="1017" data-field-left-res-320-value="9" data-field-width-res-320-value="300" data-field-top-res-480-value="1008" data-field-left-res-480-value="20" data-field-width-res-480-value="440" data-field-fontsize-res-480-value="15" data-field-top-res-640-value="874" data-field-left-res-640-value="20" data-field-width-res-640-value="256" data-field-top-res-960-value="229" data-field-left-res-960-value="636" data-field-width-res-960-value="288"> <div class='tn-atom'><a href="https://southbridge.io/?utm_source=slurm&utm_medium=footer"rel="nofollow"style="color: inherit"><span style="font-weight: 700;">Southbridge.</span> DevOps-аутсорсер, поддержка высоконагруженных проектов.</a></div> </div> <div class='t396__elem tn-elem uc-footer-menu tn-elem__4954535791660327820270' data-elem-id='1660327820270' data-elem-type='text' data-field-top-value="305" data-field-left-value="16" data-field-height-value="24" data-field-width-value="336" data-field-axisy-value="top" data-field-axisx-value="left" data-field-container-value="grid" data-field-topunits-value="px" data-field-leftunits-value="px" data-field-heightunits-value="px" data-field-widthunits-value="px" data-field-textfit-value="autoheight" data-field-fontsize-value="16" data-field-left-res-320-value="6" data-field-width-res-320-value="140" data-field-top-res-480-value="258" data-field-left-res-480-value="16" data-field-width-res-480-value="212" data-field-fontsize-res-480-value="15" data-field-top-res-640-value="246" data-field-left-res-640-value="20" data-field-top-res-960-value="315" data-field-left-res-960-value="28" data-field-width-res-960-value="264"> <div class='tn-atom'><a href="https://habr.com/ru/companies/slurm/articles/"rel="nofollow"style="color: inherit">Хабр</a></div> </div> <div class='t396__elem tn-elem uc-footer-menu--podcast tn-elem__4954535791660728009618' data-elem-id='1660728009618' data-elem-type='text' data-field-top-value="273" data-field-left-value="16" data-field-height-value="24" data-field-width-value="336" data-field-axisy-value="top" data-field-axisx-value="left" data-field-container-value="grid" data-field-topunits-value="px" data-field-leftunits-value="px" data-field-heightunits-value="px" data-field-widthunits-value="px" data-field-textfit-value="autoheight" data-field-fontsize-value="16" data-field-left-res-320-value="6" data-field-width-res-320-value="140" data-field-top-res-480-value="220" data-field-left-res-480-value="16" data-field-width-res-480-value="212" data-field-fontsize-res-480-value="15" data-field-top-res-640-value="212" data-field-left-res-640-value="20" data-field-top-res-960-value="281" data-field-left-res-960-value="28" data-field-width-res-960-value="264"> <div class='tn-atom'><a href="https://slurm.mave.digital/"rel="nofollow"style="color: inherit">Подкаст</a></div> </div> <div class='t396__elem tn-elem tn-elem__4954535791660728533851' data-elem-id='1660728533851' data-elem-type='text' data-field-top-value="274" data-field-left-value="8" data-field-height-value="24" data-field-width-value="9" data-field-axisy-value="top" data-field-axisx-value="left" data-field-container-value="grid" data-field-topunits-value="px" data-field-leftunits-value="px" data-field-heightunits-value="px" data-field-widthunits-value="px" data-field-textfit-value="autoheight" data-field-fontsize-value="16" data-field-top-res-320-value="218" data-field-left-res-320-value="0" data-field-top-res-480-value="222" data-field-left-res-480-value="8" data-field-fontsize-res-480-value="15" data-field-top-res-640-value="211" data-field-left-res-640-value="10" data-field-top-res-960-value="283" data-field-left-res-960-value="20"> <div class='tn-atom'field='tn_text_1660728533851'>•</div> </div> <div class='t396__elem tn-elem uc-footer-menu tn-elem__4954535791660328247775' data-elem-id='1660328247775' data-elem-type='text' data-field-top-value="579" data-field-left-value="419" data-field-height-value="24" data-field-width-value="336" data-field-axisy-value="top" data-field-axisx-value="left" data-field-container-value="grid" data-field-topunits-value="px" data-field-leftunits-value="px" data-field-heightunits-value="px" data-field-widthunits-value="px" data-field-textfit-value="autoheight" data-field-fontsize-value="16" data-field-top-res-320-value="652" data-field-left-res-320-value="6" data-field-width-res-320-value="300" data-field-top-res-480-value="660" data-field-left-res-480-value="16" data-field-width-res-480-value="440" data-field-fontsize-res-480-value="15" data-field-top-res-640-value="566" data-field-left-res-640-value="326" data-field-top-res-960-value="591" data-field-left-res-960-value="332" data-field-width-res-960-value="264"> <div class='tn-atom'><a href="/universal-tickets"style="color: inherit">Универсальные доступы</a></div> </div> <div class='t396__elem tn-elem uc-footer-menu tn-elem__4954535791660328067118' data-elem-id='1660328067118' data-elem-type='text' data-field-top-value="185" data-field-left-value="419" data-field-height-value="24" data-field-width-value="336" data-field-axisy-value="top" data-field-axisx-value="left" data-field-container-value="grid" data-field-topunits-value="px" data-field-leftunits-value="px" data-field-heightunits-value="px" data-field-widthunits-value="px" data-field-textfit-value="autoheight" data-field-fontsize-value="16" data-field-top-res-320-value="220" data-field-left-res-320-value="166" data-field-width-res-320-value="140" data-field-top-res-480-value="220" data-field-left-res-480-value="244" data-field-width-res-480-value="212" data-field-fontsize-res-480-value="15" data-field-top-res-640-value="124" data-field-left-res-640-value="326" data-field-top-res-960-value="185" data-field-left-res-960-value="332" data-field-width-res-960-value="264"> <div class='tn-atom'><a href="/catalog"style="color: inherit">Все курсы</a></div> </div> <div class='t396__elem tn-elem uc-footer-menu tn-elem__4954535791660328247777' data-elem-id='1660328247777' data-elem-type='text' data-field-top-value="611" data-field-left-value="419" data-field-height-value="24" data-field-width-value="336" data-field-axisy-value="top" data-field-axisx-value="left" data-field-container-value="grid" data-field-topunits-value="px" data-field-leftunits-value="px" data-field-heightunits-value="px" data-field-widthunits-value="px" data-field-textfit-value="autoheight" data-field-fontsize-value="16" data-field-top-res-320-value="690" data-field-left-res-320-value="6" data-field-width-res-320-value="300" data-field-top-res-480-value="698" data-field-left-res-480-value="16" data-field-width-res-480-value="440" data-field-fontsize-res-480-value="15" data-field-top-res-640-value="600" data-field-left-res-640-value="326" data-field-top-res-960-value="625" data-field-left-res-960-value="332" data-field-width-res-960-value="264"> <div class='tn-atom'><a href="/faq-for-oformitel"style="color: inherit">Оплата курса от компании</a></div> </div> <div class='t396__elem tn-elem uc-footer-menu tn-elem__4954535791660328067120' data-elem-id='1660328067120' data-elem-type='text' data-field-top-value="249" data-field-left-value="419" data-field-height-value="24" data-field-width-value="336" data-field-axisy-value="top" data-field-axisx-value="left" data-field-container-value="grid" data-field-topunits-value="px" data-field-leftunits-value="px" data-field-heightunits-value="px" data-field-widthunits-value="px" data-field-textfit-value="autoheight" data-field-fontsize-value="16" data-field-top-res-320-value="296" data-field-left-res-320-value="166" data-field-width-res-320-value="140" data-field-top-res-480-value="296" data-field-left-res-480-value="244" data-field-width-res-480-value="212" data-field-fontsize-res-480-value="15" data-field-top-res-640-value="192" data-field-left-res-640-value="326" data-field-top-res-960-value="253" data-field-left-res-960-value="332" data-field-width-res-960-value="264"> <div class='tn-atom'><a href="/free"style="color: inherit">Бесплатные материалы</a></div> </div> <div class='t396__elem tn-elem uc-footer-menu tn-elem__4954535791660327823456' data-elem-id='1660327823456' data-elem-type='text' data-field-top-value="337" data-field-left-value="16" data-field-height-value="24" data-field-width-value="336" data-field-axisy-value="top" data-field-axisx-value="left" data-field-container-value="grid" data-field-topunits-value="px" data-field-leftunits-value="px" data-field-heightunits-value="px" data-field-widthunits-value="px" data-field-textfit-value="autoheight" data-field-fontsize-value="16" data-field-left-res-320-value="6" data-field-width-res-320-value="140" data-field-top-res-480-value="296" data-field-left-res-480-value="16" data-field-width-res-480-value="212" data-field-fontsize-res-480-value="15" data-field-top-res-640-value="280" data-field-left-res-640-value="20" data-field-top-res-960-value="349" data-field-left-res-960-value="28" data-field-width-res-960-value="264"> <div class='tn-atom'><a href="https://t.me/slurmnews"style="color: inherit">Telegram</a></div> </div> <div class='t396__elem tn-elem uc-footer-menu tn-elem__4954535791660328067122' data-elem-id='1660328067122' data-elem-type='text' data-field-top-value="281" data-field-left-value="419" data-field-height-value="24" data-field-width-value="336" data-field-axisy-value="top" data-field-axisx-value="left" data-field-container-value="grid" data-field-topunits-value="px" data-field-leftunits-value="px" data-field-heightunits-value="px" data-field-widthunits-value="px" data-field-textfit-value="autoheight" data-field-fontsize-value="16" data-field-top-res-320-value="344" data-field-left-res-320-value="166" data-field-width-res-320-value="140" data-field-top-res-480-value="334" data-field-left-res-480-value="244" data-field-width-res-480-value="212" data-field-fontsize-res-480-value="15" data-field-top-res-640-value="226" data-field-left-res-640-value="326" data-field-top-res-960-value="287" data-field-left-res-960-value="332" data-field-width-res-960-value="264"> <div class='tn-atom'><a href="/speaker"style="color: inherit">Спикеры</a></div> </div> <div class='t396__elem tn-elem uc-footer-menu tn-elem__4954535791664355590156' data-elem-id='1664355590156' data-elem-type='text' data-field-top-value="313" data-field-left-value="419" data-field-height-value="24" data-field-width-value="336" data-field-axisy-value="top" data-field-axisx-value="left" data-field-container-value="grid" data-field-topunits-value="px" data-field-leftunits-value="px" data-field-heightunits-value="px" data-field-widthunits-value="px" data-field-textfit-value="autoheight" data-field-fontsize-value="16" data-field-top-res-320-value="382" data-field-left-res-320-value="166" data-field-width-res-320-value="140" data-field-top-res-480-value="372" data-field-left-res-480-value="244" data-field-width-res-480-value="212" data-field-fontsize-res-480-value="15" data-field-top-res-640-value="260" data-field-left-res-640-value="326" data-field-top-res-960-value="321" data-field-left-res-960-value="332" data-field-width-res-960-value="264"> <div class='tn-atom'><a href="/for-speakers"style="color: inherit">Для спикеров</a></div> </div> <div class='t396__elem tn-elem uc-footer-menu tn-elem__4954535791738909171549' data-elem-id='1738909171549' data-elem-type='text' data-field-top-value="345" data-field-left-value="419" data-field-height-value="24" data-field-width-value="336" data-field-axisy-value="top" data-field-axisx-value="left" data-field-container-value="grid" data-field-topunits-value="px" data-field-leftunits-value="px" data-field-heightunits-value="px" data-field-widthunits-value="px" data-field-textfit-value="autoheight" data-field-fontsize-value="16" data-field-top-res-320-value="420" data-field-left-res-320-value="166" data-field-width-res-320-value="140" data-field-top-res-480-value="410" data-field-left-res-480-value="244" data-field-width-res-480-value="212" data-field-fontsize-res-480-value="15" data-field-top-res-640-value="294" data-field-left-res-640-value="326" data-field-top-res-960-value="355" data-field-left-res-960-value="332" data-field-width-res-960-value="264"> <div class='tn-atom'><a href="https://slurm.io/careers"style="color: inherit">Работа в Слёрме</a></div> </div> <div class='t396__elem tn-elem tn-elem__4954535791660328170303' data-elem-id='1660328170303' data-elem-type='text' data-field-top-value="503" data-field-left-value="419" data-field-height-value="24" data-field-width-value="336" data-field-axisy-value="top" data-field-axisx-value="left" data-field-container-value="grid" data-field-topunits-value="px" data-field-leftunits-value="px" data-field-heightunits-value="px" data-field-widthunits-value="px" data-field-textfit-value="autoheight" data-field-fontsize-value="18" data-field-top-res-320-value="570" data-field-left-res-320-value="9" data-field-width-res-320-value="300" data-field-fontsize-res-320-value="16" data-field-top-res-480-value="578" data-field-left-res-480-value="16" data-field-width-res-480-value="440" data-field-top-res-640-value="488" data-field-left-res-640-value="326" data-field-top-res-960-value="513" data-field-left-res-960-value="332" data-field-width-res-960-value="264"> <div class='tn-atom'field='tn_text_1660328170303'>Корпоративным клиентам</div> </div> <div class='t396__elem tn-elem tn-elem__4954535791660328581896' data-elem-id='1660328581896' data-elem-type='text' data-field-top-value="185" data-field-left-value="820" data-field-height-value="24" data-field-width-value="360" data-field-axisy-value="top" data-field-axisx-value="left" data-field-container-value="grid" data-field-topunits-value="px" data-field-leftunits-value="px" data-field-heightunits-value="px" data-field-widthunits-value="px" data-field-textfit-value="autoheight" data-field-fontsize-value="18" data-field-top-res-320-value="973" data-field-left-res-320-value="12" data-field-width-res-320-value="300" data-field-fontsize-res-320-value="16" data-field-top-res-480-value="964" data-field-left-res-480-value="20" data-field-width-res-480-value="440" data-field-top-res-640-value="830" data-field-left-res-640-value="24" data-field-width-res-640-value="288" data-field-left-res-960-value="640" data-field-width-res-960-value="288"> <div class='tn-atom'field='tn_text_1660328581896'>Партнёры</div> </div> <div class='t396__elem tn-elem tn-elem__4954535791660328396738' data-elem-id='1660328396738' data-elem-type='text' data-field-top-value="736" data-field-left-value="20" data-field-height-value="24" data-field-width-value="360" data-field-axisy-value="top" data-field-axisx-value="left" data-field-container-value="grid" data-field-topunits-value="px" data-field-leftunits-value="px" data-field-heightunits-value="px" data-field-widthunits-value="px" data-field-textfit-value="autoheight" data-field-fontsize-value="16" data-field-top-res-320-value="1428" data-field-left-res-320-value="9" data-field-top-res-480-value="1435" data-field-left-res-480-value="23" data-field-top-res-640-value="1125" data-field-left-res-640-value="24" data-field-top-res-960-value="765" data-field-left-res-960-value="32" data-field-width-res-960-value="288"> <div class='tn-atom'field='tn_text_1660328396738'>© 2018—2025 ООО «Слёрм»</div> </div> <div class='t396__elem tn-elem uc-footer-menu tn-elem__4954535791660327824923' data-elem-id='1660327824923' data-elem-type='text' data-field-top-value="401" data-field-left-value="16" data-field-height-value="24" data-field-width-value="336" data-field-axisy-value="top" data-field-axisx-value="left" data-field-container-value="grid" data-field-topunits-value="px" data-field-leftunits-value="px" data-field-heightunits-value="px" data-field-widthunits-value="px" data-field-textfit-value="autoheight" data-field-fontsize-value="16" data-field-left-res-320-value="6" data-field-width-res-320-value="140" data-field-top-res-480-value="372" data-field-left-res-480-value="16" data-field-width-res-480-value="212" data-field-fontsize-res-480-value="15" data-field-top-res-640-value="348" data-field-left-res-640-value="20" data-field-top-res-960-value="417" data-field-left-res-960-value="28" data-field-width-res-960-value="264"> <div class='tn-atom'><a href="https://vk.com/slurm_io"rel="nofollow"style="color: inherit">VK</a></div> </div> <div class='t396__elem tn-elem uc-footer-menu tn-elem__4954535791660327826356' data-elem-id='1660327826356' data-elem-type='text' data-field-top-value="369" data-field-left-value="16" data-field-height-value="24" data-field-width-value="336" data-field-axisy-value="top" data-field-axisx-value="left" data-field-container-value="grid" data-field-topunits-value="px" data-field-leftunits-value="px" data-field-heightunits-value="px" data-field-widthunits-value="px" data-field-textfit-value="autoheight" data-field-fontsize-value="16" data-field-left-res-320-value="6" data-field-width-res-320-value="140" data-field-top-res-480-value="334" data-field-left-res-480-value="16" data-field-width-res-480-value="212" data-field-fontsize-res-480-value="15" data-field-top-res-640-value="314" data-field-left-res-640-value="20" data-field-top-res-960-value="383" data-field-left-res-960-value="28" data-field-width-res-960-value="264"> <div class='tn-atom'><a href="https://www.youtube.com/c/slurm_io"rel="nofollow"style="color: inherit">YouTube</a></div> </div> <div class='t396__elem tn-elem uc-footer-menu tn-elem__4954535791660327833780' data-elem-id='1660327833780' data-elem-type='text' data-field-top-value="433" data-field-left-value="16" data-field-height-value="24" data-field-width-value="336" data-field-axisy-value="top" data-field-axisx-value="left" data-field-container-value="grid" data-field-topunits-value="px" data-field-leftunits-value="px" data-field-heightunits-value="px" data-field-widthunits-value="px" data-field-textfit-value="autoheight" data-field-fontsize-value="16" data-field-left-res-320-value="6" data-field-width-res-320-value="140" data-field-top-res-480-value="410" data-field-left-res-480-value="16" data-field-width-res-480-value="212" data-field-fontsize-res-480-value="15" data-field-top-res-640-value="382" data-field-left-res-640-value="20" data-field-top-res-960-value="451" data-field-left-res-960-value="28" data-field-width-res-960-value="264"> <div class='tn-atom'><a href="https://dzen.ru/slurm"rel="nofollow"style="color: inherit">Дзен</a></div> </div> <div class='t396__elem tn-elem uc-footer-menu tn-elem__4954535791660327835132' data-elem-id='1660327835132' data-elem-type='text' data-field-top-value="497" data-field-left-value="16" data-field-height-value="24" data-field-width-value="336" data-field-axisy-value="top" data-field-axisx-value="left" data-field-container-value="grid" data-field-topunits-value="px" data-field-leftunits-value="px" data-field-heightunits-value="px" data-field-widthunits-value="px" data-field-textfit-value="autoheight" data-field-fontsize-value="16" data-field-left-res-320-value="6" data-field-width-res-320-value="140" data-field-top-res-480-value="486" data-field-left-res-480-value="16" data-field-width-res-480-value="212" data-field-fontsize-res-480-value="15" data-field-top-res-640-value="450" data-field-left-res-640-value="20" data-field-top-res-960-value="519" data-field-left-res-960-value="28" data-field-width-res-960-value="264"> <div class='tn-atom'><a href="https://www.linkedin.com/company/slurm"rel="nofollow"style="color: inherit">LinkedIn</a></div> </div> <div class='t396__elem tn-elem uc-footer-menu tn-elem__4954535791695983077804' data-elem-id='1695983077804' data-elem-type='text' data-field-top-value="586" data-field-left-value="16" data-field-height-value="24" data-field-width-value="336" data-field-axisy-value="top" data-field-axisx-value="left" data-field-container-value="grid" data-field-topunits-value="px" data-field-leftunits-value="px" data-field-heightunits-value="px" data-field-widthunits-value="px" data-field-textfit-value="autoheight" data-field-fontsize-value="16" data-field-top-res-320-value="1268" data-field-left-res-320-value="9" data-field-width-res-320-value="300" data-field-top-res-480-value="1265" data-field-left-res-480-value="19" data-field-width-res-480-value="440" data-field-fontsize-res-480-value="15" data-field-top-res-640-value="590" data-field-left-res-640-value="20" data-field-top-res-960-value="619" data-field-left-res-960-value="28" data-field-width-res-960-value="264"> <div class='tn-atom'><a href="/privacy"style="color: inherit">Политика конфиденциальности</a></div> </div> <div class='t396__elem tn-elem uc-footer-menu tn-elem__4954535791660328020471' data-elem-id='1660328020471' data-elem-type='text' data-field-top-value="618" data-field-left-value="16" data-field-height-value="24" data-field-width-value="336" data-field-axisy-value="top" data-field-axisx-value="left" data-field-container-value="grid" data-field-topunits-value="px" data-field-leftunits-value="px" data-field-heightunits-value="px" data-field-widthunits-value="px" data-field-textfit-value="autoheight" data-field-fontsize-value="16" data-field-top-res-320-value="1306" data-field-left-res-320-value="9" data-field-width-res-320-value="300" data-field-top-res-480-value="1303" data-field-left-res-480-value="19" data-field-width-res-480-value="440" data-field-fontsize-res-480-value="15" data-field-top-res-640-value="624" data-field-left-res-640-value="20" data-field-top-res-960-value="653" data-field-left-res-960-value="28" data-field-width-res-960-value="264"> <div class='tn-atom'><a href="/oferta-slurm"style="color: inherit">Публичная оферта</a></div> </div> <div class='t396__elem tn-elem tn-elem__4954535791660327366231' data-elem-id='1660327366231' data-elem-type='text' data-field-top-value="121" data-field-left-value="820" data-field-height-value="24" data-field-width-value="360" data-field-axisy-value="top" data-field-axisx-value="left" data-field-container-value="grid" data-field-topunits-value="px" data-field-leftunits-value="px" data-field-heightunits-value="px" data-field-widthunits-value="px" data-field-textfit-value="autoheight" data-field-fontsize-value="18" data-field-top-res-320-value="925" data-field-left-res-320-value="10" data-field-width-res-320-value="300" data-field-fontsize-res-320-value="16" data-field-top-res-480-value="908" data-field-left-res-480-value="20" data-field-width-res-480-value="440" data-field-top-res-640-value="784" data-field-left-res-640-value="168" data-field-left-res-960-value="640"> <div class='tn-atom'field='tn_text_1660327366231'>Генеральный партнёр Слёрм</div> </div> <div class='t396__elem tn-elem uc-footer-line tn-elem__4954535791660723679978' data-elem-id='1660723679978' data-elem-type='shape' data-field-top-value="0" data-field-left-value="787" data-field-height-value="100" data-field-width-value="1" data-field-axisy-value="top" data-field-axisx-value="left" data-field-container-value="grid" data-field-topunits-value="px" data-field-leftunits-value="px" data-field-heightunits-value="%" data-field-widthunits-value="px" data-field-left-res-960-value="619" data-field-height-res-960-value="100"> <div class='tn-atom'> </div> </div> <div class='t396__elem tn-elem uc-footer-line tn-elem__4954535791660625517826' data-elem-id='1660625517826' data-elem-type='shape' data-field-top-value="0" data-field-left-value="0" data-field-height-value="1" data-field-width-value="592" data-field-axisy-value="top" data-field-axisx-value="left" data-field-container-value="grid" data-field-topunits-value="px" data-field-leftunits-value="px" data-field-heightunits-value="px" data-field-widthunits-value="px" data-field-top-res-320-value="770" data-field-left-res-320-value="10" data-field-width-res-320-value="300" data-field-top-res-480-value="782" data-field-left-res-480-value="20" data-field-width-res-480-value="440" data-field-top-res-640-value="743" data-field-left-res-640-value="24"> <div class='tn-atom'> </div> </div> <div class='t396__elem tn-elem uc-footer-line tn-elem__4954535791660625579543' data-elem-id='1660625579543' data-elem-type='shape' data-field-top-value="0" data-field-left-value="0" data-field-height-value="1" data-field-width-value="592" data-field-axisy-value="top" data-field-axisx-value="left" data-field-container-value="grid" data-field-topunits-value="px" data-field-leftunits-value="px" data-field-heightunits-value="px" data-field-widthunits-value="px" data-field-top-res-320-value="1215" data-field-left-res-320-value="9" data-field-width-res-320-value="300" data-field-top-res-480-value="1204" data-field-left-res-480-value="20" data-field-width-res-480-value="440" data-field-top-res-640-value="1060" data-field-left-res-640-value="24"> <div class='tn-atom'> </div> </div> <div class='t396__elem tn-elem uc-footer-line--top tn-elem__4954535791660723501956' data-elem-id='1660723501956' data-elem-type='shape' data-field-top-value="0" data-field-left-value="0" data-field-height-value="1" data-field-width-value="100" data-field-axisy-value="top" data-field-axisx-value="center" data-field-container-value="window" data-field-topunits-value="px" data-field-leftunits-value="px" data-field-heightunits-value="px" data-field-widthunits-value="%"> <div class='tn-atom'> </div> </div> <div class='t396__elem tn-elem uc-footer-menu tn-elem__4954535791660328018624' data-elem-id='1660328018624' data-elem-type='text' data-field-top-value="553" data-field-left-value="16" data-field-height-value="24" data-field-width-value="336" data-field-axisy-value="top" data-field-axisx-value="left" data-field-container-value="grid" data-field-topunits-value="px" data-field-leftunits-value="px" data-field-heightunits-value="px" data-field-widthunits-value="px" data-field-textfit-value="autoheight" data-field-fontsize-value="16" data-field-top-res-320-value="1230" data-field-left-res-320-value="9" data-field-width-res-320-value="300" data-field-top-res-480-value="1227" data-field-left-res-480-value="19" data-field-width-res-480-value="440" data-field-fontsize-res-480-value="15" data-field-top-res-640-value="556" data-field-left-res-640-value="20" data-field-top-res-960-value="585" data-field-left-res-960-value="28" data-field-width-res-960-value="278"> <div class='tn-atom'><a href="https://api.edu.slurm.io/uploads/license_dpo.pdf"target="_blank"style="color: inherit">Лицензия №ДЛ-1368 от 22.08.2019</a></div> </div> <div class='t396__elem tn-elem tn-elem__4954535791705327730563' data-elem-id='1705327730563' data-elem-type='image' data-field-top-value="3" data-field-left-value="-3" data-field-height-value="101" data-field-width-value="6" data-field-axisy-value="bottom" data-field-axisx-value="center" data-field-container-value="grid" data-field-topunits-value="px" data-field-leftunits-value="px" data-field-heightunits-value="px" data-field-widthunits-value="%" data-field-filewidth-value="600" data-field-fileheight-value="840" data-field-heightmode-value="hug" data-field-top-res-320-value="25" data-field-left-res-320-value="1" data-field-height-res-320-value="99" data-field-width-res-320-value="71" data-field-top-res-480-value="57" data-field-left-res-480-value="147" data-field-height-res-480-value="140" data-field-width-res-480-value="100" data-field-widthunits-res-480-value="px" data-field-top-res-640-value="-112" data-field-left-res-640-value="173" data-field-height-res-640-value="132" data-field-width-res-640-value="94" data-field-widthunits-res-640-value="px" data-field-top-res-960-value="4" data-field-left-res-960-value="2" data-field-height-res-960-value="81"> <div class='tn-atom'> <img class='tn-atom__img t-img' data-original='https://static.tildacdn.com/tild6562-3736-4663-b362-303664366334/idle-anim3_green_lin.gif'
src='https://thb.tildacdn.com/tild6562-3736-4663-b362-303664366334/-/resize/20x/idle-anim3_green_lin.gif'
alt='' imgfield='tn_img_1705327730563'
/> </div> </div> <div class='t396__elem tn-elem uc-footer-menu tn-elem__4954535791706690444440' data-elem-id='1706690444440' data-elem-type='text' data-field-top-value="377" data-field-left-value="419" data-field-height-value="24" data-field-width-value="336" data-field-axisy-value="top" data-field-axisx-value="left" data-field-container-value="grid" data-field-topunits-value="px" data-field-leftunits-value="px" data-field-heightunits-value="px" data-field-widthunits-value="px" data-field-textfit-value="autoheight" data-field-fontsize-value="16" data-field-top-res-320-value="458" data-field-left-res-320-value="166" data-field-width-res-320-value="140" data-field-top-res-480-value="448" data-field-left-res-480-value="244" data-field-width-res-480-value="212" data-field-fontsize-res-480-value="15" data-field-top-res-640-value="328" data-field-left-res-640-value="326" data-field-top-res-960-value="389" data-field-left-res-960-value="332" data-field-width-res-960-value="264"> <div class='tn-atom'><a href="/reviews"style="color: inherit">Отзывы</a></div> </div> <div class='t396__elem tn-elem uc-footer-menu tn-elem__4954535791707905565159' data-elem-id='1707905565159' data-elem-type='text' data-field-top-value="441" data-field-left-value="420" data-field-height-value="24" data-field-width-value="336" data-field-axisy-value="top" data-field-axisx-value="left" data-field-container-value="grid" data-field-topunits-value="px" data-field-leftunits-value="px" data-field-heightunits-value="px" data-field-widthunits-value="px" data-field-textfit-value="autoheight" data-field-fontsize-value="16" data-field-top-res-320-value="532" data-field-left-res-320-value="166" data-field-width-res-320-value="140" data-field-top-res-480-value="524" data-field-left-res-480-value="244" data-field-width-res-480-value="212" data-field-fontsize-res-480-value="15" data-field-top-res-640-value="396" data-field-left-res-640-value="326" data-field-top-res-960-value="457" data-field-left-res-960-value="332" data-field-width-res-960-value="264"> <div class='tn-atom'><a href="/blog"style="color: inherit"><strong>Блог</strong></a></div> </div> <div class='t396__elem tn-elem uc-footer-menu tn-elem__4954535791742980584483' data-elem-id='1742980584483' data-elem-type='text' data-field-top-value="409" data-field-left-value="419" data-field-height-value="24" data-field-width-value="336" data-field-axisy-value="top" data-field-axisx-value="left" data-field-container-value="grid" data-field-topunits-value="px" data-field-leftunits-value="px" data-field-heightunits-value="px" data-field-widthunits-value="px" data-field-textfit-value="autoheight" data-field-fontsize-value="16" data-field-top-res-320-value="496" data-field-left-res-320-value="166" data-field-width-res-320-value="140" data-field-top-res-480-value="486" data-field-left-res-480-value="244" data-field-width-res-480-value="212" data-field-fontsize-res-480-value="15" data-field-top-res-640-value="362" data-field-left-res-640-value="326" data-field-top-res-960-value="423" data-field-left-res-960-value="332" data-field-width-res-960-value="264"> <div class='tn-atom'><a href="/about_us"style="color: inherit">О нас</a></div> </div> <div class='t396__elem tn-elem uc-footer-menu tn-elem__4954535791708962345240' data-elem-id='1708962345240' data-elem-type='text' data-field-top-value="682" data-field-left-value="16" data-field-height-value="24" data-field-width-value="336" data-field-axisy-value="top" data-field-axisx-value="left" data-field-container-value="grid" data-field-topunits-value="px" data-field-leftunits-value="px" data-field-heightunits-value="px" data-field-widthunits-value="px" data-field-textfit-value="autoheight" data-field-fontsize-value="16" data-field-top-res-320-value="1382" data-field-left-res-320-value="9" data-field-width-res-320-value="300" data-field-top-res-480-value="1379" data-field-left-res-480-value="19" data-field-width-res-480-value="440" data-field-fontsize-res-480-value="15" data-field-top-res-640-value="692" data-field-left-res-640-value="20" data-field-top-res-960-value="721" data-field-left-res-960-value="28" data-field-width-res-960-value="264"> <div class='tn-atom'><a href="https://slurm.io/info"style="color: inherit">Юридическая информация</a></div> </div> <div class='t396__elem tn-elem uc-footer-menu tn-elem__4954535791742566995756' data-elem-id='1742566995756' data-elem-type='text' data-field-top-value="650" data-field-left-value="16" data-field-height-value="24" data-field-width-value="336" data-field-axisy-value="top" data-field-axisx-value="left" data-field-container-value="grid" data-field-topunits-value="px" data-field-leftunits-value="px" data-field-heightunits-value="px" data-field-widthunits-value="px" data-field-textfit-value="autoheight" data-field-fontsize-value="16" data-field-top-res-320-value="1344" data-field-left-res-320-value="9" data-field-width-res-320-value="300" data-field-top-res-480-value="1341" data-field-left-res-480-value="19" data-field-width-res-480-value="440" data-field-fontsize-res-480-value="15" data-field-top-res-640-value="658" data-field-left-res-640-value="20" data-field-top-res-960-value="687" data-field-left-res-960-value="28" data-field-width-res-960-value="264"> <div class='tn-atom'><a href="https://slurm.io/newsletter"style="color: inherit">Согласие на рассылку</a></div> </div> <div class='t396__elem tn-elem uc-footer-menu--partner tn-elem__4954535791723122768750' data-elem-id='1723122768750' data-elem-type='text' data-field-top-value="373" data-field-left-value="886" data-field-height-value="48" data-field-width-value="360" data-field-axisy-value="top" data-field-axisx-value="left" data-field-container-value="grid" data-field-topunits-value="px" data-field-leftunits-value="px" data-field-heightunits-value="px" data-field-widthunits-value="px" data-field-textfit-value="autoheight" data-field-fontsize-value="16" data-field-top-res-320-value="793" data-field-left-res-320-value="57" data-field-width-res-320-value="300" data-field-top-res-480-value="1128" data-field-left-res-480-value="71" data-field-width-res-480-value="440" data-field-fontsize-res-480-value="15" data-field-top-res-640-value="973" data-field-left-res-640-value="89" data-field-height-res-640-value="48" data-field-width-res-640-value="330" data-field-container-res-640-value="grid" data-field-heightunits-res-640-value="px" data-field-textfit-res-640-value="autoheight" data-field-top-res-960-value="409" data-field-left-res-960-value="709" data-field-width-res-960-value="215"> <div class='tn-atom'field='tn_text_1723122768750'><strong style="font-weight: 700;">СДЕЛАНО В РОССИИ</strong><br>Входим в реестр Российского ПО</div> </div> <div class='t396__elem tn-elem uc-footer-menu--partner tn-elem__4954535791768398747383000001' data-elem-id='1768398747383000001' data-elem-type='text' data-field-top-value="297" data-field-left-value="816" data-field-height-value="48" data-field-width-value="360" data-field-axisy-value="top" data-field-axisx-value="left" data-field-container-value="grid" data-field-topunits-value="px" data-field-leftunits-value="px" data-field-heightunits-value="px" data-field-widthunits-value="px" data-field-textfit-value="autoheight" data-field-fontsize-value="16" data-field-top-res-320-value="1099" data-field-left-res-320-value="9" data-field-width-res-320-value="300" data-field-top-res-480-value="1068" data-field-left-res-480-value="20" data-field-width-res-480-value="335" data-field-fontsize-res-480-value="15" data-field-top-res-640-value="874" data-field-left-res-640-value="328" data-field-height-res-640-value="48" data-field-width-res-640-value="273" data-field-container-res-640-value="grid" data-field-heightunits-res-640-value="px" data-field-textfit-res-640-value="autoheight" data-field-top-res-960-value="317" data-field-left-res-960-value="636" data-field-width-res-960-value="288"> <div class='tn-atom'><a href="https://core247.io/"rel="nofollow"style="color: inherit"><strong style="font-weight: 700;">CORE 24/7.</strong> Официальный представитель Слёрма в Казахстане.</a></div> </div> <div class='t396__elem tn-elem uc-footer-menu tn-elem__4954535791726735717183' data-elem-id='1726735717183' data-elem-type='text' data-field-top-value="465" data-field-left-value="16" data-field-height-value="24" data-field-width-value="336" data-field-axisy-value="top" data-field-axisx-value="left" data-field-container-value="grid" data-field-topunits-value="px" data-field-leftunits-value="px" data-field-heightunits-value="px" data-field-widthunits-value="px" data-field-textfit-value="autoheight" data-field-fontsize-value="16" data-field-left-res-320-value="6" data-field-width-res-320-value="140" data-field-top-res-480-value="448" data-field-left-res-480-value="16" data-field-width-res-480-value="212" data-field-fontsize-res-480-value="15" data-field-top-res-640-value="416" data-field-left-res-640-value="20" data-field-top-res-960-value="485" data-field-left-res-960-value="28" data-field-width-res-960-value="264"> <div class='tn-atom'><a href="https://rutube.ru/channel/39652890/"rel="nofollow"style="color: inherit">Rutube</a></div> </div> <div class='t396__elem tn-elem tn-elem__4954535791768399150632' data-elem-id='1768399150632' data-elem-type='shape' data-field-top-value="369" data-field-left-value="820" data-field-height-value="55" data-field-width-value="55" data-field-axisy-value="top" data-field-axisx-value="left" data-field-container-value="grid" data-field-topunits-value="px" data-field-leftunits-value="px" data-field-heightunits-value="px" data-field-widthunits-value="px" data-field-top-res-320-value="794" data-field-left-res-320-value="10" data-field-top-res-480-value="1129" data-field-left-res-480-value="21" data-field-height-res-480-value="41" data-field-width-res-480-value="41" data-field-top-res-640-value="968" data-field-left-res-640-value="24" data-field-top-res-960-value="417" data-field-left-res-960-value="640"> <div class='tn-atom'> </div> </div> <div class='t396__elem tn-elem tn-elem__4954535791768399141699' data-elem-id='1768399141699' data-elem-type='image' data-field-top-value="378" data-field-left-value="829" data-field-height-value="38" data-field-width-value="38" data-field-axisy-value="top" data-field-axisx-value="left" data-field-container-value="grid" data-field-topunits-value="px" data-field-leftunits-value="px" data-field-heightunits-value="px" data-field-widthunits-value="px" data-field-filewidth-value="512" data-field-fileheight-value="512" data-field-heightmode-value="hug" data-field-top-res-320-value="801" data-field-left-res-320-value="17" data-field-height-res-320-value="28" data-field-top-res-480-value="1136" data-field-left-res-480-value="28" data-field-height-res-480-value="28" data-field-width-res-480-value="28" data-field-top-res-640-value="977" data-field-left-res-640-value="33" data-field-height-res-640-value="38" data-field-top-res-960-value="426" data-field-left-res-960-value="649" data-field-height-res-960-value="38"> <div class='tn-atom'> <img class='tn-atom__img t-img' data-original='https://static.tildacdn.com/tild6664-3637-4833-b338-393633633963/coat-of-arms_3.svg'
src='https://static.tildacdn.com/tild6664-3637-4833-b338-393633633963/coat-of-arms_3.svg'
alt='' imgfield='tn_img_1768399141699'
/> </div> </div> </div> </div> <script>t_onReady(function() {t_onFuncLoad('t396_init',function() {t396_init('495453579');});});</script> <!-- /T396 --> </div> <div id="rec825799301" class="r t-rec" style=" " data-animationappear="off" data-record-type="131"> <!-- T123 --> <div class="t123"> <div class="t-container_100 "> <div class="t-width t-width_100 "> <!-- nominify begin --> <style>
/*Добавляем скругления углов у карточек стандартных блоков*/
.t-popup__container{ /*Сюда вставляем класс блока из таблицы выше*/
border-radius: 16px !important; /*Радиус скругления у блока*/
overflow: hidden; /*Используется для некоторых блоков, к которым не применяется скругление*/
/*Если нужно скруглить углы, каждый по отдельности, то используйте вместо одного значения четыре,
написав их через пробел, например 20px 30px 10px 50px*/
}
</style> <style>
/*Размытие фона*/
.t-popup.t-popup_show {
-webkit-backdrop-filter: blur(5px);
backdrop-filter: blur(5px);
}
</style> <!-- nominify end --> </div> </div> </div> </div> </footer> <!--/footer--> </div> <!--/allrecords--> <!-- Stat --> <!-- Yandex.Metrika counter 49219348 --> <script type="text/javascript" data-tilda-cookie-type="analytics">setTimeout(function(){(function(m,e,t,r,i,k,a){m[i]=m[i]||function(){(m[i].a=m[i].a||[]).push(arguments)};m[i].l=1*new Date();k=e.createElement(t),a=e.getElementsByTagName(t)[0],k.async=1,k.src=r,a.parentNode.insertBefore(k,a)})(window,document,"script","https://mc.yandex.ru/metrika/tag.js","ym");window.mainMetrikaId='49219348';ym(window.mainMetrikaId,"init",{clickmap:true,trackLinks:true,accurateTrackBounce:true,webvisor:true,params:{__ym:{"ymCms":{"cms":"tilda","cmsVersion":"1.0"}}},ecommerce:"dataLayer"});},2000);</script> <noscript><div><img src="https://mc.yandex.ru/watch/49219348" style="position:absolute; left:-9999px;" alt="" /></div></noscript> <!-- /Yandex.Metrika counter --> <script type="text/javascript">if(!window.mainTracker) {window.mainTracker='tilda';}
window.tildastatscroll='yes';setTimeout(function(){(function(d,w,k,o,g) {var n=d.getElementsByTagName(o)[0],s=d.createElement(o),f=function(){n.parentNode.insertBefore(s,n);};s.type="text/javascript";s.async=true;s.key=k;s.id="tildastatscript";s.src=g;if(w.opera=="[object Opera]") {d.addEventListener("DOMContentLoaded",f,false);} else {f();}})(document,window,'3ca9b9471ab76a4a58118835b5fb250d','script','https://static.tildacdn.com/js/tilda-stat-1.0.min.js');},2000);</script> <!-- Rating Mail.ru counter --> <script type="text/javascript" data-tilda-cookie-type="analytics">setTimeout(function(){var _tmr=window._tmr||(window._tmr=[]);_tmr.push({id:"3557140",type:"pageView",start:(new Date()).getTime()});window.mainMailruId='3557140';(function(d,w,id) {if(d.getElementById(id)) {return;}
var ts=d.createElement("script");ts.type="text/javascript";ts.async=true;ts.id=id;ts.src="https://top-fwz1.mail.ru/js/code.js";var f=function() {var s=d.getElementsByTagName("script")[0];s.parentNode.insertBefore(ts,s);};if(w.opera=="[object Opera]") {d.addEventListener("DOMContentLoaded",f,false);} else {f();}})(document,window,"topmailru-code");},2000);</script> <noscript><img src="https://top-fwz1.mail.ru/counter?id=3557140;js=na" style="border:0;position:absolute;left:-9999px;width:1px;height:1px" alt="Top.Mail.Ru" /></noscript> <!-- //Rating Mail.ru counter --> </body> </html>