Gogs: легкий git-сервіс



У числі найбільш обговорюваних останніх новин в співтоваристві розробників були нові тарифи GitHub (див., наприклад, тут).

Звичайно, у нових тарифів є свої переваги, але з нинішнім курсом долара їх навряд чи можна назвати вигідними для російських користувачів.

Деякі вдаються до альтернативного рішення і розгортають GitLab (або інший git-сервіс) на власному чи орендованому сервері.

Але й у цього рішення є свої підводні камені: GitLab дуже вимогливий до системних ресурсів. Для приватних осіб набагато простіше платити 7 доларів в місяць за GitHub, ніж орендувати сервер належної конфігурації.

Зі сказаного, однак, не випливає, що у GitHub на сьогоднішній день альтернативи немає. Про один досить цікавий і перспективний рішенні ми хотіли б розповісти в цій статті. Знайомтеся: Gogs. Цей інструмент буде цікавий як для індивідуальних розробників, так і для невеликих компаній.


Загальна інформація



Gogs — продукт китайських розробників. На перший погляд він майже нічим не відрізняється від GitHub або BitBucket — це навіть по дизайну помітно.
Але при всіх зовнішніх подібності у нього є одне вигідну відміну від існуючих аналогів: легковажність.

Gogs написаний на Go (власне, це назва являє собою скорочення від Go Git Service). Із цього факту випливають серйозні переваги: низькі вимоги до системних ресурсів, мінімум залежностей, простота установки і налаштування.

У числі найважливіших характеристик Gogs також слід назвати:
  • підтримка протоколів HTTP(s) і SSH;
  • підтримку SMTP і LDAP;
  • можливість створення як приватних, так і публічних репозиторіїв;
  • інтеграцію з соціальними мережами (поки що підтримуються GitHub, Google+, а також китайські сервіси QQ і Weibo);
  • можливість роботи в зв'язці з сервісами безперервної інтеграції і DevOps-сервісами (докладний список).
Просування Gogs на міжнародному ринку почалося наприкінці 2014 — початку 2015 року. Навесні 2015 року з'явилися перші статті про нього на західних сайтах, що також сприяло популяризації продукту. Але говорити про повноцінну конкуренцію з GitHub і GitLab було ще рано: у Gogs навіть підтримки пулл-реквестов не було, не кажучи вже про інших важливих функціях.

В кінці 2015 року після більш ніж піврічної перерви вийшла в світ нова версія продукту. В ній було реалізовано безліч нововведень, найважливішими з яких є, звичайно ж, підтримка пулл-реквестов і можливість створення вікі-сторінок для проектів.
Дизайн Gogs також був помітно поліпшено, а інтерфейс перевели на 18 мов, включаючи російську.

Gogs, GitHub і GitLab



Порівняємо Gogs з іншими інструментами аналогічного плану. Результати порівняння для наочності представимо у вигляді таблиці:

Характеристика Gogs GitHub GitLab
Баг-трекер + + +
Підтримка облікових записів організацій + + +
Wiki + + +
Рев'ю коду - + +
Фрагменти коду - + +
Веб-хуки + + +
Гіт-хуки + тільки в enterprise-версії тільки в enterprise-версії
Підтримка LDAP + + +
Синхронізація груп LDAP - тільки в enterprise-версії тільки в enterprise-версії


Установка Gogs



Розглянемо процедуру встановлення та первинної настройки на прикладі OC Ubuntu 16.04. В якості СУБД візьмемо звичний MySQL.

Встановимо MySQL:
$ sudo apt-get update
$ sudo apt-get install -y mysql-server

Після цього створіть файл gogs.sql:
$ nano gogs.sql

Додайте в нього наступні рядки:
DROP DATABASE IF EXISTS gogs;
CREATE DATABASE IF NOT EXISTS gogs CHARACTER SET utf8 COLLATE utf8_general_ci;

Збережіть внесені зміни і виконайте:
$ mysql -u root -p [пароль користувача root]< gogs.sql

Щоб встановити gogs з исходников, вам знадобляться також системи контролю версій git і mercurial:
$ sudo apt-get install git, mercurial

Далі вам потрібно буде встановити компілятор Go. Відкрийте файл /.bashrc і додайте в нього наступні рядки:
export GOPATH=/home/git/go
export GOROOT=/usr/local/src/go
export PATH=${PATH}:$GOROOT/bin

Збережіть зміни і виконайте:
$ source ~/.bashrc

Після цього встановити компілятор Go:
$ wget https://storage.googleapis.com/golang/go1.4.2.linux-amd64.tar.gz
$ tar zxf go1.4.2.linux-amd64.tar.gz
$ sudo mv go $GOROOT

Всі необхідні залежності встановлені. Можна встановлювати Gogs:
$ go get -d github.com/gogits/gogs
$ cd $GOPATH/src/github.com/gogits/gogs
$ go build 

По завершенні установки потрібно налаштувати запуск Gogs як служби. Для цього вам потрібно просто додати до /etc/system/systemd файл gogs.service (шаблон тут) і виконати після цього наступні команди:.
$ sudo systemctl enable gogs
$ sudo systemtctl start gogs


Якщо все зроблено правильно, то по завершенні установки сторінка налаштування Gogs буде доступна за адресою http:// [IP-адреса сервера]:3000. Вся подальша настройка здійснюється через графічний інтерфейс; там все досить просто і інтуїтивно зрозуміло. Якщо ви плануєте прив'язати до сервера з Gogs домен, вам буде потрібно також встановити Nginx і налаштувати його в якості зворотного проксі (детальніше офіційній документації).

У процедурі встановлення Gogs нічого складного немає. Але якщо ви є користувачем нашого сервісу Vscale (до речі, відмінний привід їм стати), то все можна зробити ще простіше: зовсім нещодавно ми додали в панель керування відповідний образ. Один клік ― і віртуальна машина з вже встановленим і налаштованим Gogs створена і готова до використання:

image

Як тільки сервер буде створений, відкрийте в браузері сторінку http://[IP-адреса сервера]. Нічого налаштовувати додатково не потрібно: все вже прописано в шаблоні і готове до роботи.
Увійдіть у Gogs за допомогою логіна і пароля, отриманих при установці.

Gogs в роботі



Працювати з Gogs просто. Якщо у вас є досвід роботи з GitHub, то ви без праці у всьому розберетеся. Для початківців користувачів в панелі управління наводяться докладні шпаргалки.
Наведемо элементраный приклад. Створимо через графічний інтерфейс тестовий репозиторій.
Після цього клонируем його на локальну машину:
$ git clone http://[IP-адреса сервера]/root/test.git

Внесемо невеликі зміни в файл README.md:
$ echo 'Test' >> README.md

Закоммитим внесені зміни:
$ git add --all && git commit -m "init commit" && git push origin master

Вам буде запропоновано ввести логін і пароль користувача Gogs. Після цього комміт буде доданий в репозиторій. В панелі управління-все це виглядає так:



Висновок



Ми спробували попрацювати з Gogs – і залишилися цілком задоволені. У продукту китайських розробників перспективи є, і непогані. За останній рік (а в перший раз ми познайомилися з Gogs на початку 2015 року) була виконана величезна робота по його удосконаленню, і ми сподіваємося, що вона буде продовжена в майбутньому.

Gogs вже зараз є цілком гідною альтернативою GitHub і GitLab.В плані споживання системних ресурсів він набагато економічніше, ніж будь аналогічних рішень. Як стверджують розробники в своєму блозі, його можна встановити навіть на RaspberryPi. Не знаємо, як щодо RaspberryPi, але на віртуальному сервері самої простої конфігурації Vscale Gogs працює цілком стабільно на невеликій кількості репозиторіїв. Запрошуємо всіх спробувати і оцінити. Якщо у вас вже є досвід роботи з Gogs — будемо раді, якщо ви поділитеся нею в коментарях.

Спеціально для тих, хто хоче отримати готовий налаштований git-сервіс, але при цьому віддає перевагу більш традиційні і вже зарекомендували себе рішення, ми додали образ з GitLab. Відразу ж зазначимо, що для самих бюджетних і популярних тарифів він недоступний: GitLab споживає занадто багато системних ресурсів, і сервери «молодших» конфігурацій його просто-напросто не потягнуть.

Користуючись нагодою, ми хотіли б обговорити ще одну важливу тему. Сьогодні деякі VPS-провайдери пропонують образи з попередньо встановленим ПЗ. У нас в Vscale, наприклад, вже є: Ajenti, VestaCP, WordPress, Docker, GitLab і Gogs. Цей список ми плануємо значно розширити.
У зв'язку з цим — питання до всіх користувачів VPS: які образи з встановленим ПЗ вам потрібні? Що ще, крім стандартних CMS і панелей управління хостингом, ви б хотіли бачити у вашого провайдера? Якщо чогось немає, прохання ділитися в коментарях.

Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.