简介

GitLab,是一个利用 Ruby on Rails 开发的开源应用程序,实现一个自托管的Git项目仓库,可通过Web界面进行访问公开的或者私人项目安装。 它拥有与GitHub类似的功能,能够浏览源代码,管理缺陷和注释。可以管理团队对仓库的访问,它非常易于浏览提交过的版本并提供一个文件历史库。除了代码仓库管理的核心功能外,Gitlab还兼有议题、持续集成、Wiki等项目管理事务上的其他优秀模块。

Gitlab提供的仓库管理、项目管理以及持续集成,可以完全取代现有类似的 jira + svn + Jenkins 项目管理架构,以达到一套系统管理项目开发的整个生命周期的目的。

本文对Gitlab作简单介绍,更多详细的用法需要阅读gitlab官方wiki文档

https://docs.gitlab.com/

部署

部署方式

官网上有多种部署方式,直接部署步骤过于繁琐,而且由于环境的不同,可能出现未知错误,笔者推荐使用 docker的方式进行部署,步骤简单,不会有异常。安装docker的教程网上都有,大家根据自己的环境自行查阅。

docker安装并启动完成后,搜索镜像。

docker search gitlab

大家视自己情况选择英文原版或者汉化版,为了方便演示,笔者这里选择安装社区汉化版

拉取镜像

docker pull twang2218/gitlab-ce-zh

如果下载速度极慢或者连接失败,请将docker镜像地址更改为 国内仓库或者使用阿里镜像仓库加速

使用阿里镜像加速,登陆阿里云,选择容器镜像服务

开始部署

下载完成后,创建并启动容器,开放端口可以设置,443为https端口,80为http端口,我们直接使用http端口,映射到本地的80端口,如果需要配置https服务,前面可以用一层nginx代理,配置域名和证书。

sudo docker run --detach \

 --publish 443:443 --publish 80:80 --publish 22:22 \

 --name gitlab \

 --restart always \

 --volume /srv/gitlab/config:/etc/gitlab \

 --volume /srv/gitlab/logs:/var/log/gitlab \

 --volume /srv/gitlab/data:/var/opt/gitlab \

 twang2218/gitlab-ce-zh

查看部署状态,安装过程中会显示 strating:health 表示正在健康的启动

docker ps -a

等待完全启动成功后,就部署成功了,访问linux的ip + http端口,即完成可以看到界面。

设置密码后,使用root账号和密码登陆界面,即可以看到首页

基本用法

创建一个项目

添加人员

创建一个群组

对于一个正常的公司或者组织,都会有多个项目和多个成员,需要用群组的概念来管理项目和人员之间的关系。

群组是多个项目的集合

只有群组的成员才有权查看项目

群组项目的URL都会戴上群组的命名空间

现有项目可以转移到群组

配置Gitlab

在这里完成对 项目、用户、群组的管理

仓库管理

创建一个项目后,进入到项目页面。

代码仓库是gitlab的核心功能,它提供和github一样的仓库管理功能,用法上也完全一致。

关于git的操作,网上有很多教程,笔者这里就不做赘述。

Gitlab CI/CD

gitlab也提供了类似 jenkins的持续集成功能,通过配置,可以完成代码自动打包,部署,测试等流水线功能,触发机制完善。

gitlab在系统上进行配置,但实际完成的持续集成是由 gitlab-runner来完成,runner采用go语言编写,因此可以很好的进行跨平台,并且支持在docker中使用,也提供了多种连接方式。

安装gitlab-runner

安装gitlab-runner,各个平台对应的安装方式如下:

https://docs.gitlab.com/runner/install/linux-repository.html

笔者linux是 ubuntu系统,直接

apt-get install gitlab-runner

注册gitlab-runner到项目

gitlab-runner需要通过注册的方式和gitlab上面的项目相关联,这样项目持续集成的时候才可以调用安装gitlab-runner的服务器进行操作

获取项目token,点击 设置-CI/CD-General pinelines

linux生成ssh秘钥,输入ssh-keygen 一路回车,会在/root/.ssh/di_rsa下生成秘钥对

gitlab-runner注册

gitlab-runner register

如果gitlab-runner和gitlab在同一linux上,请注意gitlab已经占用了22端口,避免冲突,请将ssh-server的端口改为其他端口

注册完成后,回到项目中查看,已经可以在页面上看到注册的gitlab-runner

使用gitlab-runner

配置hosts域名解析 如果你的地址是这个

需要在 /etc/host中添加 域名解析 (如果是显示gitlab也需要添加到域名解析中)

192.168.127.128   4244e17eba16

192.168.127.128   gitlab

配置yml文件

通过yml配置文件来调用gitlab-runner

在项目根目录下创建一个文件名称为 .gitlab-ci.yml

//三个阶段 build 、 deploy 、 test
stages:
    - build
    - deploy
    - test

//设置三个全局变量,使用时 $+变量名即可

variables:
    BUILD_SAY: 'building'
    DEPLOY_SAY: 'deploying'
    TEST_SAY: 'testing'
 
//构建任务  
build_job:
	//这个任务属于 build阶段
  stage: build
	//任务开始时的操作
  before_script: 
- echo 'build start'
//任务操作
  script:
- echo $BUILD_SAY
//任务完成后的操作
  after_script:
    - echo 'build end'
    
//部署任务
deploy_job:
  stage: deploy
  before_script: 
    - echo 'deploy start'
  script:
    - echo $DEPLOY_SAY
  after_script:
    - echo 'deploy end'
    
//测试任务
test_job:
  stage: test
  before_script: 
    - echo 'test start'
  script:
    - echo $TEST_SAY
  after_script:
- echo 'test end'

构建

三个任务会按顺序执行

点击可以查看每个任务的执行情况