gitlab介绍及使用

一、gitlab介绍

前边介绍过CentOS7下Gitlab的安装,下边就要说说Gitlab的使用

GitLab 是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的web服务。GitLab由乌克兰程序员DmitriyZaporozhets和ValerySizov开发,它由Ruby写成。后来,一些部分用Go语言重写,现今并在国内外大中型互联网公司广泛使用。

git、gitlab、GitHub的简单区别

git 是一种基于命令的版本控制系统,全命令操作,没有可视化界面

gitlab 是一个基于git实现的在线代码仓库软件,提供web可视化管理界面,通常用于企业团队内部协作开发

github 是一个基于git实现的在线代码托管仓库,亦提供可视化管理界面,同时免费账户和提供付费账户,提供开放和私有的仓库,大部分的开源项目都选择github作为代码托管仓库

二、gitlab相关命令

gitlab-ctl start #启动全部服务
gitlab-ctl restart#重启全部服务
gitlab-ctl stop #停止全部服务
gitlab-ctl restart nginx #重启单个服务,如重启nginx
gitlab-ctl status #查看服务状态
gitlab-ctl reconfigure #使配置文件生效
gitlab-ctl show-config #验证配置文件
gitlab-ctl uninstall #删除gitlab(保留数据)
gitlab-ctl cleanse #删除所有数据,从新开始
gitlab-ctl tail 查看服务的日志
gitlab-ctl tail nginx  #如查看gitlab下nginx日志
gitlab-rails console  #进入控制台

三、gitlab常用组件

nginx:静态Web服务器

gitlab-shell:用于处理Git命令和修改authorized keys列表,gitlab是以Git为底层的,操作实际上最后就是调用gitlab-shell命令进行处理。

gitlab-workhorse:轻量级的反向代理服务器

logrotate:日志文件管理工具

postgresql:数据库

redis:缓存数据库

sidekiq:用于在后台执行队列任务(异步执行)

unicorn:GitLab Rails应用是托管在这个服务器上面的

查看服务状态:gitlab-ctl status,可以看到gitlab的依赖组件

gitlab介绍及使用_第1张图片

四、gitlab安装目录

以下是gitlab常用的默认安装目录

gitlab组件日志路径:/var/log/gitlab

gitlab配置路径:/etc/gitlab/  路径下有gitlab.rb配置文件

应用代码和组件依赖程序:/opt/gitlab

各个组件存储路径: /var/opt/gitlab/

仓库默认存储路径   /var/opt/gitlab/git-data/repositories

版本文件备份路径:/var/opt/gitlab/backups/

nginx安装路径:/var/opt/gitlab/nginx/

redis安装路径:/var/opt/gitlab/redis

五、配置GitLab中的SSH key

1、查看是否已有SSH key

(1)桌面右键点击弹出,点击Git Bash进入命令行界面

gitlab介绍及使用_第2张图片

(2)cat ~/.ssh/id_rsa.pub查看SSH秘钥是否存在,可以看到初次没有生成过

gitlab介绍及使用_第3张图片
(3)生成过删除,重新生成,找到C:\Users\admin\.ssh,admin是当前用户名,删除以下文件

gitlab介绍及使用_第4张图片

2、生成SSH 密钥 

ssh-keygen -t rsa -C "[email protected]"

如下图,一路回车即可生成,会在C:\Users\admin\.ssh下生成基于rsa的公钥与私钥对
gitlab介绍及使用_第5张图片

3、 添加SSH key到gitlab

1)查看公钥并复制

cat ~/.ssh/id_rsa.pub    #查看公钥,自己手动复制
cat ~/.ssh/id_rsa.pub | clip #或者直接复制到剪贴板

gitlab介绍及使用_第6张图片

(2)登录gitlab,最右边下拉,点击“Settings”去User Setting页面

gitlab介绍及使用_第7张图片

(3)点击左边的SSH Keys去添加

gitlab介绍及使用_第8张图片

(4)把刚才复制的SSH Keys粘贴进去,点击Add key,添加即可

gitlab介绍及使用_第9张图片

(5)添加成功如下,点击remove可以移除

gitlab介绍及使用_第10张图片

(6)ssh -T git@"gitlab服务器地址",测试是否配置成功,成功如下

六、备份与恢复

可参看https://docs.gitlab.com/omnibus/settings/backups.html#creating-an-application-backup

1、备份应用

默认备份路径:/var/opt/gitlab/backups,备份格式:EPOCH_YYYY_MM_DD_GitLab_version_gitlab_backup.tar
如备份文件:1542603058_2018_11_19_11.4-ce_gitlab_backup.tar

需要git用户权限 

sudo chown git.git /var/opt/gitlab/backups/1542603058_2018_11_19_11.4-ce_gitlab_backup.tar

如果自定义备份路径,编辑/etc/gitlab/gitlab.rb,指定备份路径,完后执行gitlab-ctl reconfigure重新加载配置

gitlab_rails['backup_path'] = '/mnt/backups' 备份路径,自己指定
gitlab_rails['backup_keep_time'] = 604800  #每次备份保留时间,默认7天,可以省略

手动备份,生成 一次备份

sudo gitlab-rake gitlab:backup:create

 定时备份:cron -e添加定时,保存,重启定时服务/etc/init.d/crond restart

#周二到周六每天凌晨2点备份
0 0 2 ? * 2-6 gitlab-rake gitlab:backup:create

 

2、备份配置

gitlab配置默认在etc/gitlab,需要备份gitlab.rb和gitlab-secrets.json,为了方便,备份etc/gitlab文件夹即可

sudo crontab -e -u root  添加定时,保存,重启定时服务/etc/init.d/crond restart

#周二到周六每天凌晨2点备份,设置权限0077,压缩/etc/gitlab到/secret/gitlab/backups下,备份路径自定义
0 0 2 ? * 2-6  umask 0077; tar cfz /secret/gitlab/backups/$(date "+etc-gitlab-\%s.tgz") -C / etc/gitlab

3、恢复

可参看https://docs.gitlab.com/ce/raketasks/backup_restore.html#restore-for-omnibus-installations

 停止与连接 数据库有关的进程

sudo gitlab-ctl stop unicorn
sudo gitlab-ctl stop sidekiq
# Verify是否停止
sudo gitlab-ctl status

  backup后边指定恢复的时间戳、版本

# This command will overwrite the contents of your GitLab database!
sudo gitlab-rake gitlab:backup:restore BACKUP=1542603058_2018_11_19_11.4-ce

 如果有必要恢复配置,gitlab.rb和gitlab-secrets.json,把备份的tar包恢复到/etc/gitlab路径下即可

 重启并检查服务

sudo gitlab-ctl restart  #重启服务
sudo gitlab-rake gitlab:check SANITIZE=true #检查恢复情况

七、gitlab-ci可持续集成

1、gitlab-ci简述

gitlab-ci全称gitlab continuous integration,就是可持续集成的意思。从gitlab8.0版本开始,GitLab-ci完全集成到GitLab本身中,并且默认情况下在所有项目上都启用,不用可以禁用掉(禁用见2共享runner中)。

若将gitlab-ci.yml文件添加到仓库的根目录,并将项目配置gitlab Runner使用,则每次commit或push都会触发CI pipeline。gitlab-ci.yml文件告诉GitLab runner怎么做。默认情况下,它运行一个pipeline ,有三个stage:buildtest,  deploy。没必要三stage都使用,没有用到的stage可以被忽略。

2、GitLab-Runner类型介绍

详情可参考https://docs.gitlab.com.cn/ee/ci/runners/README.html

runner有三种类型:Shared, specific and group Runners

 (1)共享runner:Shared runner适用于多个相似项目,其思想是:与其为每个项目分配一个特定runner,大部分时候这些runner事空闲的,即每个项目的runner一般不会同同时工作,不如让单个或少数Shared runner处理多个项目。shared runner使用公平队列处理作业,与使用FIFO的特定runner相比,可以防止项目创建数百个作业,占用所有可用shared runner的资源。

从GitLab 8.2开始,默认启用shared runners,无需手动开启,但是也可以在每个gitlab项目下的Settings ➔ CI/CD页面,通过“Disable shared Runners”按钮禁用。拥有管理员权限的用户可以注册且只能注册一个shared runner实例。

gitlab介绍及使用_第11张图片

(2)特定runner:specific runner适用于特定要求的作业或者有特殊需求的项目。如果一个作业具有某些特定要求,您可以在中心设置特定的Runner,而不是所有Runner都如此。例如,如果你要部署某个特定项目,可以去Settings ➔ CI/CD页面获得令牌(上图中画红线处)为该项目设置一个specific runner。specific runner使用FIFO队列处理作业。

(3)组runner:group Runners适用于一组中有多个项目并且希望组内所有项目都访问一组Runner的情况。group Runners使用FIFO队列处理作业。可以去Settings ➔ CI/CD页面,点击Group CI/CD setting(即上图中右下角蓝字),进入下页,获取token

gitlab介绍及使用_第12张图片

3、安装GitLab-Runner

详情可参考https://docs.gitlab.com/runner/install/

方式一

1、添加GitLab官方yum源

# For RHEL/CentOS/Fedora
 curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.rpm.sh | sudo bash

 2、安装最新版本runner

 # For RHEL/CentOS/Fedora,yum默认安装最新版本
 sudo yum install gitlab-runner
或者
# for RPM based systems #RPM安装指定版本,列出所有包含重复的版本,降序显示
 yum list gitlab-runner --showduplicates | sort -r
#如安装10.0.0-1
sudo yum install gitlab-runner-10.0.0-1

方式二

(1)下载

sudo wget -O /usr/local/bin/gitlab-runner https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-amd64

(2)添加可执行权限

 sudo chmod +x /usr/local/bin/gitlab-runner

(3)创建GitLab CI 用户

 sudo useradd --comment 'GitLab Runner' --create-home gitlab-runner --shell /bin/bash

 (4)安装gitlab-runner服务

 #安装到/home/gitlab-runner下
 sudo gitlab-runner install --user=gitlab-runner --working-directory=/home/gitlab-runner

4、runner注册到CI

详情可参考https://docs.gitlab.com/runner/register/index.html

  1. runner注册命令:

     sudo gitlab-runner register
    
  2. 键入GitLab的URL:

     Please enter the gitlab-ci coordinator URL (e.g. https://gitlab.com )
     https://192.168.1.74:8080 #gitlab地址
    
  3. 键入Runner注册的token:

     Please enter the gitlab-ci token for this runner
     xxx    #进入runner的token凭证
    
  4. 键入Runner的描述, 之后也可以GitLab’s 可视化界面中更改

     Please enter the gitlab-ci description for this runner
     [hostame] my-runner   #runner的描述
    
  5. 键入Runner的标签, 之后也可以GitLab’s 可视化界面中更改

     Please enter the gitlab-ci tags for this runner (comma separated):
     my-tag    #runner标签,相当于名字,用于指定哪个runner运行作业
    
  6. 键入执行Runner executor的方式

     Please enter the executor: ssh, docker+machine, docker-ssh+machine, kubernetes, docker, parallels, virtualbox, docker-ssh, shell:
     shell   #选择执行runner的executor方式,这里没有使用docker等其他的,选shell
    

5、配置gitlab-ci.yml

详情可以参考https://docs.gitlab.com.cn/ee/ci/yaml/README.html

从从GitLab7.12版本,GitLab CI使用YAML文件(.gitlab-ci.yml项目配置),它放在仓库的根目录,定义如何构建项目

Pipeline:一次 Pipeline 其实相当于一次构建任务,里面可以包含多个流程,如安装依赖、运行测试、编译、部署测试服务器、部署生产服务器等流程

jobs:Jobs 表示构建工作,表示某个 Stage 里面执行的工作。我们可以在 Stages 里面定义多个 Jobs,这些 Jobs 会有以下特点:相同 Stage 中的 Jobs 会并行执行,相同 Stage 中的 Jobs 都执行成功时,该 Stage 才会成功;如果任何一个 Job 失败,那么该 Stage 失败,即该构建任务 (Pipeline) 失败

Stages:Stages表示构建阶段,说白了就是上面提到的流程。我们可以在一次 Pipeline 中定义多个 Stages,这些 Stages 会有以下特点:所有 Stages 会按照顺序运行,即当一个 Stage 完成后,下一个 Stage 才会开始;只有当所有 Stages 完成后,该构建任务 (Pipeline) 才会成功;如果任何一个 Stage 失败,那么后面的 Stages 不会执行,该构建任务 (Pipeline) 失败

# 定义 stages, stages 关键字来定义 Pipeline 中的各个构建阶段
stages:
  - build
  - test
  - deploy
# 定义 job,可多个
job 1:
  stage: build  #stage指定构建阶段
  script: make build dependencies #script是每个job执行的任务

job 2:
  stage: build
  script: make build artifacts

job 3:
  stage: test
  script: make test

job 4:
  stage: deploy
  script: make deploy

添加gitlab-ci.yml

去项目根目录下,点击 "Set up CI/CD"去配置gitlab-ci.yml

gitlab介绍及使用_第13张图片

如下就可以配置了,配置完提交

gitlab介绍及使用_第14张图片

6、启动gitlab-runner

sudo gitlab-runner start  #启动gitlab-runner

7、查看pipeline工作状态

去项目根路径下,点击“CI/CD》Pipelines”查看状态

gitlab介绍及使用_第15张图片

如下可以看到pipeline工作状态

gitlab介绍及使用_第16张图片

 失败后,找到问题后,也可以点击右边的“Run Pipeline” 重新运行

gitlab介绍及使用_第17张图片

参考:https://docs.gitlab.com.cn/ee/ssh/README.html

参考:https://docs.gitlab.com.cn/ee/ci/quick_start/README.html

参考:https://docs.gitlab.com.cn/ee/ci/README.html

参考:https://docs.gitlab.com.cn/runner/

参考:http://www.cnblogs.com/zdqc/p/9666994.html

你可能感兴趣的:(Git)