美文网首页javaWeb学习
GitLab 搭建 GitLab runner 搭建 GitL

GitLab 搭建 GitLab runner 搭建 GitL

作者: 44d18503659e | 来源:发表于2019-12-26 10:41 被阅读0次

最近需要在研究GitLab的CI,所以自己基于Docker搭建了一个GitLab环境, 在此做下记录...

搭建过程十分简单, 我是在自己电脑的虚拟中搭建的gitlab, 切记配置不能太低, gitlab比较耗资源, ,官方要求至少4G内存。

一、GitLab 的搭建

1.获取镜像

# gitlab-ce为稳定版本,后面不填写版本则默认pull最新latest版本
$ docker pull gitlab/gitlab-ce

我使用的是汉化版的镜像,docker pull twang2218/gitlab-ce-zh:latest

2.运行gitlab镜像

$ docker run -d  -p 443:443 -p 80:80 -p 222:22 --name gitlab --restart always -v /home/gitlab/config:/etc/gitlab -v /home/gitlab/logs:/var/log/gitlab -v /home/gitlab/data:/var/opt/gitlab gitlab/gitlab-ce
# -d:后台运行
# -p:将容器内部端口向外映射
# --name:命名容器名称
# -v:将容器内数据文件夹或者日志、配置等文件夹挂载到宿主机指定目录

3.配置

按上面的方式,gitlab容器运行没问题,但在gitlab上创建项目的时候,生成项目的URL访问地址是按容器的hostname来生成的,也就是容器的id。作为gitlab服务器,我们需要一个固定的URL访问地址,于是需要配置gitlab.rb(宿主机路径:/home/gitlab/config/gitlab.rb)。

# gitlab.rb文件内容默认全是注释
$ vim /home/gitlab/config/gitlab.rb

# 配置http协议所使用的访问地址,不加端口号默认为80
external_url 'http://宿主机IP'

# 配置ssh协议所使用的访问地址和端口
gitlab_rails['gitlab_ssh_host'] = '宿主机IP'
gitlab_rails['gitlab_shell_ssh_port'] = 222 # 此端口是run时22端口映射的222端口
:wq #保存配置文件并退出

# 重启gitlab容器
$ docker restart gitlab

此时就可以通过浏览器,使用IP+端口的方式访问GitLab了

4.其他配置

由于GitLab十分消耗资源,所以这里贴出来一些降低资源消耗的配置,仅供参考,因为我的目的仅仅是启动GitLab做实验,所有资源配置都很低。需要修改的是宿主机 /home/gitlab/config/gitlab.rb文件(注:路径需根据自己自定的数据卷位置修改)

# 配置http协议所使用的访问地址,不加端口号默认为80
external_url 'http://10.106.127.128:8088'

# 配置ssh协议所使用的访问地址和端口
gitlab_rails['gitlab_ssh_host'] = '10.106.127.128:8088'
gitlab_rails['gitlab_shell_ssh_port'] = 222 # 此端口是run时22端口映射的222端口

unicorn['worker_memory_limit_min'] = "100 * 1 << 20"
unicorn['worker_memory_limit_max'] = "150 * 1 << 20" #减小内存

sidekiq['concurrency'] = 5 # 减小sidekiq的并发数
postgresql['shared_buffers'] = "64MB" #数据库缓存
postgresql['max_worker_processes'] = 2 #数据库并发数

unicorn['worker_timout'] = 60

unicorn['worker_processes'] = 2

二、GitLab runner 搭建

1. 拉取镜像

 docker pull gitlab/gitlab-runner:latest 

2.运行镜像

docker run -d --name gitlab-runner --restart always \
  -v /docker/gitlab-runner/config:/etc/gitlab-runner \
  -v /var/run/docker.sock:/var/run/docker.sock \
  gitlab/gitlab-runner:latest

注意:这里docker.sock文件路径要确定, 之前就指定错路径导致后面使用容器exectuor的时候报错。

3.注册runner

这里使用的是specific Runner方式。在gitlab中 设置 --> CI/CD --> Runner(展开) 找到对应的配置信息。如图:

配置信息

运行命令:

docker run --rm -t -i -v /docker/gitlab-runner/config:/etc/gitlab-runner gitlab/gitlab-runner register

#输入GitLab URL
Please enter the gitlab-ci coordinator URL (e.g. https://gitlab.com )
https:// ***.***.com/

#输入你的注册token
Please enter the gitlab-ci token for this runner  
***

#输入对这个Runner的描述
Please enter the gitlab-ci description for this runner  
my-runner

#输入Runner的[tag] 
Please enter the gitlab-ci tags for this runner (comma separated):
test

#输入Runner的[executor] ,这里使用容器
Please enter the executor: ssh, docker+machine, docker-ssh+machine, kubernetes, docker, parallels, virtualbox, docker-ssh, shell:
docker

#如果你选择Docker作为Runner的executor,你还要选择默认的docker image来运行job
Please enter the Docker image (eg. ruby:2.1):
alpine:latest

至此GitLab runner已经搭建启动。

4、其他配置

  • 使用本地镜像
# 修改配置文件 :/docker/gitlab-runner/config/config.toml
# 在对应runner下增加如下配置, 防止重复拉取镜像
pull_policy = "if-not-present"
  • maven本地仓库缓存
# 修改配置文件 :/docker/gitlab-runner/config/config.toml
# 在对应runner下挂载数据卷
volumes = ["/cache","/root/.m2/:/root/.m2/"]

三、Hello Word

在项目的根路径添加配置文件 .gitlab-ci.yml
这里我们选择了一个maven的镜像作为executor的执行环境。执行了单元测试的任务。

image: hub.c.163.com/library/maven:latest  
test:
  stage: test
  script:
    - mvn test

还有一种比较常见的场景,我们需要对代码在CI阶段进行代码扫描。
比如使用GolangCI-Lint进行扫描,扫描后我们将扫描结果进行上传。
比如进行单元测试,当运行失败将结果上传。

image: hub.c.163.com/library/maven:latest
test:
  stage: test
  script:
    - mvn test
  artifacts:
    name: test.json #为上传的文件起名
    when: on_failure #当失败的时候进行
    paths:
      - test.json #上传文件路径

四、踩过的坑

  • 期初在注册的时候不清楚tags的含义,随便输入了个名字,在执行pipline时一直等待找不到可执行的runner。 遇到此问题,在.gitlab-ci.yml中配置指定 tags 即可。
  • 使用 shell 作为executor 执行用户是gitlab-runner如遇到权限问, 可以从此出发及决问题。

相关文章

网友评论

    本文标题:GitLab 搭建 GitLab runner 搭建 GitL

    本文链接:https://www.haomeiwen.com/subject/zfdkoctx.html