简介
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'
构建
三个任务会按顺序执行
点击可以查看每个任务的执行情况