快速搭建團隊的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社北京,關注測試,添加巨蜥小程序獲取全量精品技術文章 關注我