Введение в непрерывную поставку (cd) при помощи gitlab

Принцип работы

RDPl основан на протоколе TCP. Порядок его работы в общих чертах выглядит так:

  1. Устанавливается соединение на транспортном узле.
  2. Происходит инициализация сессии, определяется порядок передачи данных.
  3. Сервер начинает передавать клиенту графический вывод. В ответ он ожидает, что пользователь введет входные данные.

Приоритетный способ — передача вывода графическими примитивами: прямоугольниками, линиями, текстами, эллипсами и так далее. Это позволяет экономить трафик. Если договориться о параметрах передачи примитивов не удалось, то клиенту передается изображение графического экрана.

RDP-клиент обрабатывает команды от сервера терминалов и использует собственную графическую подсистему для для вывода изображения. Пользовательский ввод передается благодаря скан-кодам. Сигналы нажатий и отпусканий кнопок передаются отдельно с помощью специального флага.

Remote Desktop Protocol поддерживает несколько виртуальных каналов внутри одной сессии. Это дает доступ к дополнительным возможностям для управления. Можно использовать принтер или порты, перенаправлять файловую систему, работать с единым буфером, использовать подсистему аудио для передачи звука.

Настройка автоматической аутентификации GitHub

Git можно настроить так, чтобы не приходилось каждый раз вводить имя пользователя и пароль каждый раз при внесении изменений в GitHub. Как настроить можно почитать по ссылкам:

  • Set up Git
  • Generating a new SSH key and adding it to the ssh-agent
  • Adding a new SSH key to your GitHub account
  • Associating text editors with Git

Чтобы настройки вступили в силу терминал нужно перезапустить.

Note: GitHub и Git — это разные вещи. Git обеспечивает распределенный контроль версий. GitHub — это платформа, которая помогает управлять проектами Git. GitHub также предоставляет графический интерфейс, который позволяет выполнять множество команд Git.

Шаг 5 — Начальная настройка конфигурации через веб-интерфейс

Когда GitLab работает, и доступ разрешен, мы можем выполнить начальную настройку конфигурации приложения через веб-интерфейс.

Первый вход в систему

Откройте доменное имя вашего сервера GitLab в вашем браузере:

При первом входе откроется диалоговое окно установки пароля для учетной записи администратора:

В начальном диалоговом окне ввода пароля укажите и подтвердите защищенный пароль для административной учетной записи. Нажмите кнопку Change your password (Изменить пароль), когда будете готовы.

После этого вы перейдете на стандартную страницу входа в систему GitLab:

Здесь вы можете войти в систему с помощью только что заданного пароля. Учетные данные:

  • Имя пользователя: root
  • Пароль:

Введите эти значения в поля для существующих пользователей и нажмите кнопку Sign in (Вход). После входа в приложение откроется начальная страница, куда вы сможете добавлять проекты:

Теперь вы можете внести простые изменения и настроить GitLab желаемым образом.

Изменение настроек профиля

Одной из первых задач после установки должна стать настройка профиля. GitLab использует разумные значения по умолчанию, но обычно после начала использования программного обеспечения их требуется изменить.

Чтобы внести необходимые изменения, нажмите значок пользователя в правом верхнем углу интерфейса. Выберите пункт Settings (Настройки) в выпадающем меню:

Откроется раздел настроек Profile (Профиль):

Измените имя и адрес электронной почты с Administrator и admin@example.com на более подходящие значения. Введенное имя будет отображаться другим пользователям, а адрес электронной почты будет использоваться для определения аватара по умолчанию, отправки уведомлений, в действиях Git через интерфейс и т. д.

После завершения настройки нажмите кнопку Update Profile settings (Обновить настройки профиля):

На указанный адрес электронной почты будет отправлено письмо с подтверждением. Следуйте указаниям в письме, чтобы подтвердить учетную запись и начать ее использовать с GitLab.

Изменение имени учетной записи

Нажмите Account (Учетная запись) в левой панели меню:

Здесь вы можете найти свой частный токен API или настроить двухфакторную аутентификацию. Однако пока что нас интересует раздел Change username (Изменить имя пользователя).

По умолчанию первой административной учетной записи присваивается имя root. Поскольку это имя широко известно, безопаснее заменить его другим именем. Изменится только имя учетной записи, права администратора у вас сохранятся. Замените root предпочитаемым именем пользователя:

Нажмите кнопку Update username (Обновить имя пользователя), чтобы внести изменения:

При следующем входе в GitLab обязательно используйте новое имя пользователя.

Добавление ключа SSH для своей учетной записи

В большинстве случаев вы захотите использовать с Git ключи SSH для взаимодействия с проектами GitLab. Для этого вам нужно добавить свой открытый ключ SSH в учетную запись GitLab.

Если вы уже создали на локальном компьютере пару ключей SSH, вы можете просмотреть открытый ключ с помощью следующей команды:

Вы увидите большой блок текста, выглядящий примерно так:

Скопируйте этот текст и вернитесь на страницу настройки профиля в веб-интерфейсе GitLab.

Если вместо этого вы получите сообщение, выглядящее следующим образом, это будет означать, что на вашем компьютере не настроена пара ключей SSH:

В этом случае вы можете создать пару ключей SSH, для чего нужно ввести следующую команду:

Примите параметры по умолчанию, а при желании укажите пароль для локальной защиты ключа:

После этого вы сможете просматривать свой открытый ключ с помощью следующей команды:

Скопируйте отображаемый блок текста и вернитесь в настройки профиля в веб-интерфейсе GitLab.

Нажмите пункт SSH Keys (Ключи SSH) в левом меню:

Вставьте в указанное место открытый ключ, скопированный с локального компьютера. Присвойте ему описательное название и нажмите кнопку Add key (Добавить ключ):

Теперь вы должны иметь возможность управлять проектами и хранилищами GitLab с локального компьютера без ввода учетных данных GitLab.

Установка сервера Nginx с сертификатом Let’s Encrypt

Мы будем использовать установку GitLab CE, которая работает за сервером Nginx, который будет выполнять обратное проксирование и осуществлять обработку SSL-трафика. Для настройки базового сервера воспользуйтесь руководством из списка ниже, подходящим для вашей операционной системы.

Настройка балансирующего прокси Nginx с сертификатом Let’s Encrypt в CentOS 7.

Настройка балансирующего прокси Nginx с сертификатом Let’s Encrypt в Debian 9 Stretch.

Настройка балансирующего прокси Nginx с сертификатом Let’s Encrypt в Ubuntu 18.04 Bionic

На данный момент у вас должен быть развернут сервер с Nginx и сертификатом Let’s Encrypt. Теперь установим GitLab CE.

Разрешение для симптома 4

Важно!

В этот раздел, описание метода или задачи включены действия, содержащие указания по изменению параметров реестра. Однако неправильное изменение параметров реестра может привести к возникновению серьезных проблем. Поэтому следует в точности выполнять приведенные инструкции. Для дополнительной защиты создайте резервную копию реестра, прежде чем редактировать его. Так вы сможете восстановить реестр, если возникнет проблема. Дополнительные сведения о том, как создать и восстановить реестр, см. в 322756 Как создать и восстановить реестр в Windows.

Чтобы устранить эту проблему, повторите работу и удалите ключи реестра сертификатов X509, перезапустите компьютер, а затем активируете сервер лицензирования удаленных настольных служб. Для этого выполните указанные ниже действия.

Примечание

Выполните следующую процедуру на каждом из серверов удаленного рабочего стола.

  1. Убедитесь, что реестр серверов удаленного рабочего стола был успешно отла

  2. Откройте редактор реестра.

  3. Найдите и откройте следующий подраздел реестра:

  4. В меню реестра щелкните Файл реестра экспорта.

  5. Введите экспортируемого сертификата в поле имя файла, а затем нажмите кнопку *Сохранить.

    Примечание

    Если в будущем необходимо восстановить этот файл реестра, дважды щелкните файл Exported-parameters.reg, сохраненный на этом шаге.

  6. Щелкните правой кнопкой мыши каждое из следующих значений, щелкните Удалить, а затем нажмите кнопку Да, чтобы проверить удаление:

    • Сертификат
    • Сертификат X509
    • Удостоверение сертификата X509
    • Сертификат X5092
  7. Редактор exit Registry, а затем перезапустите сервер.

Установите Remmina в Linux

Remmina часто является приложением для удаленного рабочего стола по умолчанию во многих дистрибутивах Linux из-за количества поддерживаемых протоколов. С учетом сказанного, не во всех ОС она настроена по умолчанию, поэтому нам нужно обсудить, как настроить программу, прежде чем продолжить работу с руководством.

Чтобы установить приложение удаленного рабочего стола Remmina на ПК с Linux, запустите терминал и следуйте инструкциям, которые соответствуют используемой вами ОС.

Ubuntu

Вам нужно запустить Remmina на вашем ПК с Ubuntu? Найдите «Remmina» в центре программного обеспечения Ubuntu и нажмите «Установить». Или введите команду терминала ниже.

sudo apt install remmina

Debian

Приложение удаленного рабочего стола Remmina доступно в Debian и может быть установлено с Apt-get команда. Имейте в виду, что версия, доступная в источниках программного обеспечения Debian, скорее всего, устарела.

Примечание. Если вам нужна самая новая версия, следуйте нашему руководству о том, как получить новое программное обеспечение в Debian Linux.

sudo apt-get install remmina

Arch Linux

Remmina доступна в репозитории программного обеспечения «Сообщество» в Arch Linux. Если у вас не включен этот источник программного обеспечения, сделайте следующее.

Шаг 1: Открой свой pacman.conf файл в текстовом редакторе Nano.

sudo nano /etc/pacman.conf

Шаг 2: Прокрутите файл Pacman.conf и найдите «Сообщество». Удалите символ # перед ним. Не забудьте также удалить символ # из двух строк прямо под ним.

Шаг 3: Сохраните изменения с помощью Ctrl + O комбинация клавиш.

Шаг 4: Выйдите из Nano, нажав Ctrl + X и вернитесь в интерфейс командной строки терминала.

Шаг 5: Используя команду Pacman, повторно синхронизируйте свой компьютер с исходными кодами программного обеспечения Arch Linux и настройте «Сообщество».

sudo pacman -Syy

Шаг 6: Установите приложение удаленного рабочего стола Remmina с Pacman.

sudo pacman -S remmina

Fedora

Remmina легко доступна для пользователей Fedora Linux и относительно актуальна из-за того, как часто Fedora обновляет пакеты в своем репозитории программного обеспечения.

Чтобы установить программу на свой компьютер с Fedora, используйте DNF пакетный инструмент.

sudo dnf install remmina -y

OpenSUSE

Чтобы получить приложение подключения к удаленному рабочему столу Remmina на OpenSUSE, вы должны использовать Zypper команда.

Имейте в виду, что, поскольку существует несколько различных выпусков OpenSUSE, новинка Remmina может отличаться.

sudo zypper install remmina

Примечание: Если у вас должна быть последняя и самая лучшая версия приложения для удаленного рабочего стола Remmina, попробуйте вместо этого инструкции Flatpak или Snap.

Flatpak

Remmina доступна на Flathub в формате Flatpak. Чтобы установить его, вы должны сначала настроить среду выполнения Flatpak на своем ПК. Следуйте нашему руководству по этому вопросу, чтобы узнать больше.

После того, как вы запустили среду выполнения Flatpak, введите следующие команды, чтобы настроить Remmina.

flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo

flatpak install flathub org.remmina.Remmina

flatpak run org.remmina.Remmina

Пакет Snap

Приложение Remmina поддерживает пакеты Snap.

Если вы хотите использовать Snap-версию Remmina, следуйте нашему руководству, чтобы узнать, как настроить Snap на своем ПК. Затем введите команду ниже, чтобы она заработала.

sudo snap install remmina

Шаг 6 — Ограничение или отключение открытого входа в систему (опционально)

Возможно на начальной странице GitLab вы заметили, что зарегистрировать учетную запись может кто угодно. Если вы собираетесь разместить публичный проект, эта возможность будет полезна. Однако в большинстве случаев желательны более строгие ограничения.

Прежде всего, откройте область администрирования. Для этого нажмите значок гаечного ключа на панели меню вверху страницы:

На следующей странице вы увидите обзор своего экземпляра GitLab. Для изменения настройки нажмите Settings (Настройки) в нижней части левого меню:

Вы перейдете в раздел глобальных настроек для вашего экземпляра GitLab. Здесь вы можете изменить ряд настроек, влияющих на возможность регистрации новых пользователей и их уровень доступа.

Отключение регистрации

Если вы хотите полностью отключить регистрацию (вы все равно сможете сами создавать учетные записи для новых пользователей), прокрутите страницу до раздела Sign-up Restrictions (Ограничения регистрации).

Уберите отметку из поля Sign-up enabled (Регистрация разрешена):

Прокрутите страницу до конца и нажмите кнопку Save changes (Сохранить изменения):

Теперь на начальной странице GitLab не должен отображаться раздел регистрации.

Ограничение регистрации по домену

Если вы используете GitLab в организации, предоставляющей адреса электронной почты в определенном домене, вы можете разрешить регистрацию только для этого домена, а не отключать ее полностью.

Затем добавьте свой домен или домены в поле Whitelisted domains for sign-ups (Белый список доменов для регистрации). В каждой строке можно указать только один домен. Вы можете использовать звездочку (*) как подстановочный символ в именах доменов:

Прокрутите страницу до конца и нажмите кнопку Save changes (Сохранить изменения):

Теперь на начальной странице GitLab не должен отображаться раздел регистрации.

Ограничение создания проектов

По умолчанию новые пользователи могут создавать до 10 проектов. Если вы хотите разрешить новым пользователям видеть данные и участвовать в проектах, но при этом ограничить им возможность создания новых проектов, вы можете использовать для этой цели раздел Account and Limit Settings (Настройки учетных записей и ограничений).

Вы можете установить для параметра Default projects limit (Лимит проектов по умолчанию) значение 0, чтобы полностью запретить новым пользователям создавать проекты:

Новых пользователей можно будет добавлять в проекты вручную, и у них будет доступ к внутренним или публичным проектам, созданным другими пользователями.

Прокрутите страницу до конца и нажмите кнопку Save changes (Сохранить изменения):

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

Обновление сертификатов Let’s Encrypt

По умолчанию в GitLab имеется запланированная задача обновления сертификатов Let’s Encrypt каждые четыре дня после полуночи, точное время зависит от параметра . Вы можете изменить эти настройки в файле . Например, если вы хотите выполнять обновление каждый 7-й день в 12:30, вы можете задать это следующим образом:

/etc/gitlab/gitlab.rb

Автоматическое обновление можно отключить, добавив соответствующий параметр в :

/etc/gitlab/gitlab.rb

Когда автоматическое обновление включено, вам не нужно беспокоиться о перебоях в обслуживании.

СОЗДАНИЕ НОВОГО ПРОЕКТА/РЕПОЗИТОРИЯ

Чтобы создать новый проект нажмите «+», который находится на верхней панели и нажмите «новый проект» («new project»):

Далее нужно дать имя и краткое описание проекту, а также доступ:
— private — проект будет доступен исключительно вам (и тем, кому вы лично предоставите доступ),
— internal — доступ для всех пользователей gitlab,
— public — доступ открыт всем

Если поставить галочку напротив «Initialize repository with README», то проект инициализируется и создается файл README.txt. Делать это здесь не обязательно!

После заполнения полей, подтверждаем действие нажатием «Create repo», после чего попадаем на страницу репозитория. На этой странице можно создать файлы или подгрузить их со своего компьютера.

Дополнительно

Дополнительная информация, которая может быть полезна.

Запуск runner внутри контейнера Docker

Выше мы рассмотрели регистрацию раннера, который будет запускать выполнение команд в системной оболочке (shell). Но если мы хотим, чтобы задания pipeline выполнялись внутри контейнера Docker, то пошагово мы должны сделать следующее:

1. При регистрации раннера на последнем этапе, где предлагается выбрать средство запуска (Enter an executor), выбираем docker:


Enter an executor: parallels, virtualbox, docker+machine, docker-ssh+machine, kubernetes, custom, docker, docker-ssh, shell, ssh:docker

2. При написании pipeline мы должны добавить опцию image с указанием образа, который хотим использовать:


copy:
  stage: copy
  image: dmosk/ubuntu:latest

3. По умолчанию, runner всегда будет пытаться скачать образ Docker с внешнего источника. Если на целевом компьютере, где запускается runner у нас уже есть нужный образ и мы хотим, чтобы использовался именно он, открываем файл:

vi /etc/gitlab-runner/config.toml

Среди:

`runners`

… находим созданный раннер (определяем по описанию, которое мы задавали при регистрации) и в нем также находим . Добавим опцию pull_policy:

`runners`

  
    …
    pull_policy = «if-not-present»

Перезапустим сервис:

systemctl restart gitlab-runner

¶ Клонирование репозитория

Для получения копии существующего Git-репозитория необходимо ввести в терминале команду .

Клонирование репозитория осуществляется командой:

После вы должны ввести имя пользователя и пароль от своей учетной записи в GitLab.

Вы можете в любой момент перейти к папке с вашим репозиторием с помощью команды:

Следующая команда показывает, что файл «README.md» скачался и лежит в нашей папке:

клонирование репозитория прошло успешно

Заполнение данных

Если указана опция , то эти настройки достаточно сделать только один раз, поскольку в этом случае Git будет использовать эти данные для всего, что вы делаете в этой системе. Если для каких-то отдельных проектов вы хотите указать другое имя или электронную почту, можно выполнить эту же команду без параметра в каталоге с нужным проектом.

Если вы хотите проверить используемую конфигурацию, можете использовать команду , чтобы показать все настройки, которые Git найдёт:

Добавление файлов в репозиторий

Одной из важнейших команд является . Система отслеживает изменения, и с помощью этой команды мы узнаем о состоянии системы. Если выполнить эту команду сразу после клонирования, то можно увидить что-то вроде этого:

Это означает, что у вас чистый рабочий каталог. Другими словами, в нем нет отслеживаемых измененных файлов. Git также не обнаружил неотслеживаемых файлов, в противном случае они бы были перечислены здесь.

Если у вас уже есть некоторые файлы, которые нужно перенести в репозиторий, вы можете скопировать их в рабочий каталог.

Возможные ошибки

status couldn execute post against certificate signed by unknown authority

Ошибка возникает при попытке зарегистрировать Runner, а при отправке curl-запроса на сервер:

curl https://gitlab.dmosk.ru

… мы получаем сообщение о неправильном сертификате:

curl performs SSL certificate verification by default, using a «bundle»
 of Certificate Authority (CA) public keys (CA certs). If the default
 bundle file isn’t adequate, you can specify an alternate file
 using the —cacert option.
If this HTTPS server uses a certificate signed by a CA represented in
 the bundle, the certificate verification probably failed due to a
 problem with the certificate (it might be expired, or the name might
 not match the domain name in the URL).
If you’d like to turn off curl’s verification of the certificate, use
 the -k (or —insecure) option.

Причина: нужна полная цепочка сертификатов.

Решение: подробнее, процесс настройки https описан в инструкции Правильная настройка SSL в NGINX.

@ERROR: chroot failed

Ошибка появляется при попытке синхронизировать файлы с применением команды rsync.

Причины: 

1. На целевом сервере нет целевого каталога (указан в опции path), в который необходимо синхронизировать данные.

2. Доступ к целевой папке запрещен политикой selinux.

Решение: для обоих причин опишим соответствующие решения.

1. Проверяем наличие каталога, который мы указали в конфигурационном файле /etc/rsyncd.conf (опция path). Если его нет, создаем, например:

mkdir -p /var/www/dmosk/www

2. Для начала пробуем отключить разово selinux:

setenforce 0

Если это решило проблему, либо отключаем его совсем, либо настраиваем командами:

semanage fcontext -a -t rsync_data_t ‘/var/www(/.*)?’

restorecon -Rv ‘/var/www’

setsebool -P rsync_client on

* в данном примере мы разрешам контекст безопасности rsync_data_t для всего содержимого каталога, где находятся наши сайты.

Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями:
Все про сервера
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: