快速搭建团队的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社北京,关注测试,添加巨蜥小程序获取全量精品技术文章 关注我