Андрей Смирнов
Время чтения: ~13 мин.
Просмотров: 40

Создание, настройка и использование собственного Git-сервера

22.07.19 в 15:51Новости OTUS

Мы с вами уже говорили про Git и GitHub. В этой статье расскажем о том, что такое GitLab, как им пользоваться, какая настройка потребуется.

GitLab — это онлайн-сервис, предназначенный для работы с git-репозиториями. Его можно использовать непосредственно на официальном сайте (gitlab.com), зарегистрировав аккаунт, или установить и развернуть на своём сервере.

Возможности GitLab

GitLab — это отличный инструмент для разработчиков, который предоставляет следующие возможности: — управление публичными и приватными git-репозиториями; — управление пользователями и группами, правами доступа к git-репозиториям; — отслеживание ошибок, деплой, анализ кода; — интеграция с разными CI-системами CI (Jenkins и т. п.), организация самостоятельного процесса CI посредством встроенных средств.

Есть и другие возможности (функционал api, wiki страниц, доски задач и идей, отслеживание изменений, комментарии к проектам и прочие). Подробнее можно узнать из официальной документации.

GitLab и GitHub

Как известно, главный конкурент GitLab — это сервис GitHub. Появился он на три года раньше (в 2008), поэтому более популярен. Да что там говорить, GitHub сегодня — это сайт номер один по размещению open source-проектов. Они почти все на нём и размещаются.))) И у многих людей Git напрямую ассоциируется с сервисом GitHub.

Да, плюсов у GitHub много, но мы не будем сейчас сравнивать оба сервиса. Скажем только, что несмотря на повышенную популярность и огромнейшее комьюнити GitHub (26 млн. человек), наблюдается тенденция перехода крупных команд разработчиков на GitLab. Это происходит благодаря расширенным возможностям второго.

Как использовать GitLab? Настройка сервиса

1. Создание аккаунта

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

1-20219-e167bb.png

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

2-20219-704610.png

Путём ввода пароля и логина вы окажетесь на главной странице вашего профиля на GitLab. Сначала это будет страница приветствия, но позже здесь появится перечень ваших Git-репозиториев.

2. Создание репозитория

Для добавления проекта GitLab потребуется кликнуть по значку <codeinline>+</codeinline>, который находится в центре верхней панели. Далее нужно выбрать New Project:

3-20219-09cf9c.png

Теперь вводим имя и описание репозитория, выбираем уровень доступа. Их существует три: — Private. Доступен только для вас; — Internal. К репозиторию смогут получить доступ все зарегистрированные пользователи; — Public. Свободный доступ для всех.

Также можно инициализировать репозиторий файлом README, поставив соответствующую галочку. Однако, если планируете залить файлы из уже существующего Git-репозитория, то не стоит этого делать.

4-20219-4ec324.png

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

5-20219-645ff5.png

3. Загрузка файлов проекта

Теперь перейдём к созданию нового локального репозитория на ПК и загрузим содержимое на GitLab. Сначала создадим папку репозитория, назвав её, к примеру, test-repo. Теперь проинициализириуем в ней новый репозиторий, используя команду git:

Теперь создаём файл test.txt:

И фиксируем изменения:

6-20219-36f1e3.png

Сейчас давайте добавим наш удалённый репозиторий с GitLab к нашему локальному, выполнив следующую команду:

Потом отправим изменения в удалённый репозиторий:

7-20219-77dd91.png

Чтобы отправить данные, введём пароль и логин на GitLab. После обновления страницы на GitLab, увидим наш файл:

8-20219-b134dd.png

Кстати, если удалённый репозиторий пустым не является, так сделать не получится. Потребуется сначала его скачать, слить с ним локальные изменения, а только потом отправить всё назад.

4. SSH-ключи

При загрузке данных на GitLab требовалось ввести пароль и логин на сервере. Но есть и другой путь — SSH-ключи для авторизации. Для создания ключа выполните:

9-20219-a6403b.png

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

Потом возвращаемся GitLab-интерфейсу, кликаем по иконке профиля и выбираем настройки Settings:

10-20219-f288df.png

Потом ищем на левой панели пункт SSH Keys. Далее находим Key и вставляем в соответствующее поле скопированный ключ. Всё, осталось лишь сохранить изменения.

11-20219-e52041.png

Теперь возвращаемся в репозиторий, находим кнопку Clone (правый верхний угол) и кликаем по ней. Интересует адрес Clone with SSH:

12-20219-33689b.png

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

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

5. Ветки репозитория

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

Ветки в GitLab-интерфейсе отображаются слева:

13-20219-832802.png

Для создания новой, кликаем по значку <codeinline>+</codeinline> и выбираем New branch. Также, если вы создадите ветку в git, а потом зальёте в репозиторий изменения, ветка появится там автоматически.

14-20219-faae30.png

Если ветку по умолчанию нужно изменить, открываем настройки репозитория (Settings -> Repository), где выбираем нужную ветку в разделе Default branch:

15-20219-d78f21.png

5. Слияние веток

Иногда возникает необходимость выполнить слияние веток. Для этого используют Merge request gitlab — запросы слияния. Продемонстрируем это на ветке new-feature, где создадим файл new-feature с текстом:

Если мы после этого перейдём в новую ветвь с помощью интерфейса GitLab, мы увидим появившуюся кнопку Create merge request. Естественно, нажимаем:

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

Теперь запрос на слияние следует одобрить. Посмотреть изменения можно через терминал или, нажав кнопку Open IDE. Чтобы слить ветки, осталось нажать кнопку Merge.

7. Добавление пользователей

В GitLab можно работать с командой, добавляя неограниченное число разработчиков.

Настройка проста: — открываем Settings ->Members; — в поле Select members to invite вводим никнеймы либо адреса электронной почты тех, кого приглашаем; — в поле Choose a role permission выбираем уровень их доступа; — нажимаем Add to project.

8. Удаление проекта

Настройки для удаления проекта с Gitlab: — открываем Settings -> General -> Advanced; — выбираем и нажимаем Remove Project внизу страницы; — вводим имя проекта, который нужно удалить.

Послесловие

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

При подготовке статьи использовались материалы из следующих источников: https://losst.ru/kak-polzovatsya-gitlab; https://serveradmin.ru/ustanovka-i-nastroyka-gitlab/?pdf=7240.

Автор оригинала: SWAPNIL BHARTIYA

  • Перевод

Материал, перевод которого мы сегодня публикуем, посвящён настройке Git-серверов. Git — это система управления версиями, разработанная Линусом Торвальдсом. Git пользуются миллионы людей во всём мире. Компании, вроде GitHub, предлагают службы хостинга кода, основанные на Git. По информации, которую можно найти в различных публикациях, GitHub является крупнейшим сервисом для хостинга IT-проектов. В частности, в 2017-м году сообщество GitHub достигло 24 миллионов разработчиков, которые трудятся над 67 миллионами репозиториев. В наши дни GitHub пользуются абсолютно все — от программистов-одиночек, до крупных организаций. Надо сказать, что даже компания Google перешла на GitHub, закрыв собственный проект схожей направленности.

<font>Зачем нужен собственный Git-сервер?</font>

GitHub — это замечательный сервис, но, особенно если вы — индивидуальный разработчик или небольшая компания, вы, при работе с GitHub, столкнётесь с некоторыми ограничениями. Одно из них заключается в том, что в бесплатный пакет услуг не входит хостинг приватных репозиториев. За эту возможность придётся заплатить, как минимум, $7 в месяц. В подобных ситуациях, для того, чтобы обойти ограничения, или если вам нужно контролировать то, что происходит с вашими репозиториями, лучше всего создать собственный Git-сервер. Это, с одной стороны, поможет сэкономить, а с другой — даст полный контроль над сервером. Среди продвинутых пользователей Linux весьма распространена практика использования собственных Git-серверов, размещаемых, можно сказать, бесплатно, на уже используемых ими серверах. В этом руководстве мы поговорим о двух подходах к управлению кодовой базой с использованием собственного Git-сервера. Первый заключается в использовании обычного Git-сервера, а второй — в применении инструмента с графическим интерфейсом GitLab. В качестве платформы для экспериментов тут используется сервер на полностью пропатченной Ubuntu 14.04 LTS, развёрнутый на VPS.

<font>Использование Git</font>

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

sudo apt-get install git-core

Затем добавим пользователя для Git:

sudo useradd git passwd git

Для того чтобы упростить доступ к удалённому серверу, настроим вход по ssh без пароля. Создадим ssh-ключи на локальном компьютере:

ssh-keygen -t rsa

Система спросит у вас о том, куда нужно сохранить ключ. Если вас устраивает стандартное место хранения ключа, просто нажмите Enter. Далее вам предложат задать пароль, который будет нужен для доступа к удалённому серверу. Вышеописанная команда генерирует два ключа — открытый и закрытый. Запишите или запомните расположение открытого ключа. Он понадобится нам на следующем шаге. Теперь надо скопировать эти ключи на сервер, что даст возможность наладить канал связи между двумя машинами. На локальном компьютере выполните следующую команду:

cat ~/.ssh/id_rsa.pub | ssh git@remote-server "mkdir -p ~/.ssh && cat >>  ~/.ssh/authorized_keys"

Теперь подключитесь по ssh к серверу и создайте директорию проекта для Git. Для репозитория можно использовать любую папку, которая покажется вам подходящей:

git@server:~ $ mkdir -p /home/swapnil/project-1.git

Затем перейдите в эту директорию:

cd /home/swapnil/project-1.git

Создайте пустой репозиторий:

git init --bare

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

Initialized empty Git repository in /home/swapnil/project-1.git

Теперь нужно создать Git-репозиторий на локальной машине. Для этого создаём директорию:

mkdir -p /home/swapnil/git/project

Переходим в неё:

cd /home/swapnil/git/project

Далее, создаём в ней файлы проекта, и, оставаясь в ней, инициализируем репозиторий:

git init

Об успешной инициализации репозитория можно судить по такому сообщению:

Initialized empty Git repository in /home/swapnil/git/project

Теперь добавим файлы проекта в репозиторий:

git add .

С этого момента, после добавления в проект новых файлов или после изменения существующих, нужно будет выполнять вышеописанную команду (git add .). Кроме того, нужно будет выполнять команду git commit, задавая сообщения, описывающие коммиты. Выглядит это примерно так:

git commit -m "message" -a [master (root-commit) 57331ee] message  2 files changed, 2 insertions(+)  create mode 100644 GoT.txt  create mode 100644 writing.txt

В нашем случае здесь имеется файл, который называется GoT (в нём лежит текст обзора Game of Thrones), в который внесены некоторые изменения. Изменения внесены и в другой файл. Поэтому при выполнении команды система сообщила о том, какие изменения были внесены в файлы. В вышеописанной команде опция -a означает обработку всех файлов репозитория. Если вы внесли изменения лишь в один файл, можно, вместо опции -a, указать имя этого файла. Например:

git commit -m "message" GoT.txt [master e517b10] message  1 file changed, 1 insertion(+)

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

git remote add origin ssh://git@remote-server/repo->path-on-server..git

Теперь можно отправлять изменения с локальной машины на сервер или загружать данные с сервера, используя, соответственно, опции push или pull:

git push origin master

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

git clone git@remote-server:/home/swapnil/project.git

В данной команде /home/swapnil/project.git — это путь к папке проекта на удалённом сервере, в вашем случае тут будет другой путь. Затем, после клонирования, надо перейти в директорию проекта:

cd /project

У вас, вместо project будет имя другой директории. Теперь можно приступать к работе над проектом, принимать изменения и отправлять их на сервер:

git commit -m 'corrections in GoT.txt story' -a git push origin master

Мы полагаем, что вышеприведённых сведений достаточно для того, чтобы помочь тем, у кого не было опыта работы с Git, приступить к использованию собственного Git-сервера. Если вам нужен некий инструмент с графическим интерфейсом, позволяющий работать с проектом на локальной машине, можно воспользоваться чем-то вроде QGit или GitK для Linux.<font>QGit — графический инструмент для локальной работы с Git-репозиториями</font>

<font>Использование GitLab</font>

Выше мы описали систему, позволяющую организовать совместную работу над проектами с помощью Git, полностью основанную на средствах командной строки. Работать в такой среде, конечно, сложнее, чем с GitHub. По иронии судьбы, хотя GitHub — это крупнейший в мире сервис для хостинга кода, его собственный код закрыт. Это — не опенсорсный проект, то есть, нельзя взять этот код и создать на его основе собственный GitHub. В отличие от чего-то вроде WordPress и Drupal, код GitHub нельзя загрузить и развернуть на собственном сервере. Но, как это обычно бывает в мире опенсорса, проектам с закрытым кодом можно найти замену. В данном случае заменой GitHub может послужить весьма привлекательный опенсорсный проект GitLab. Он позволяет всем желающим разворачивать на собственных серверах нечто подобное GitHub. При этом GitLab можно использовать и для поддержки работы крупной компании или большой команды, и для организации собственного репозитория для небольшого проекта, который пока не готов к тому, чтобы представить его широкой общественности. GitLab задействует бизнес-модель, характерную для опенсорсных проектов. А именно, имеется свободно распространяемая версия ПО, которую все желающие могут разворачивать на своих серверах, и хостинг кода, похожий на GitHub. Свободно распространяемая версия GitLab имеет две редакции — бесплатную Community Edition (Core) и платную Enterprise Edition (существуют её варианты Starter, Premium и Ultimate). Последняя основана на Community Edition, которая отлично масштабируется, и, кроме того, включает в себя некоторые дополнительные возможности, ориентированные на организации. Это немного напоминает позиционирование WordPress.org и WordPress.com. Среди возможностей GitLab можно отметить управление Git-репозиториями, средства обзора кода, наличие системы отслеживания ошибок, ленты активности, поддержку вики-страниц. Здесь имеется и GitLab CI — система непрерывной интеграции. Многие VPS-провайдеры, вроде DigitalOcean, предлагают пользователям дроплеты GitLab. Если вы хотите развернуть GitLab на собственном сервере, вы можете установить эту систему вручную. GitLab предлагает пакет Omnibus для различных операционных систем. Прежде чем установить GitLab, может возникнуть необходимость в настройке почтового SMTP-сервера для того, чтобы система могла отправлять электронную почту. Рекомендовано для этих целей пользоваться Postfix. Поэтому, перед установкой GitLab, установим Postfix:

sudo apt-get install postfix

В процессе установки Postfix система задаст вам несколько вопросов. Не стоит пропускать ответы на них, но если ответы на них не даны, можно перенастроить систему, выполнив следующую команду:

sudo dpkg-reconfigure postfix

После запуска этой команды нужно указать параметр Internet Site и задать почтовый идентификатор для домена, который будет использоваться GitLab. Далее, надо будет указать имя пользователя для Postfix и почтовый адрес. Значения остальных параметров можно не менять. После установки и настройки Postfix можно заняться GitLab. Загрузим свежий пакет отсюда с помощью wget:

wget https://downloads-packages.s3.amazonaws.com/ubuntu-14.04/gitlab_7.9.4-omnibus.1-1_amd64.deb

Теперь установим его:

sudo dpkg -i gitlab_7.9.4-omnibus.1-1_amd64.deb

Настроим и запустим GitLab:

sudo gitlab-ctl reconfigure

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

nano /etc/gitlab/gitlab.rb

В этом файле надо будет отредактировать параметр external_url, указав здесь доменное имя сервера. После редактирования файла его надо сохранить, после чего только что созданный GitLab-сайт можно открыть в браузере.<font>Сайт GitLab, открытый в браузере</font> По умолчанию система создаёт учётную запись администратора с именем root и паролем 5iveL!fe. Сразу после первого входа на сайт следует поменять пароль.<font>Смена пароля на сайте GitLab</font> После того, как пароль изменён, можно войти на сайт и заняться работой с проектами.<font>Работа с проектами в GitLab</font> GitLab — это серьёзная система, имеющая массу возможностей. Как в них разобраться? Позволим себе привести тут несколько изменённую цитату из фильма «Матрица»: «Увы, невозможно рассказать о том, что умеет GitLab. Вы должны увидеть это сами».Уважаемые читатели! Пользуетесь ли вы собственными Git-серверами? Если да — просим рассказать о том, как вы их настраиваете и поддерживаете.Используемые источники:

  • https://otus.ru/nest/post/864/
  • https://habr.com/post/359216/

Рейтинг автора
5
Подборку подготовил
Максим Уваров
Наш эксперт
Написано статей
171
Ссылка на основную публикацию
Похожие публикации