使用Docker在Linux搭建Gitlab+Gitlab-Runner环境并完成CI/CD配置

1 篇文章 0 订阅
1 篇文章 0 订阅
本文详细介绍了如何在LinuxDeepinV20.8环境下,使用Docker拉取Gitlab和Gitlab-Runner镜像,创建挂载目录,启动并配置容器,修改容器参数,注册与配置Gitlab-runner,以及进行相关设置以实现CI/CD流程。
摘要由CSDN通过智能技术生成

本文描述了在Linux环境中搭建Gitlab+Gitlab-Runner实验环境的过程,可以在服务器端,也可以在自己的笔记本上搭建这个环境用来使用Gitlab的CI/CD流程。所有的软件运行在一台电脑上,我自己是在华为的笔记本上运行,配置为16G内存+512G固态硬盘,安装的Linux发行版是Deepin V20.8,供参考。

1. 拉取镜像

# 拉取Gitlab和Gitlab-runner镜像
docker pull registry.gitlab.cn/omnibus/gitlab-jh
docker pull gitlab/gitlab-runner

2. 创建Gitlab的挂载目录并启动Gitlab容器

Gitlab容器需要挂载三个路径:etclogopt,用来保存持久化数据,我们在当前用户的根目录中新建这三个路径,假定当前用户名为gitlab。然后通过挂载这三个路径的方式启动gitlab。

# 创建挂载目录
cd ~
mkdir gitlab-ce
mkdir gitlab-ce/etc
mkdir gitlab-ce/log
mkdir gitlab-ce/opt
# 启动容器
docker run -itd -p 80:80 -p 9922:22 -v /home/gitlab/gitlab-ce/etc:/etc/gitlab -v /home/gitlab/gitlab-ce/log:/var/log/gitlab -v /home/gitlab/gitlab-ce/opt:/var/opt/gitlab --restart always  --privileged=true --name gitlab registry.gitlab.cn/omnibus/gitlab-jh
参数描述
-i以交互模式运行容器
-t为容器重新分配一个伪输入终端,通常与 -i 同时使用
-d后台运行容器
-p 80:80将容器内80端口映射至宿主机80端口,这是访问gitlab的端口
-p 9922:22将容器内22端口映射至宿主机9922端口,这是访问ssh的端口
-v /home/gitlab/gitlab-ce/etc:/etc/gitlab将容器/etc/gitlab目录挂载到宿主机/home/gitlab/gitlab-ce/etc目录下,这里是gitlab的配置文件,挂载后可以直接在宿主机访问并修改
-v /home/gitlab/gitlab-ce/log:/var/log/gitlab将容器/var/log/gitlab目录挂载到宿主机/home/gitlab/gitlab-ce/log目录下,这里是gitlab的日志文件,挂载后可以直接在宿主机查看
-v /home/gitlab/gitlab-ce/opt:/var/opt/gitlab将容器的/var/opt/gitlab目录挂载到宿主机/home/gitlab/gitlab-ce/opt目录下,这里是XXX
–restart always容器自启动
–privileged=true让容器获取宿主机root权限
–name gitlab设置容器名称为gitlab
gitlab/gitlab-ce镜像的名称

3. 修改容器参数

之后需要在容器内进行修改参数。

# 首先看一下本机的IP地址,并且记录下来,这里假定是192.168.xxx.xxx
ifconfig

# 进入容器内部
docker exec -it gitlab bash
 
# 修改gitlab.rb
vi /etc/gitlab/gitlab.rb
 
# 修改下面的配置
# gitlab访问地址,可以写域名。如果端口不写的话默认为80端口
external_url 'http://192.168.xxx.xxx'
# ssh主机ip
gitlab_rails['gitlab_ssh_host'] = '192.168.xxx.xxx'
# ssh连接端口
gitlab_rails['gitlab_shell_ssh_port'] = 9922

# 让配置生效
gitlab-ctl reconfigure

重新配置后会/etc/gitlab/gitlab.rb文件会更新gitlab.yml这个文件,如果gitlab访问地址不是80端口,要修改下面文件

# 修改http和ssh配置
vi /opt/gitlab/embedded/service/gitlab-rails/config/gitlab.yml
 
  gitlab:
    host: 192.168.xxx.xxx
    port: 80 # 如果使用非80端口,在这里修改
    https: false

然后重启gitlab使配置生效

# 重启gitlab 
gitlab-ctl restart
# 退出容器 
exit

4. 在宿主机使用浏览器访问 gitlab

使用浏览器访问:http://192.168.xxx.xxx/
正常情况下会出现下面的登录界面

在这里插入图片描述

【注意】如果出现502错误,可能是电脑内存不足,可以等一下,一般会恢复正常
502报错

5. 登录并修改密码

gitlab-ce安装以后,把root用户的初始密码放在了一个临时文件中了

/etc/gitlab/initial_root_password

打开这个文件,就可以看到Password:后面的一长串字符就是root用户的初始密码。建议登录后尽快修改密码。【注意】这个文件将在首次执行reconfigure后24小时自动删除。

6. 拷贝runner的token

使用root用户登录后,进入Admin界面
选择Admin菜单
选择CI/CD-Runners菜单
选择CI/CD-Runners菜单
拷贝Registration Token,在下面注册runner的时候需要使用
在这里插入图片描述

7. 安装Gitlab-runner

Gitlab-runner容器需要挂载一个路径:config,用来保存配置数据。同时我们需要指定宿主机运行docker的sock文件,这样runner在启动docker容器的时候会调用宿主机的docker-daemon,不需要再Gitlab-runner中再安装docker-daemon

# 创建挂载目录
cd ~
mkdir gitlab-runner
mkdir gitlab-runner/config
# 启动容器
docker run -d --name gitlab-runner --restart always -v /home/gitlab/gitlab-runner/config:/etc/gitlab-runner -v /var/run/docker.sock:/var/run/docker.sock gitlab/gitlab-runner

8. 向Gitlab注册runner

进入Runner容器内

docker exec -it gitlab-runner bash

运行register命令开始注册

gitlab-runner register

输入Gitlab的地址,与上面第3节的external_url相同

Runtime platform   arch=amd64 os=linux pid=41 revision=d540b510 version=15.9.1
Running in system-mode.                            
                                                   
Enter the GitLab instance URL (for example, https://gitlab.com/):
http://192.168.xxx.xxx

输入Registration Token,参见第6节。

Enter the registration token:
xxxxxxxxxxxxxxxx

输入Runner的描述

Enter a description for the runner:
[hostname]: my-runner

输入与Runner关联的标签,标签对应于.gitlab-ci.yml脚本中的tags,可以选择一个或者多个Runner来执行,这里我们设置他的标签为test和prod,你们可以设置其他的

Enter tags for the runner (comma-separated):
test,prod

输入runner的描述文字,可选

Enter optional maintenance note for the runner:
my-runner

输入Runner的执行器
由于我们都是基于Docker,所以这里选择执行器为Docker

Enter an executor: custom, docker, parallels, shell, kubernetes, docker-ssh, ssh, virtualbox, docker+machine, docker-ssh+machine, instance:
docker

设置执行器的默认docker镜像,由于我们使用Docker作为执行器,因此在这里需要指定使用Docker:20.10.16镜像作为默认镜像。

Enter the default Docker image (for example, ruby:2.7):
docker:20.10.16

退出容器

exit

9. Gitlab-runner的附加配置

由于我们使用Docker启动了Gitlab-runner,又配置了在runner中使用docker作为基础镜像运行jobs,也就是我们使用了“Docker中的Docker”因此我们需要做对Gitlab-runner做一下附加配置。
进入gitlab-runner下/etc/gitlab-runner/,修改config.toml。
由于gitlab-runner的容器内没有预装vi,所以我们可以直接在宿主机修改这个文件/home/gitlab/gitlab-runner/config/config.toml

privileged = true

然后重启gitlab runner

docker restart gitlab-runner

9. 检查

再按照第6节的方法看一下runners,会出现一个已经注册的runner。

GitLab-RunnerGitLab提供的一个开源工具,可以用于在GitLab上运行CI/CD任务。通过GitLab-Runner,可以方便地实现自动化的构建、测试、集成和部署等任务。 下面是一些使用GitLab-Runner打造锋利的CI/CD的方法: 1. GitLab-Runner安装和配置:首先需要安装GitLab-Runner,并将其配置GitLab服务器上。可以通过Docker容器、二进制包或源码编译的方式安装GitLab-Runner,然后在GitLab服务器上注册Runner,并设置Runner的执行环境和权限等参数。 2. 编写CI/CD脚本:在GitLab上创建项目,并在项目中编写CI/CD脚本,定义任务的执行流程和步骤。可以使用GitLab提供的CI/CD工具和插件,也可以使用第三方工具和脚本库。 3. 构建、测试和集成:通过GitLab-Runner执行CI/CD任务,自动化构建、测试和集成代码,并生成测试报告和代码覆盖率报告等文档。可以使用各种编程语言和框架,如Java、Python、Ruby、Node.js等。 4. 部署和发布:通过GitLab-Runner将代码部署到目标服务器上,并执行自动化发布流程。可以使用容器化技术、配置管理工具、自动化部署工具等实现高效、可靠的部署和发布。 5. 监控和反馈:通过GitLab的监控和反馈机制,及时发现和解决CI/CD任务中的问题和错误,并持续优化任务的执行效率和稳定性。可以使用各种监控工具和日志分析工具,如Prometheus、Grafana、ELK等。 总之,使用GitLab-Runner打造锋利的CI/CD,可以提高开发和运维的效率和质量,降低项目的风险和成本,实现持续交付和快速迭代的目标。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值