专栏首页测试技术圈快速搭建团队的GitLab

快速搭建团队的GitLab

快速搭建团队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. <support@gitlab.com>

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/session\s*required\s*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. <support@gitlab.com>

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/session\s*required\s*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社北京,关注测试,添加巨蜥小程序获取全量精品技术文章

关注我

本文分享自微信公众号 - V社 北京社(SoftwareTesters)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-09-24

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • java之struts2之文件上传

    1.在大多数应用中,都有文件上传功能。有两种文件上传的方式,一种是自己去解析http协议,获取文件上传的内容。另一种是通过第三方插件来实现文件上传。第三方插件一...

    Vincent-yuan
  • es6 --- Generator 函数

    在 ES6 出现之前,基本都是各式各样类似Promise的解决方案来处理异步操作的代码逻辑,但是 ES6 的Generator却给异步操作又提供了新的思路,马上...

    小蔚
  • loadrunner 脚本开发-web_custom_request函数详细介绍

    int web_custom_request(const char *RequestName, ,

    授客
  • Jenkins 为Jenkins添加Windows Slave远程执行python项目脚本

    JAVA JDK 1.7.0_13 (jdk-7u13-windows-i586.exe)

    授客
  • Spock 测试框架的介绍和使用详解

    Spock 框架是一个基于groovy语法的测试框架,由于使用groovy,所以使用起来比 junit 更加灵活,测试用例的写法更加简单易懂,一目了然。

    yawn
  • Python 基于python实现单例模式

    简单说,单例模式(也叫单件模式)的作用就是保证在整个应用程序的生命周期中,任何一个时刻,单例类的实例都只存在一个(当然也可以不存在)

    授客
  • java之struts2之ajax

    1.Ajax 技术在现有开发中使用非常多,大多是做管理类型系统。在servlet中可以使用ajax。在struts2中共还可以使用servlet的方式来实现aj...

    Vincent-yuan
  • es6 -- Iterator 和 for...of 循环

    JavaScript 原有的表示“集合”的数据结构,主要是数组(Array)和对象(Object),ES6 又添加了Map和Set。这样就有了四种数据集合,用户...

    小蔚
  • 使用myeclipse修改项目映射路径

    实例url:http://localhost:8080/myFirstServlet/one

    Vincent-yuan
  • java之初识hibernate

    1. 使用jdbc进行数据库操作:获取数据库连接,编写sql语句,执行sql操作,关闭连接。

    Vincent-yuan

扫码关注云+社区

领取腾讯云代金券