Git——Docker搭建GitLab&简单的Runner配置

2022-09-26 18:47:39 浏览数 (2)

GitLab简介

GitLab是一个开源的用于仓库管理的项目,和GitHub一样是使用Git作为代码管理工具。

GitLab和GitHub的区别: * GitHub作为开源代码库,拥有超过 900 万的开发者用户,目前仍然是最火的开源项目托管平台,GitHub 同时提供公共仓库和私有仓库,但如果使用私有仓库,是需要付费的。GitLab 解决了这个问题,你可以在上面创建私人的免费仓库。 * 让开发团队对他们的代码仓库拥有更多的控制,相比较 GitHub , 它有不少特色: 1. 允许免费设置仓库权限; 2. 允许免费设置仓库权限; 3. 允许用户设置 project 的获取权限,进一步提升安全性; 4. 可以设置获取到团队整体的改进进度; 5. 通过 innersourcing 让不在权限范围内的人访问不到该资源; 所以,从代码的私有性上来看,GitLab 是一个更好的选择。但是对于开源项目而言,GitHub 依然是代码托管的首选。

GitLab的部署

本文使用的是在centos7下使用docker进行搭建gitlab; 如果想使用linux直接安装,可以查看简单的教程:https://www.cnblogs.com/zhujingzhi/p/9703457.html

docker安装gitlab

1、安装命令(中文版镜像):

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

代码语言:javascript复制
docker exec -it gitlab bash

3、登录后进行gitlab配置:

代码语言:javascript复制
vi /etc/gitlab/gitlab.rb

在任意地方加入下面配置代码:

代码语言:javascript复制
# 是否启用
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、保存推出文件后对所改配置立即生效:

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

5、查看生效后配置

代码语言:javascript复制
vi /opt/gitlab/embedded/service/gitlab-rails/config/gitlab.yml

如果信息无误,则gitlab安装完成。

登录GitLab

  1. 访问:http://192.168.137.130(你对应的ip)
  2. 设置新密码
  3. 重新登录页面: 用户名:(默认)root 密码:刚才设置的密码 输入用户名密码,登录即可

本地测试提交:(ssh://git@http://192.168.137.130) 1、全局配置授权信息

代码语言:javascript复制
git config --global user.name "你的名字"
git config --global user.email "你的邮箱"

2.、仓库初始化

代码语言:javascript复制
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的安装与使用

相关简介

  1. GitLab-CI  GitLab-CI就是一套配合GitLab使用的持续集成系统(当然,还有其它的持续集成系统,同样可以配合GitLab使用,比如Jenkins)。而且GitLab8.0以后的版本是默认集成了GitLab-CI并且默认启用的。
  2. 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、安装命令:

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

代码语言:javascript复制
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容器,直接在命令行注册

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

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

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

0 人点赞