GitLab CI Pipeline. Запуск сценария через SSH на удаленном сервере
Когда вы думаете о развертывании на удаленном сервере, SSH — первый сетевой протокол, который приходит вам на ум. Добавив его поверх GitLab CI/CD, вы сможете воспользоваться преимуществами автоматизации. Чтобы использовать GitLab CI/CD pipeline вместе с SSH-соединениями, необходимо сначала настроить GitLab, и я хотел бы показать вам, как настроить его и запустить простой скрипт.
Необходимые условия
- Учетная запись GitLab
- Удаленный сервер (я использую Linux VM в Azure).
Повестка дня
- Создайте новый проект GitLab
- Создайте и добавьте SSH-ключи
- Создание и запуск CI/CD конвейера GitLab
Создание нового проекта GitLab
В качестве первого шага мы создадим проект GitLab.
Войдите в GitLab и перейдите в Новый проект -> Создать из шаблона -> Страницы/Простой HTML -> Использовать шаблон. Дайте проекту имя и нажмите Создать проект. Это создаст простой проект plain html.

Шаблон создаст файл README.md, начальный .gitlab-ci.yml и общий каталог с файлами index.html и style.css.
Создание и добавление ключей SSH
У нас уже есть пример проекта, теперь нам нужно создать SSH-ключи. Они будут использоваться для подключения к нашему удаленному серверу. Каждый раз, когда запускается конвейер GitLab CI/CD, он использует GitLab Runner.
GitLab Runner — это приложение, задачей которого является запуск заданий в конвейере GitLab CI/CD. GitLab Runner можно установить самостоятельно на своей инфраструктуре или воспользоваться общими бегунами, поддерживаемыми GitLab. GitLab предоставляет вам 400 минут в месяц бесплатно. Мы будем использовать Shared Runner, так как они радикально просты в использовании и не требуют настройки для нашего примера. Нам нужно настроить SSH-ключи таким образом, чтобы задания, выполняемые Shared Runner, могли получить доступ к нашему удаленному серверу через SSH-соединение.
Создание SSH-ключа
Вы можете создать новый SSH-ключ в любой среде, даже в локальной. При создании нового SSH-ключа вы получите два ключа: закрытый и открытый. Важно, чтобы у GitLab был закрытый ключ, а у вашего удаленного сервера — открытый. Поэтому не имеет значения, где вы создаете ключи, важно только поделиться ими соответствующим образом с GitLab и удаленным сервером.
У меня есть виртуальная машина linux на Azure, и я буду использовать ее для целей этой статьи. Я создам новый ssh-ключ с помощью виртуальной машины. GitLab рекомендует создать SSH ключ типа ED25519, который является более безопасным, чем RSA. Для создания нового ключа выполните команду ssh-keygen -t ed25519 -C "GitLab SSH key". Текст после опции -C является комментарием, и вы можете его изменить.

Ключ будет создан в директории по умолчанию, которая для linux имеет вид /home/. Не указывайте ключевую фразу, иначе это будет громоздко для конвейера GitLab CI/CD. У вас должно быть два новых файла в каталоге .ssh:
Добавьте закрытый ключ в качестве переменной GitLab
Скопируйте содержимое закрытого ключа и вернитесь в проект GitLab. Перейдите к Settings -> CI/CD -> Variables -> Expand -> Add Variable. Переменная GitLab представляет собой пару ключ-значение. Назовите ключ SSH_PRIVATE_KEY и вставьте закрытый ключ в поле значения. Нажмите Add Variable.
Добавьте еще две переменные:

Добавить открытый ключ для удаленного сервера
Скопируйте содержимое открытого ключа и вернитесь на удаленный сервер. Войдите под тем же пользователем, которого вы указали в переменной SSH_USER GitLab. Если у вас еще нет такого пользователя, самое время его создать.
Перейдите в каталог /home/. Если каталог .ssh не существует, то создайте его. Вставьте открытый ключ в файл authorized_keys. Если у вас нет файла authorized_keys, создайте его. Вот скриншот с моей VM (который я удалил перед публикацией, так что теперь он бесполезен).

Создание и запуск конвейера GitLab CI/CD
Пришло время создать CI/CD конвейер GitLab. Мы хотим достичь двух целей с помощью SSH: записать имя хоста удаленного сервера и создать файл примера в домашней директории пользователя.
Конвейер определен в .gitlab-ci.yml, и у нас есть два варианта создания/редактирования:
- Непосредственно в проекте GitLab в веб-браузере, мы можем редактировать
.gitlab-ci.ymlи фиксировать изменения. - Клонировать репозиторий, отредактировать
.gitlab-ci.ymlв вашем любимом редакторе кода, зафиксировать изменения и отправить в GitLab.
Я выберу вариант номер 2, это более правильный способ работы с .gitlab-ci.yml.
Вы можете клонировать репозиторий с помощью команды git clone и адреса репозитория, который вы можете найти в репозитории GitLab, нажав кнопку Clone.
После клонирования откройте уже существующий .gitlab-ci.yml, который был создан как часть шаблона Pages/Plain HTML.
Оригинальный .gitlab-ci.yml:
image: alpine:latest
pages:
stage: deploy
script:
- echo 'Nothing to do...'
artifacts:
paths:
- public
only:
- master
Нам нужно добавить раздел before_script и обновить раздел script.
Окончательный вариант .gitlab-ci.yml:
image: alpine:latest
pages:
stage: deploy
before_script:
- 'command -v ssh-agent >/dev/null || ( apk add --update openssh )'
- eval $(ssh-agent -s)
- echo "$SSH_PRIVATE_KEY" | tr -d 'r' | ssh-add -
- mkdir -p ~/.ssh
- chmod 700 ~/.ssh
- ssh-keyscan $VM_IPADDRESS >> ~/.ssh/known_hosts
- chmod 644 ~/.ssh/known_hosts
script:
- ssh $SSH_USER@$VM_IPADDRESS "hostname && echo 'Welcome!!!' > welcome.txt"
artifacts:
paths:
- public
only:
- master
.gitlab-ci.yml определяет конвейер. Он использует образ докера alpine:latest для запуска заданий, определенных в трубопроводе. У нас есть только одно задание pages.
Это задание выполняется на этапе: deploy. Мы не определили никаких этапов, но у нас есть 5 этапов по умолчанию: .pre, build, test, deploy, .post. В нашем случае это не имеет значения, так как наш конвейер на данный момент прост и не требует настройки стадий.
Далее у нас есть before_script, который не требует пояснений и будет выполняться перед командой script. Давайте объясним сценарий строка за строкой:
script — это место, где определяется наш фактический код для выполнения. Мы просто хотим вывести имя хоста в журнал заданий, а затем создать файл примера на удаленном хосте.
artifacts указывают, какие артефакты использовать при развертывании. В нашем примере мы его не используем.
only указывает, что задание должно быть запущено только в том случае, если любое изменение будет размещено в ветке master в репозитории.
После внесения изменений нам необходимо зафиксировать их и поместить в хранилище.

Как только изменение будет помещено в ветку master, будет запущен GitLab CI/CD. Перейдите в CI/CD -> Pipelines и вы должны увидеть pipeline в статусе running.

Нажмите на него, а затем нажмите на задание pages, чтобы посмотреть журналы.

Работа должна завершиться быстро, в моем случае это заняло 16 секунд. Последняя строка показывает, что задание было выполнено успешно. В строке 51 показана часть script из .gitlab-ci.yml, а в строке 52 мы видим имя хоста удаленного сервера, что является именно тем, чего мы хотели добиться. Проверьте ваш удаленный сервер, вы найдете там welcome.txt.
Вот и все! Мы успешно создали новый проект GitLab, настроили SSH-соединение с удаленным сервером и создали простой конвейер GitLab CI/CD для запуска скрипта через SSH на удаленном сервере.
Спасибо за прочтение.
Источник: https://codertime.ru/blog-ru/gitlab-ci-pipeline-zapusk-stsenariya-cherez-ssh-na-udalennom-servere/
|
Когда вы думаете о развертывании на удаленном сервере, SSH — первый сетевой протокол, который приходит вам на ум. Добавив его поверх GitLab CI/CD, вы сможете воспользоваться преимуществами автоматизации. Чтобы использовать GitLab CI/CD pipeline вместе с SSH-соединениями, необходимо сначала настроить GitLab, и я хотел бы показать вам, как настроить его и запустить простой скрипт. |
РэдЛайн, создание сайта, заказать сайт, разработка сайтов, реклама в Интернете, продвижение, маркетинговые исследования, дизайн студия, веб дизайн, раскрутка сайта, создать сайт компании, сделать сайт, создание сайтов, изготовление сайта, обслуживание сайтов, изготовление сайтов, заказать интернет сайт, создать сайт, изготовить сайт, разработка сайта, web студия, создание веб сайта, поддержка сайта, сайт на заказ, сопровождение сайта, дизайн сайта, сайт под ключ, заказ сайта, реклама сайта, хостинг, регистрация доменов, хабаровск, краснодар, москва, комсомольск |
Дайджест новых статей по интернет-маркетингу на ваш email
Новые статьи и публикации
- 2025-12-02 » Когда ошибка молчит: как бессмысленные сообщения ломают пользовательский опыт
- 2025-12-02 » 9 лучших бесплатных фотостоков
- 2025-12-02 » UTM-метки: ключевой инструмент аналитики для маркетолога
- 2025-12-02 » ПромоСтраницы Яндекса: Что такое и для чего служит
- 2025-12-02 » Метатеги для сайта: исчерпывающее руководство по Title, Description, Canonical, Robots и другим тегам
- 2025-11-26 » Оценка эффективности контента: превращаем информационный балласт в рабочий актив
- 2025-11-26 » 10 причин высокого показателя отказов на сайте
- 2025-11-26 » Когда и зачем обновлять структуру сайта
- 2025-11-26 » Скрытые демотиваторы: как мелочи разрушают эффективность команды
- 2025-11-26 » Зачем запускать MVP и как сделать это грамотно?
- 2025-11-20 » Половина российских компаний сократит расходы на транспорт и маркетинг в 2026 году
- 2025-11-20 » Перенос сайта с большим количеством ссылок
- 2025-11-20 » Перелинковка сайта: Что такое и как ее использовать
- 2025-11-20 » Критерии выбора SEO-специалиста и подрядчика для продвижения сайта
- 2025-11-20 » Применение искусственного интеллекта в рекламных агентствах: комплексное исследование трендов 2025 года
- 2025-11-19 » Геозапросы по-новому: как покорить локальное SEO с помощью ИИ
- 2025-11-14 » Консалтинг: сущность и ключевые направления
- 2025-11-14 » Онлайн-формы: универсальный инструмент для сбора обратной связи
- 2025-11-14 » Факторы конверсии органического трафика
- 2025-11-14 » Планирование рекламного бюджета: самостоятельный подход
- 2025-11-14 » Авторизация на сайте: как выбрать решение для удержания клиентов и сохранения продаж
- 2025-11-13 » Эффективные методы стимулирования клиентов к оставлению положительных отзывов
- 2025-11-13 » Налоговая реформа — 2026: грядущие изменения для предпринимателей
- 2025-11-13 » Альтернативы мессенджерам: что выбрать вместо Telegram и WhatsApp
- 2025-11-13 » Маркировка рекламы для начинающих: полное руководство по требованиям ЕРИР
- 2025-11-13 » ИИ не отберет вашу работу — её займет специалист, владеющий искусственным интеллектом
- 2025-10-29 » Как оценить эффективность работы SEO-специалиста: практическое руководство для маркетологов и владельцев бизнеса
- 2025-10-29 » Киберспорт как маркетинговый инструмент: стратегии привлечения геймеров
- 2025-10-29 » Как говорить с аудиторией о сложном
- 2025-10-29 » Что такое доказательства с нулевым разглашением (ZKP) и их роль в блокчейне
Кто мало хочет, тот дешево стоит |
Мы создаем сайты, которые работают! Профессионально обслуживаем и продвигаем их , а также по всей России и ближнему зарубежью с 2006 года!
Как мы работаем
Заявка
Позвоните или оставьте заявку на сайте.
Консультация
Обсуждаем что именно Вам нужно и помогаем определить как это лучше сделать!
Договор
Заключаем договор на оказание услуг, в котором прописаны условия и обязанности обеих сторон.
Выполнение работ
Непосредственно оказание требующихся услуг и работ по вашему заданию.
Поддержка
Сдача выполненых работ, последующие корректировки и поддержка при необходимости.


Мы создаем практически любые сайты от продающих страниц до сложных, высоконагруженных и нестандартных веб приложений! Наши сайты это надежные маркетинговые инструменты для успеха Вашего бизнеса и увеличения вашей прибыли! Мы делаем красивые и максимально эффектные сайты по доступным ценам уже много лет!
Комплексный подход это не просто продвижение сайта, это целый комплекс мероприятий, который определяется целями и задачами поставленными перед сайтом и организацией, которая за этим стоит. Время однобоких методов в продвижении сайтов уже прошло, конкуренция слишком высока, чтобы была возможность расслабиться и получать \ удерживать клиентов из Интернета, просто сделав сайт и не занимаясь им...
Мы оказываем полный комплекс услуг по сопровождению сайта: информационному и техническому обслуживанию и развитию Интернет сайтов.
Контекстная реклама - это эффективный инструмент в интернет маркетинге, целью которого является увеличение продаж. Главный плюс контекстной рекламы заключается в том, что она работает избирательно.