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