快速搭建團隊的GitLab

  • 2019 年 10 月 7 日
  • 筆記

快速搭建團隊private的GitLab

Gitlab是一個代碼託管平台,開源項目,是在線的基於Git的託管服務。Gitlab是一個提供了UI的web服務,可以方便的通過UI操作管理代碼倉庫,同時也提供了很多UI的交互操作,例如歷史瀏覽、分支管理、倉庫創建等等。

研發效能的其實端是代碼倉的管理和統一維護,通過統一的私有化的Git託管服務實現代碼的內部有限共享。代碼倉在研發效能的提升中佔據很重要的地位,這是DevOps工具鏈的起始點也是工程效能提升的一個重要環節。如果沒有統一代碼倉庫我們也無法開始研發效能、質量效能、交付效能的衡量和提高。那麼下面我們就開始講解GitLab私有化倉庫平台的搭建

Gitlab有Community Edition or Enterprise Edition,ce和ee分別指的是社區版和企業版。GitLab Enterprise Edition(企業版) 是基於GitLab Community Edition(社區版)開發的,其中包括一些額外的功能主要是針對100用戶以上的團隊。比如 LDAP group sync、 日誌審核、多LDAP服務器。對身份驗證和授權有更深層次的整合, 高細粒度的工作流管理、 擴展的服務管理選項, 更方便與您的工作棧集成。因此本文以Community Edition也就是社區為例。

非容器化的搭建過程

本文以Unbuntu為例

如果vim沒有需要先安裝vim

sudo apt-get install vim

使用前先替換到國內的源:

sudo cp /etc/apt/sources.list /etc/apt/sources.list.old  sudo vim /etc/apt/source.list

然後清空source.list內容,將下面任意一個源的全部記錄複製進去(作者使用了東北大學的)

  • 東北大學源 deb-src http://mirror.neu.edu.cn/ubuntu/ xenial main restricted #Added by software-properties deb http://mirror.neu.edu.cn/ubuntu/ xenial main restricted deb-src http://mirror.neu.edu.cn/ubuntu/ xenial restricted multiverse universe #Added by software-properties deb http://mirror.neu.edu.cn/ubuntu/ xenial-updates main restricted deb-src http://mirror.neu.edu.cn/ubuntu/ xenial-updates main restricted multiverse universe #Added by software-properties deb http://mirror.neu.edu.cn/ubuntu/ xenial universe deb http://mirror.neu.edu.cn/ubuntu/ xenial-updates universe deb http://mirror.neu.edu.cn/ubuntu/ xenial multiverse deb http://mirror.neu.edu.cn/ubuntu/ xenial-updates multiverse deb http://mirror.neu.edu.cn/ubuntu/ xenial-backports main restricted universe multiverse deb-src http://mirror.neu.edu.cn/ubuntu/ xenial-backports main restricted universe multiverse #Added by software-properties deb http://archive.canonical.com/ubuntu xenial partner deb-src http://archive.canonical.com/ubuntu xenial partner deb http://mirror.neu.edu.cn/ubuntu/ xenial-security main restricted deb-src http://mirror.neu.edu.cn/ubuntu/ xenial-security main restricted multiverse universe #Added by software-properties deb http://mirror.neu.edu.cn/ubuntu/ xenial-security universe deb http://mirror.neu.edu.cn/ubuntu/ xenial-security multiverse
  • 清華大學 deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial main restricted deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-updates main restricted deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial universe deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-updates universe deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial multiverse deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-updates multiverse deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-backports main restricted universe multiverse deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-security main restricted deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-security universe deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-security multiverse
  • 阿里雲源 deb-src http://archive.ubuntu.com/ubuntu xenial main restricted #Added by software-properties deb http://mirrors.aliyun.com/ubuntu/ xenial main restricted deb-src http://mirrors.aliyun.com/ubuntu/ xenial main restricted multiverse universe #Added by software-properties deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted deb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted multiverse universe #Added by software-properties deb http://mirrors.aliyun.com/ubuntu/ xenial universe deb http://mirrors.aliyun.com/ubuntu/ xenial-updates universe deb http://mirrors.aliyun.com/ubuntu/ xenial multiverse deb http://mirrors.aliyun.com/ubuntu/ xenial-updates multiverse deb http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse #Added by software-properties deb http://archive.canonical.com/ubuntu xenial partner deb-src http://archive.canonical.com/ubuntu xenial partner deb http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted deb-src http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted multiverse universe #Added by software-properties deb http://mirrors.aliyun.com/ubuntu/ xenial-security universe deb http://mirrors.aliyun.com/ubuntu/ xenial-security multiverse

安裝依賴

sudo apt-get update  sudo apt-get install ca-certificates curl openssh-server postfix gnupg libreadline6 libusb-0.1-4

安裝完成後,會出現提示配置postfix 的提示(是Wietse Venema在IBM的GPL協議之下開發的MTA(郵件傳輸代理)軟件),選擇 1 暫時跳過

安裝gitlab

現將如下源信息加入到source.list中 deb http://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/debian stretch main

安裝全部依賴後,就可以開始gitlab的安裝了,先執行如下命令,建立一個安裝目錄

cd /home/  mkdir git_install  chmod 777 git_install  cd git_install/

然後,運行如下命令獲得安裝的腳本

curl -LO https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh

下載完成後運行如下腳本執行:

bash script.deb.sh

該腳本將設置您的服務器以使用GitLab維護的存儲庫。這使您可以使用與其他系統軟件包相同的軟件包管理工具來管理GitLab。下面運行如下安裝命令:

apt-get install gitlab-ce

等待出現如下信息表示安裝成功。

然後通過命令對gitlab進行配置(這個過程有點漫長,可以喝杯茶等一等):

gitlab-ctl reconfigure

完成後,進入URL的配置:vim /etc/gitlab/gitlab.rb

修改 external url後加入訪問的url(或者寫入ip+port)

設置防火牆規則

ufw allow ssh  ufw allow http  ufw allow https

完成後就可以登錄剛剛設置的網址進行設置了,首次訪問需要設置一個管理員密碼:

通過管理員用戶名root和剛剛設置的密碼進入後,開始對GitLab進行更適合你的設置,點擊右上角圖片彈出菜單的profiles settings:

裏面可以設置管理源的信息同時和可以設置gitlab的一些其他的設置,具體按照你自己的需要進行配置,這裡無大一統的配製方法。然後就可以將其提供給team內的小夥伴使用了。

容器化的搭建過程

容器化的gitlab搭建就太簡單了,這裡做一下簡單介紹:

docker pull gitlab/gitlab-ce

拉取docker後,就可以run了,具體配置見如下的dockerfile,可見容器內暴露了三個端口 4438022,那麼通過80端口就可以訪問了:

FROM ubuntu:16.04  MAINTAINER GitLab Inc. <[email protected]>    SHELL ["/bin/sh", "-c"],    # Default to supporting utf-8  ENV LANG=C.UTF-8    # Install required packages  RUN apt-get update -q       && DEBIAN_FRONTEND=noninteractive apt-get install -yq --no-install-recommends       ca-certificates       openssh-server       wget       apt-transport-https       vim       tzdata       nano       && rm -rf /var/lib/apt/lists/*       && sed 's/sessions*requireds*pam_loginuid.so/session optional pam_loginuid.so/g' -i /etc/pam.d/sshd    # Remove MOTD  RUN rm -rf /etc/update-motd.d /etc/motd /etc/motd.dynamic  RUN ln -fs /dev/null /run/motd.dynamic    # Copy assets  COPY RELEASE /  COPY assets/ /assets/  RUN /assets/setup    # Allow to access embedded tools  ENV PATH /opt/gitlab/embedded/bin:/opt/gitlab/bin:/assets:$PATH    # Resolve error: TERM environment variable not set.  ENV TERM xterm    # Expose web & ssh  EXPOSE 443 80 22    # Define data volumes  VOLUME ["/etc/gitlab", "/var/opt/gitlab", "/var/log/gitlab"]    # Wrapper to handle signal, trigger runit and reconfigure GitLab  CMD ["/assets/wrapper"]    HEALTHCHECK --interval=60s --timeout=30s --retries=5   CMD /opt/gitlab/bin/gitlab-healthcheck --fail --max-time 10

快速搭建團隊private的GitLab

Gitlab是一個代碼託管平台,開源項目,是在線的基於Git的託管服務。Gitlab是一個提供了UI的web服務,可以方便的通過UI操作管理代碼倉庫,同時也提供了很多UI的交互操作,例如歷史瀏覽、分支管理、倉庫創建等等。

研發效能的其實端是代碼倉的管理和統一維護,通過統一的私有化的Git託管服務實現代碼的內部有限共享。代碼倉在研發效能的提升中佔據很重要的地位,這是DevOps工具鏈的起始點也是工程效能提升的一個重要環節。如果沒有統一代碼倉庫我們也無法開始研發效能、質量效能、交付效能的衡量和提高。那麼下面我們就開始講解GitLab私有化倉庫平台的搭建

Gitlab有Community Edition or Enterprise Edition,ce和ee分別指的是社區版和企業版。GitLab Enterprise Edition(企業版) 是基於GitLab Community Edition(社區版)開發的,其中包括一些額外的功能主要是針對100用戶以上的團隊。比如 LDAP group sync、 日誌審核、多LDAP服務器。對身份驗證和授權有更深層次的整合, 高細粒度的工作流管理、 擴展的服務管理選項, 更方便與您的工作棧集成。因此本文以Community Edition也就是社區為例。

非容器化的搭建過程

本文以Unbuntu為例

如果vim沒有需要先安裝vim

sudo apt-get install vim

使用前縣替換到國內的源:

sudo cp /etc/apt/sources.list /etc/apt/sources.list.old  sudo vim /etc/apt/source.list

然後清空source.list內容,將下面任意一個源的全部記錄複製進去(作者使用了東北大學的)

  • 東北大學源 deb-src http://mirror.neu.edu.cn/ubuntu/ xenial main restricted #Added by software-properties deb http://mirror.neu.edu.cn/ubuntu/ xenial main restricted deb-src http://mirror.neu.edu.cn/ubuntu/ xenial restricted multiverse universe #Added by software-properties deb http://mirror.neu.edu.cn/ubuntu/ xenial-updates main restricted deb-src http://mirror.neu.edu.cn/ubuntu/ xenial-updates main restricted multiverse universe #Added by software-properties deb http://mirror.neu.edu.cn/ubuntu/ xenial universe deb http://mirror.neu.edu.cn/ubuntu/ xenial-updates universe deb http://mirror.neu.edu.cn/ubuntu/ xenial multiverse deb http://mirror.neu.edu.cn/ubuntu/ xenial-updates multiverse deb http://mirror.neu.edu.cn/ubuntu/ xenial-backports main restricted universe multiverse deb-src http://mirror.neu.edu.cn/ubuntu/ xenial-backports main restricted universe multiverse #Added by software-properties deb http://archive.canonical.com/ubuntu xenial partner deb-src http://archive.canonical.com/ubuntu xenial partner deb http://mirror.neu.edu.cn/ubuntu/ xenial-security main restricted deb-src http://mirror.neu.edu.cn/ubuntu/ xenial-security main restricted multiverse universe #Added by software-properties deb http://mirror.neu.edu.cn/ubuntu/ xenial-security universe deb http://mirror.neu.edu.cn/ubuntu/ xenial-security multiverse
  • 清華大學 deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial main restricted deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-updates main restricted deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial universe deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-updates universe deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial multiverse deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-updates multiverse deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-backports main restricted universe multiverse deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-security main restricted deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-security universe deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-security multiverse
  • 阿里雲源 deb-src http://archive.ubuntu.com/ubuntu xenial main restricted #Added by software-properties deb http://mirrors.aliyun.com/ubuntu/ xenial main restricted deb-src http://mirrors.aliyun.com/ubuntu/ xenial main restricted multiverse universe #Added by software-properties deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted deb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted multiverse universe #Added by software-properties deb http://mirrors.aliyun.com/ubuntu/ xenial universe deb http://mirrors.aliyun.com/ubuntu/ xenial-updates universe deb http://mirrors.aliyun.com/ubuntu/ xenial multiverse deb http://mirrors.aliyun.com/ubuntu/ xenial-updates multiverse deb http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse #Added by software-properties deb http://archive.canonical.com/ubuntu xenial partner deb-src http://archive.canonical.com/ubuntu xenial partner deb http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted deb-src http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted multiverse universe #Added by software-properties deb http://mirrors.aliyun.com/ubuntu/ xenial-security universe deb http://mirrors.aliyun.com/ubuntu/ xenial-security multiverse

安裝依賴

sudo apt-get update  sudo apt-get install ca-certificates curl openssh-server postfix gnupg libreadline6 libusb-0.1-4

安裝完成後,會出現提示配置postfix 的提示(是Wietse Venema在IBM的GPL協議之下開發的MTA(郵件傳輸代理)軟件),選擇 1 暫時跳過

安裝gitlab

現將如下源信息加入到source.list中 deb http://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/debian stretch main

安裝全部依賴後,就可以開始gitlab的安裝了,先執行如下命令,建立一個安裝目錄

cd /home/  mkdir git_install  chmod 777 git_install  cd git_install/

然後,運行如下命令獲得安裝的腳本

curl -LO https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh

下載完成後運行如下腳本執行:

bash script.deb.sh

出現如下提示表示成功下載:

該腳本將設置您的服務器以使用GitLab維護的存儲庫。這使您可以使用與其他系統軟件包相同的軟件包管理工具來管理GitLab。下面運行如下安裝命令:

apt-get install gitlab-ce

等待出現如下信息表示安裝成功。

然後通過命令對gitlab進行配置(這個過程有點漫長,可以喝杯茶等一等):

gitlab-ctl reconfigure

完成後,進入URL的配置:vim /etc/gitlab/gitlab.rb

修改 external url後加入訪問的url(或者寫入ip+port)

設置防火牆規則

ufw allow ssh  ufw allow http  ufw allow https

完成後就可以登錄剛剛設置的網址進行設置了,首次訪問需要設置一個管理員密碼:

通過管理員用戶名root和剛剛設置的密碼進入後,開始對GitLab進行更適合你的設置,點擊右上角圖片彈出菜單的profiles settings:

裏面可以設置管理源的信息同時和可以設置gitlab的一些其他的設置,具體按照你自己的需要進行配置,這裡無大一統的配製方法。然後就可以將其提供給team內的小夥伴使用了。

容器化的搭建過程

容器化的gitlab搭建就太簡單了,這裡做一下簡單介紹:

docker pull gitlab/gitlab-ce

拉取docker後,就可以run了,具體配置見如下的dockerfile,可見容器內暴露了三個端口 4438022,那麼通過80端口就可以訪問了:

FROM ubuntu:16.04  MAINTAINER GitLab Inc. <[email protected]>    SHELL ["/bin/sh", "-c"],    # Default to supporting utf-8  ENV LANG=C.UTF-8    # Install required packages  RUN apt-get update -q       && DEBIAN_FRONTEND=noninteractive apt-get install -yq --no-install-recommends       ca-certificates       openssh-server       wget       apt-transport-https       vim       tzdata       nano       && rm -rf /var/lib/apt/lists/*       && sed 's/sessions*requireds*pam_loginuid.so/session optional pam_loginuid.so/g' -i /etc/pam.d/sshd    # Remove MOTD  RUN rm -rf /etc/update-motd.d /etc/motd /etc/motd.dynamic  RUN ln -fs /dev/null /run/motd.dynamic    # Copy assets  COPY RELEASE /  COPY assets/ /assets/  RUN /assets/setup    # Allow to access embedded tools  ENV PATH /opt/gitlab/embedded/bin:/opt/gitlab/bin:/assets:$PATH    # Resolve error: TERM environment variable not set.  ENV TERM xterm    # Expose web & ssh  EXPOSE 443 80 22    # Define data volumes  VOLUME ["/etc/gitlab", "/var/opt/gitlab", "/var/log/gitlab"]    # Wrapper to handle signal, trigger runit and reconfigure GitLab  CMD ["/assets/wrapper"]    HEALTHCHECK --interval=60s --timeout=30s --retries=5   CMD /opt/gitlab/bin/gitlab-healthcheck --fail --max-time 10  長按關注V社北京測試丨技術丨面試丨DevOps關注V社北京,關注測試,添加巨蜥小程序獲取全量精品技術文章    關注我