前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >快速搭建团队的GitLab

快速搭建团队的GitLab

作者头像
Criss@陈磊
发布2019-09-25 16:01:11
6130
发布2019-09-25 16:01:11
举报
文章被收录于专栏:测试技术圈测试技术圈

快速搭建团队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

代码语言:javascript
复制
sudo apt-get install vim

使用前先替换到国内的源:

代码语言:javascript
复制
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

安装依赖

代码语言:javascript
复制
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的安装了,先执行如下命令,建立一个安装目录

代码语言:javascript
复制
cd /home/
mkdir git_install
chmod 777 git_install
cd git_install/

然后,运行如下命令获得安装的脚本

代码语言:javascript
复制
curl -LO https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh

下载完成后运行如下脚本执行:

代码语言:javascript
复制
bash script.deb.sh

该脚本将设置您的服务器以使用GitLab维护的存储库。这使您可以使用与其他系统软件包相同的软件包管理工具来管理GitLab。下面运行如下安装命令:

代码语言:javascript
复制
apt-get install gitlab-ce

等待出现如下信息表示安装成功。

然后通过命令对gitlab进行配置(这个过程有点漫长,可以喝杯茶等一等):

代码语言:javascript
复制
gitlab-ctl reconfigure

完成后,进入URL的配置:vim /etc/gitlab/gitlab.rb

修改 external url后加入访问的url(或者写入ip+port)

设置防火墙规则

代码语言:javascript
复制
ufw allow ssh
ufw allow http
ufw allow https

完成后就可以登录刚刚设置的网址进行设置了,首次访问需要设置一个管理员密码:

通过管理员用户名root和刚刚设置的密码进入后,开始对GitLab进行更适合你的设置,点击右上角图片弹出菜单的profiles settings:

里面可以设置管理源的信息同时和可以设置gitlab的一些其他的设置,具体按照你自己的需要进行配置,这里无大一统的配制方法。然后就可以将其提供给team内的小伙伴使用了。

容器化的搭建过程

容器化的gitlab搭建就太简单了,这里做一下简单介绍:

代码语言:javascript
复制
docker pull gitlab/gitlab-ce

拉取docker后,就可以run了,具体配置见如下的dockerfile,可见容器内暴露了三个端口 4438022,那么通过80端口就可以访问了:

代码语言:javascript
复制
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

代码语言:javascript
复制
sudo apt-get install vim

使用前县替换到国内的源:

代码语言:javascript
复制
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

安装依赖

代码语言:javascript
复制
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的安装了,先执行如下命令,建立一个安装目录

代码语言:javascript
复制
cd /home/
mkdir git_install
chmod 777 git_install
cd git_install/

然后,运行如下命令获得安装的脚本

代码语言:javascript
复制
curl -LO https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh

下载完成后运行如下脚本执行:

代码语言:javascript
复制
bash script.deb.sh

出现如下提示表示成功下载:

该脚本将设置您的服务器以使用GitLab维护的存储库。这使您可以使用与其他系统软件包相同的软件包管理工具来管理GitLab。下面运行如下安装命令:

代码语言:javascript
复制
apt-get install gitlab-ce

等待出现如下信息表示安装成功。

然后通过命令对gitlab进行配置(这个过程有点漫长,可以喝杯茶等一等):

代码语言:javascript
复制
gitlab-ctl reconfigure

完成后,进入URL的配置:vim /etc/gitlab/gitlab.rb

修改 external url后加入访问的url(或者写入ip+port)

设置防火墙规则

代码语言:javascript
复制
ufw allow ssh
ufw allow http
ufw allow https

完成后就可以登录刚刚设置的网址进行设置了,首次访问需要设置一个管理员密码:

通过管理员用户名root和刚刚设置的密码进入后,开始对GitLab进行更适合你的设置,点击右上角图片弹出菜单的profiles settings:

里面可以设置管理源的信息同时和可以设置gitlab的一些其他的设置,具体按照你自己的需要进行配置,这里无大一统的配制方法。然后就可以将其提供给team内的小伙伴使用了。

容器化的搭建过程

容器化的gitlab搭建就太简单了,这里做一下简单介绍:

代码语言:javascript
复制
docker pull gitlab/gitlab-ce

拉取docker后,就可以run了,具体配置见如下的dockerfile,可见容器内暴露了三个端口 4438022,那么通过80端口就可以访问了:

代码语言:javascript
复制
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社北京,关注测试,添加巨蜥小程序获取全量精品技术文章

关注我
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-09-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 质问 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 快速搭建团队private的GitLab
    • 非容器化的搭建过程
      • 安装依赖
    • 容器化的搭建过程
    • 快速搭建团队private的GitLab
      • 非容器化的搭建过程
        • 安装依赖
        • 安装gitlab
      • 容器化的搭建过程
      相关产品与服务
      容器服务
      腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档