GitLab简介
GitLab是一个开源的用于仓库管理的项目,和GitHub一样是使用Git作为代码管理工具。
GitLab和GitHub的区别:
- GitHub作为开源代码库,拥有超过 900 万的开发者用户,目前仍然是最火的开源项目托管平台,GitHub 同时提供公共仓库和私有仓库,但如果使用私有仓库,是需要付费的。GitLab 解决了这个问题,你可以在上面创建私人的免费仓库。
- 让开发团队对他们的代码仓库拥有更多的控制,相比较 GitHub , 它有不少特色:
- 允许免费设置仓库权限;
- 允许免费设置仓库权限;
- 允许用户设置 project 的获取权限,进一步提升安全性;
- 可以设置获取到团队整体的改进进度;
- 通过 innersourcing 让不在权限范围内的人访问不到该资源;
所以,从代码的私有性上来看,GitLab 是一个更好的选择。但是对于开源项目而言,GitHub 依然是代码托管的首选。
GitLab的部署
本文使用的是在centos7下使用docker进行搭建gitlab;
如果想使用linux直接安装,可以查看简单的教程:https://www.cnblogs.com/zhujingzhi/p/9703457.html
docker安装gitlab
1、安装命令(中文版镜像):
docker run -d -p 8443:443 -p 80:80 -p 8022:22 --restart always --name gitlab -v /usr/local/gitlab/etc:/etc/gitlab -v /usr/local/gitlab/log:/var/log/gitlab -v /usr/local/gitlab/data:/var/opt/gitlab --privileged=true twang2218/gitlab-ce-zh
2、登录gitlab容器:
docker exec -it gitlab bash
3、登录后进行gitlab配置:
vi /etc/gitlab/gitlab.rb
在任意地方加入下面配置代码:
# 是否启用
gitlab_rails['smtp_enable'] = true
# SMTP服务的地址
gitlab_rails['smtp_address'] = "smtp.qq.com"
# 端口
gitlab_rails['smtp_port'] = 465
# 你的QQ邮箱(发送账号)
gitlab_rails['smtp_user_name'] = "********@qq.com"
# 授权码
gitlab_rails['smtp_password'] = "atu**********vfeij"
# 域名
gitlab_rails['smtp_domain'] = "smtp.qq.com"
# 登录验证
gitlab_rails['smtp_authentication'] = "login"
# 使用了465端口,就需要配置下面三项
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['smtp_tls'] = true
gitlab_rails['smtp_openssl_verify_mode'] = 'none'
# 你的QQ邮箱(发送账号)
gitlab_rails['gitlab_email_from'] = '**********@qq.com'
4、保存推出文件后对所改配置立即生效:
gitlab-ctl reconfigure
5、查看生效后配置
vi /opt/gitlab/embedded/service/gitlab-rails/config/gitlab.yml
如果信息无误,则gitlab安装完成。
登录GitLab
- 访问:http://192.168.137.130(你对应的ip)
- 设置新密码
- 重新登录页面:
用户名:(默认)root
密码:刚才设置的密码
输入用户名密码,登录即可
本地测试提交:(ssh://git@http://192.168.137.130)
1、全局配置授权信息
git config --global user.name "你的名字"
git config --global user.email "你的邮箱"
2.、仓库初始化
cd existing_folder
git init
git remote add origin ssh://git@192.168.147.132:8022/Nick/demo.git
git add .
git commit -m "Initial commit"
git push -u origin master
注意:你的名字填写root,邮箱填写你注册时使用的邮箱(如果另外注册了用户也可以填写)
至此,就搭建好了可以媲美GitLab的代码托管工具了。
GitLab Runner的安装与使用
相关简介
- GitLab-CI
GitLab-CI就是一套配合GitLab使用的持续集成系统(当然,还有其它的持续集成系统,同样可以配合GitLab使用,比如Jenkins)。而且GitLab8.0以后的版本是默认集成了GitLab-CI并且默认启用的。 - GitLab-Runner
GitLab-Runner是配合GitLab-CI进行使用的。一般地,GitLab里面的每一个工程都会定义一个属于这个工程的软件集成脚本,用来自动化地完成一些软件集成工作。当这个工程的仓库代码发生变动时,比如有人push了代码,GitLab就会将这个变动通知GitLab-CI。这时GitLab-CI会找出与这个工程相关联的Runner,并通知这些Runner把代码更新到本地并执行预定义好的执行脚本。
所以,GitLab-Runner就是一个用来执行软件集成脚本的东西。你可以想象一下:Runner就像一个个的工人,而GitLab-CI就是这些工人的一个管理中心,所有工人都要在GitLab-CI里面登记注册,并且表明自己是为哪个工程服务的。当相应的工程发生变化时,GitLab-CI就会通知相应的工人执行软件集成脚本。如下图所示:
安装GitLab Runner
使用docker本地卷来安装Runner,数据会被保存在本地。
1、安装命令:
docker run -d --name gitlab-runner --restart always \
-v /srv/gitlab-runner/config:/etc/gitlab-runner \
-v /var/run/docker.sock:/var/run/docker.sock \
gitlab/gitlab-runner:latest
2、docker进入gitlab-runner
docker exec -it gitlab-runner bash
3、进入gitlab-runner后注册一个runner
gitlab-ci-multi-runner register
输入gitlab-ci的url
http://192.168.1.39/ci
输入gitlab-ci给runner的token
dZ259BnLp6j-JS8sBk3G
输入runner的名字(随意取)
usercenter-runner
输入runner获取的仓库分支
develope
输入执行人(模式)
shell
也可以不登录git-runner容器,直接在命令行注册
docker run --rm -v /srv/gitlab-runner/config:/etc/gitlab-runner gitlab/gitlab-runner register \
--non-interactive \
--executor "docker" \
--docker-image alpine:latest \
--url "http://192.168.137.130/" \
--registration-token "wgqg6_2Si-7RfgKbyYnL" \
--description "20211028-register-runner" \
--tag-list "global-runner,gitlab-test" \
--run-untagged="true" \
--locked="false" \
--access-level="not_protected"
url是gitlab的地址;
registration-token是注册的Token;
description是注册容器的描述;
tag-list是该容器的标签;
run-untagged是配置是否需要指定标签;
locked是Runner是否能被指定到其它项目
其中Token是需要登录GitLab后获取的:
当你注册了git-runner容器后,就可以获取Runner 令牌
通过CI简单的配置运行Runner
1、根目录创建一个 .gitlab-ci.yml 文件
通过配置.gitlab-ci.yml文件来告诉CI要对你的项目做什么。
仓库一旦收到任何推送,GitLab将立即查找.gitlab-ci.yml文件,并根据文件的内容在Runner上启动作业。
2、编写 .gitlab-ci.yml 文件脚本
job1:
stage: .pre
tags:
- gitlab-test
script:
- echo 'my .pre job'
job2:
stage: build
tags:
- gitlab-test
script:
- echo 'my .pre job'
job3:
stage: test
tags:
- gitlab-test
script:
- echo 'my .test job'
job4:
stage: test
tags:
- gitlab-test
script:
- echo 'my test stage job4'
在这简单的.gitlab-ci.yml配置中:
job是作业名称,可以自定义,
stage是任务执行阶段,
tags是runner指定的标签,
script是该任务中执行的脚本,可以是shell脚本,也可以是执行centos上的某个脚本文件。
3、也可以自定义测试阶段(stage1、stage2、stage3)
stages:
- build
- test
- install
job1:
stage: build
tags:
- gitlab-test
script:
- echo 'my build job'
job2:
stage: test
tags:
- gitlab-test
script:
- echo 'my .test1 job'
job3:
stage: test
tags:
- gitlab-test
script:
- echo 'my .test2 job'
job4:
stage: install
tags:
- gitlab-test
script:
- echo 'my install job'
4、编写好.gitlab-ci.yml文件后,之后的每次代码提交,脚本都会按编写的执行一遍。
测试如下
执行结果:
可以查看执行的流水线图:
也可以点击去查看执行的log。