天天看點

Gogs:可能是比Gitlab更好的選擇

譯者注:看到一篇介紹能簡單自建git托管服務的項目—— Gogs ——的文章,感覺這個項目很棒,翻譯給大家參考一下。

這個項目的四位主要開發者都是中國人,該項目今天蟬聯 GitHub Go 語言 Trending 第一。(づ ̄3 ̄)づ莫名的自豪感油然而生。希望能有更多優秀的國産項目出現~
Gitlab

是一個很棒的Git托管服務,幾乎像

GitHub

一樣強大。 但是,有沒有能和Gitlab/Github媲美但操作更簡單的項目呢?我認為

Gogs

是很好的選擇。

簡介

現在,GitHub已經成為首選的代碼托管平台。 因為它又很多很棒的功能,操作簡單,幾乎所有的開發者都喜歡它。

同時,

谷歌的代碼托管項目準備關閉

,你可以把項目轉移到這裡。

但如果你在寫Android應用程式,或者正在建立下一個偉大的iOS遊戲,或者不想讓别人看到你的代碼沒,該怎麼辦?

你當然可以購買私人GitHub庫,但你肯定更想把資金投資到更緊迫的事情上。

這就是 Gitlab 和 Gogs 這樣的軟體誕生的原因。

他們提供的服務和GitHub非常相似,不同的是,你可以把項目放在你自己的伺服器上,甚至是自己的工作站上。

下面一起來進行更深入的了解。

Gitlab是一個強大的git服務,基本功能和對手GitHub一樣。 這是一個成熟的項目和并且在不斷更新。

Gogs:可能是比Gitlab更好的選擇

他們最近收購了

Gitorius

(另一個類似GitHub的服務),是以功能将有望得到擴充(

檢視有關收購的新聞剪輯

)。

以前是手動安裝,很耗時間,問題也很多。最近安裝過程有所改善。

現在有 Linux DEB/RPM 的安裝包可用(稱為Omnibus),解決了所有的依賴問題,簡化了安裝過程。

更新是一個複雜的事情,尤其是從較早的版本更新到最新版,但也沒那麼複雜。

然而,你可以感受到很多東西是在背景執行的。 你可以運作 Sidekiq、Unicorn、Nginx、Ruby (包括 gems) 和 Gitlab本身。

自定義安裝不是那麼簡單,有很多不确定因素,如果出了什麼差錯,要自己一個個排查。

輸入二進制包

現在,我們有了

。 你所要做的就是運作一個的二進制包。

它是用

Go

語言寫的,能相容各個系統。

它能運作于 Windows,MAC,Linux,ARM 等。

Gogs:可能是比Gitlab更好的選擇

安裝時隻需要把壓縮包解壓到標明的檔案夾中。 就是這樣。 更新也一樣:隻要解壓壓縮包即可。

這就是

Go語言二進制開發

的美,你可以輕松在多個平台下開發。

Gogs占用資源少,是以它很容易在系統資源上運作(它可以在

Raspberry Pi

運作)。

你可以用預設的配置運作,或做一些小調整。

預設的配置檔案位于安裝檔案夾的

/conf/app.ini

,文檔建議把自定義配置寫到

/custom/conf/app.ini

,這樣更新就不會覆寫配置。

有三個可自定義的東西:

  • 庫的位置

[repository]

ROOT = !! 庫的位址 !!

  • 資料庫位置

[database]

PATH = !! 資料庫位址 !!

  • 公鑰
Gogs:可能是比Gitlab更好的選擇

注意:目前,你需要運作一個SSH伺服器(OpenSSH也很好),這和gitlab相同。

比較

讓我們比較一下這兩個産品。 我将以GitHub作為參考。

特性 Github
Dashboard & File Browser Y
Issue Tracking, Milestones & Commit keywords
Organizations support N
Wiki
Code Review
Code Snippets
Web Hooks
Git Hooks * Enterprise
LDAP Login
LDAP Group Sync
Branded Login Page
Language Ruby
Platform Cross-Platform Linux * Virtual Machine
License MIT Proprietary
Resource Usage Low Medium/High

代碼審查(拉取請求)可以說是缺失的最重要的功能。 這是 Gogs 在

Github issues

裡首要問題,Gogs的主要開發者正在盡力開發中。

但總的來說,這是一個功能豐富的、私有的Git托管服務。

運作一個 Gogs docker

以前描述

我如何我的伺服器環境docker化,是以我也會把gogs作為Docker容器來運作

讓我們一步一步來做。

假設我有一個應用程式的檔案在我的伺服器根目錄

/home/kayak/apps

,給每個作為Docker容器的應用建立子目錄。

下載下傳并解壓最新版本gogs。

$ cd /home/kayak/apps

$ wget

http://gogs.dn.qbox.me/gogs_v0.

5.13_linux_amd64.zip

$ unzip gogs_v0.5.13_linux_amd64.zip

$ rm gogs_v0.5.13_linux_amd64.zip

自定義配置

$ cd gogs

$ mkdir -p custom/conf

$ cd custom/conf

$ nano app.ini

ROOT = !! this is the location where you want to keep the repositories !!

PATH = !! this is the location of your database (sqlite3 by default) !!

注: 你也可以不把gogs作為docker容器,直接運作。

現在讓我們建立dockerfile

$ cd /home/kayak/apps/gogs

$ nano Dockerfile

FROM ubuntu:14.04

ENV DEBIAN_FRONTEND noninteractive

RUN sed 's/main$/main universe multiverse/' -i /etc/apt/sources.list && \

    apt-get update && apt-mark hold initscripts && \

    apt-get install -y sudo openssh-server git && \

    apt-get clean

EXPOSE 22 3000

RUN addgroup --gid 501 kayak && adduser --uid 501 --gid 501 --disabled-password --gecos 'kayak' kayak && adduser kayak sudo

WORKDIR /home/kayak

ENV HOME /home/kayak

ENTRYPOINT ["/home/kayak/boot"]

dockerfile是基于最新的Ubuntu LTS版伺服器(14.04)。

然後安裝 sudo, openssh 和 git,暴露端口22(用于SSH)和3000(給gogs的Web界面)。

另外,我通常會建立一個使用者(這裡用 kayak),它具有與我的Max box使用者相同的UID/GID,以防止通路權限問題。

最後,啟動shell腳本運作。

$ touch boot

$ chmod +x boot

$ nano boot

#!/bin/bash

sudo -u kayak -H touch /home/kayak/.ssh/authorized_keys

chmod 700 /home/kayak/.ssh && chmod 600 /home/kayak/.ssh/authorized_keys

# start openssh server

mkdir /var/run/sshd

/usr/sbin/sshd -D &

exec sudo -u kayak /home/kayak/gogs web

這樣就運作了ssh守護程序和gogs。現在是以kayak使用者運作,這樣比用預設的root使用者好一些。

建立鏡像

$ docker build --rm -t apertoire/gogs .

鏡像建立好就可以運作了

$ docker run -d --name gogs \

-v /etc/localtime:/etc/localtime:ro \

-v /home/kayak/apps/gogs:/home/kayak \

-p 62723:22 \

-p 3000:3000 \

apertoire/gogs

可以在指令行檢視運作情況。

Gogs:可能是比Gitlab更好的選擇

現在可以打開網頁界面,它會顯示一個安裝頁面(首次運作)。

Gogs:可能是比Gitlab更好的選擇

安裝完成後,就搭建好一個功能豐富的Gogs了。

Gogs:可能是比Gitlab更好的選擇

總結

Gogs 是一個輕量級的、易于設定、跨平台的Git托管服務,不遜色于 Gitlab 和 GitHub。

雖然不比這二者成熟,但它有很大的潛力。

它是開源的,是以你可以幫助改善它。

我用Gogs取代Gitlab幾個月了,感覺不錯。

我建立42個庫,感覺它的性能非常好。

我絕對推薦Gogs作為你的Git自托管服務。