使用Docker Compose搭建GitLab的CI/CD集成化部署环境以及使用

at 2年前  ca gitlab  pv 2330  by touch  

一、安装gitlab-ce

 Docker Compose安装gitlab-ce官方教程:


GitLab Docker images | GitLab

Documentation for GitLab Community Edition, GitLab Enterprise Edition, Omnibus GitLab, and GitLab Runner.

https://docs.gitlab.com/ee/install/docker.html


1、建立gitlab目录

  1. mkdir -/data/soft/gitlab

2、在/data/soft/gitlab目录下创建docker-compose.yml

docker-compose.yml的内容如下:

  1. version: "3.9"
  2.  
  3. services:
  4.   gitlab-ce:
  5.     image: "gitlab/gitlab-ce:latest"
  6.     ports:
  7.       - "8888:8888"
  8.       - "2222:22"
  9.     environment:
  10.       # 此处 ip 须与上面 hostname 一致,端口号自定义
  11.       GITLAB_OMNIBUS_CONFIG: |
  12.         external_url 'http://ljxwtl.cn:8888' 
  13.         gitlab_rails['gitlab_shell_ssh_port'] = 2222
  14.     restart: always
  15.     volumes:
  16.       - "/data/soft/gitlab/config:/etc/gitlab"
  17.       - "/data/soft/gitlab/logs:/var/log/gitlab"
  18.       - "/data/soft/gitlab/data:/var/opt/gitlab"

3、使用docker compose up -d进行安装

  1. docker-compose up -d

4、查看安装进度

  1. docker-compose logs -f gitlab-ce

5、获取初始 root 密码

  1. docker exec -it $(docker ps | grep gitlab | awk '{print $1}') grep 'Password:' /etc/gitlab/initial_root_password

6、访问对应IP:端口(或者域名:端口)(

Sign in · GitLab

GitLab Community Edition

http://ljxwtl.cn:8888/

)的Gitlab网站

 使用Docker Compose搭建GitLab的CI/CD集成化部署环境以及使用 gitlab 第1张




二、安装gitlab-runner

  Docker Compose安装gitlab-runner官方教程:


Run GitLab Runner in a container | GitLab

Documentation for GitLab Community Edition, GitLab Enterprise Edition, Omnibus GitLab, and GitLab Runner.

https://docs.gitlab.com/runner/install/docker.html


第一种安装方式:docker compose

1、创建gitlab-ce目录

  1. mkdir -/data/soft/gitlab-runner

2、在/data/soft/gitlab-runner目录下创建docker-compose.yml

docker-compose.yml的内容如下:

  1. version: "3.9"
  2. services:
  3.   gitlab-runner:
  4.     image: "gitlab/gitlab-runner:latest"
  5.     restart: always
  6.     privileged: true
  7.     volumes:
  8.       - "/data/soft/gitlab-runner/config:/etc/gitlab-runner"
  9.       - "/var/run/docker.sock:/var/run/docker.sock"

 3、使用docker compose up -d进行安装

  1. docker-compose up -d

4、查看安装进度

  1. docker-compose logs -f gitlab-runner

第二种安装方式:rpm安装 

Install GitLab Runner manually on GNU/Linux | GitLab

https://docs.gitlab.com/runner/install/linux-manually.html

GitLab Runner :: 15.0.0

https://gitlab-runner-downloads.s3.amazonaws.com/latest/index.html



1、下载gitlab-runner的二进制文件

  1. wget https://gitlab-runner-downloads.s3.amazonaws.com/latest/rpm/gitlab-runner_amd64.rpm

2、安装gitlab-runner的rpm安装包

  1. rpm -ivh gitlab-runner_amd64.rpm

使用Docker Compose搭建GitLab的CI/CD集成化部署环境以及使用 gitlab 第2张


 3、更改Gitlab-Runner的配置

  1. vim /etc/gitlab-runner/config.toml
  2. concurrent = 30
  3. check_interval = 0
  4.  
  5. [session_server]
  6.   session_timeout = 1800

 4、启动Gitlab-Runner

  1. gitlab-runner start

5、rpm 安装后的git版本可能比较低,需要升级较高版本:

(1)首先,卸载git

  1. yum remove -y git

 yum 安装高版本Git:


Index of /centos/7/git/x86_64/

http://opensource.wandisco.com/centos/7/git/x86_64/


  1. yum install http://opensource.wandisco.com/centos/7/git/x86_64/wandisco-git-release-7-2.noarch.rpm
  2. yum -y install git

(2) 然后 安装gitlab-runner的rpm安装包

  1. rpm -ivh gitlab-runner_amd64.rpm

 (3)更改Gitlab-Runner的配置

  1. vim /etc/gitlab-runner/config.toml
  2. concurrent = 30
  3. check_interval = 0
  4.  
  5. [session_server]
  6.   session_timeout = 1800

(4)启动Gitlab-Runner

  1. gitlab-runner start

然后就可以正常使用了!!!


推荐使用第二种rpm本地安装Gitlab-Runner!!! 


三、Gitlab操作细节

1、新建群组

使用Docker Compose搭建GitLab的CI/CD集成化部署环境以及使用 gitlab 第3张

 使用Docker Compose搭建GitLab的CI/CD集成化部署环境以及使用 gitlab 第4张

使用Docker Compose搭建GitLab的CI/CD集成化部署环境以及使用 gitlab 第5张

使用Docker Compose搭建GitLab的CI/CD集成化部署环境以及使用 gitlab 第6张

使用Docker Compose搭建GitLab的CI/CD集成化部署环境以及使用 gitlab 第7张

2、创建用户

使用Docker Compose搭建GitLab的CI/CD集成化部署环境以及使用 gitlab 第8张使用Docker Compose搭建GitLab的CI/CD集成化部署环境以及使用 gitlab 第9张使用Docker Compose搭建GitLab的CI/CD集成化部署环境以及使用 gitlab 第10张


3、以管理员身份为用户tlzs设置密码


使用Docker Compose搭建GitLab的CI/CD集成化部署环境以及使用 gitlab 第11张使用Docker Compose搭建GitLab的CI/CD集成化部署环境以及使用 gitlab 第12张使用Docker Compose搭建GitLab的CI/CD集成化部署环境以及使用 gitlab 第13张


4、将用户tlzs添加到某个组里  

使用Docker Compose搭建GitLab的CI/CD集成化部署环境以及使用 gitlab 第14张

使用Docker Compose搭建GitLab的CI/CD集成化部署环境以及使用 gitlab 第15张



5、GitLab用户权限管理

GitLab用户在组中有五种权限:Guest、Reporter、Developer、Master、Owner。

  • Guest

可以创建issue、发表评论、不能读写版本库。

  • Reporter

可以克隆代码,不能提交,QA、PM可以赋予这个权限。

  • Developer

可以克隆代码、开发、提交、push、RD可以赋予这个权限。

  • Master

可以创建项目、添加 tag 、保护分支、添加项目成员、编辑项目、核心RD负责人可以赋予这个权限。

  • Owner

可以设置项目的访问权限-Visibility Level、删除项目、迁移项目、管理组成员、开发组leader可以赋予这个权限。


6、GitLab中的组和项目有三种访问权限

GitLab中的组和项目有三种访问权限:Private、Internal、Public。

  • private

只有组成员可以看到。

  • internal

只要登录的用户就能看到。

  • public

开源的所有的人都可以看到。 


7、设置为开发者

使用Docker Compose搭建GitLab的CI/CD集成化部署环境以及使用 gitlab 第16张


使用Docker Compose搭建GitLab的CI/CD集成化部署环境以及使用 gitlab 第17张


 8、为群组创建项目

使用Docker Compose搭建GitLab的CI/CD集成化部署环境以及使用 gitlab 第18张使用Docker Compose搭建GitLab的CI/CD集成化部署环境以及使用 gitlab 第19张使用Docker Compose搭建GitLab的CI/CD集成化部署环境以及使用 gitlab 第20张


使用Docker Compose搭建GitLab的CI/CD集成化部署环境以及使用 gitlab 第21张


 9、clone项目

使用Docker Compose搭建GitLab的CI/CD集成化部署环境以及使用 gitlab 第22张

使用Docker Compose搭建GitLab的CI/CD集成化部署环境以及使用 gitlab 第23张



使用Docker Compose搭建GitLab的CI/CD集成化部署环境以及使用 gitlab 第24张

 .gitlab-ci.yml:

  1. stages:
  2.   - stage1
  3.   - stage2
  4.   - stage3
  5.  
  6. stage1:
  7.   before_script:
  8.     - echo "hello,stage1---before_script"
  9.   script:
  10.     - echo "hello,stage1---script"
  11.   after_script:
  12.     - echo "hello,stage1---after_script"
  13.  
  14. stage2:
  15.   before_script: 
  16.     - echo "hello,stage2---before_script"
  17.   script:
  18.     - echo "hello,stage2---script"
  19.   after_script:
  20.     - echo "hello,stage2---after_script"
  21.  
  22. stage3:
  23.   before_script:
  24.     - echo "hello,stage3---before_script"
  25.   script:
  26.     - echo "hello,stage3---script"
  27.   after_script:
  28.     - echo "hello,stage3---after_script"


 10、为新项目配置gitlab-runner:

使用Docker Compose搭建GitLab的CI/CD集成化部署环境以及使用 gitlab 第25张使用Docker Compose搭建GitLab的CI/CD集成化部署环境以及使用 gitlab 第26张


 11、注册Runner信息到gitlab

  1. docker ps -a

使用Docker Compose搭建GitLab的CI/CD集成化部署环境以及使用 gitlab 第27张


  1. docker exec -it a80ec576152c gitlab-runner register
  1. [root@localhost gitlab]# docker exec -it a80ec576152c gitlab-runner register
  2. Runtime platform                                    arch=amd64 os=linux pid=713 revision=f761588f version=14.10.1
  3. Running in system-mode.                            
  4.                                                    
  5. Enter the GitLab instance URL (for example, https://gitlab.com/):
  6. http://ljxwtl.cn:8888/
  7. Enter the registration token:
  8. GR13489417-h8xcSZ6VHyYzLZknrw
  9. Enter a description for the runner:
  10. [a80ec576152c]: MyProjectGitlab-Runner
  11. Enter tags for the runner (comma-separated):
  12. Java,IT,Golang,JavaScript
  13. Enter optional maintenance note for the runner:
  14.  
  15. Registering runner... succeeded                     runner=GR13489417-h8xcSZ
  16. Enter an executor: shell, virtualbox, docker-ssh+machine, ssh, docker+machine, kubernetes, custom, docker, docker-ssh, parallels:
  17. shell
  18. Runner registered successfully. Feel free to start it, but if it's running already the config should be automatically reloaded!


使用Docker Compose搭建GitLab的CI/CD集成化部署环境以及使用 gitlab 第28张使用Docker Compose搭建GitLab的CI/CD集成化部署环境以及使用 gitlab 第29张


'New runner. Has not connected yet.' for any gitlab-runner newer than 11.0.2-1 (#3750) · Issues · GitLab.org / gitlab-runner · GitLab

Summary Cannot use freshly registered runners. They are not picking jobs. Immediately after running register command:

https://gitlab.com/gitlab-org/gitlab-runner/-/issues/3750


 gitlab-runner register --non-interactive --executor 'shell' --url 'https://gitlab.com' --registration-token 'TOKEN'


  1. docker exec -it a80ec576152c gitlab-runner register --non-interactive --executor 'shell' --url 'http://ljxwtl.cn:8888/' --registration-token 'GR13489417-h8xcSZ6VHyYzLZknrw'

 以上方法解决不了的话,使用以下方案:


1、Runner未激活问题

有时候管理员注册共享runner后,查看面板上的Runner信息,可能会发现Runner处在未激活状态。

解决方法:

运行以下命令重新启动Runner。

  1. gitlab-runner verify
  2. gitlab-runner restart

2、Job一直挂起,没有Runner来处理,原因:

1)首先考虑的是不是Runner没有激活

2)还可能是tags没有匹配到, Runner注册时是要填写绑定tags的,如果你在YML里面编写Job没有带上tags是不会有自定义Runner来处理。解决方法:给Job加tags。

3)最后一种可能:你连续注册了多个Runner,这些Runner冲突了,或者是新注册的Runner和旧Runner使用了同一个token,这时候的解决方法如下:

先删掉本地其他旧的Runner。

  1. sudo gitlab-runner unregister --all-runners

然后重置Token,并使用更新后的Token重新注册一个Runner


(1)进入/data/soft/gitlab-runner目录,

使用Docker Compose搭建GitLab的CI/CD集成化部署环境以及使用 gitlab 第30张


(2)进入config目录,

使用Docker Compose搭建GitLab的CI/CD集成化部署环境以及使用 gitlab 第31张

 (3)编辑config.toml文件


将concurrent = 1改成concurrent = 100


使用Docker Compose搭建GitLab的CI/CD集成化部署环境以及使用 gitlab 第32张使用Docker Compose搭建GitLab的CI/CD集成化部署环境以及使用 gitlab 第33张使用Docker Compose搭建GitLab的CI/CD集成化部署环境以及使用 gitlab 第34张


 成功解决!!!


12、rpm安装的Gitlab-Runner注册Runner信息到gitlab

 使用Docker Compose搭建GitLab的CI/CD集成化部署环境以及使用 gitlab 第35张

'New runner. Has not connected yet.' for any gitlab-runner newer than 11.0.2-1 (#3750) · Issues · GitLab.org / gitlab-runner · GitLab

Summary Cannot use freshly registered runners. They are not picking jobs. Immediately after running register command:

https://gitlab.com/gitlab-org/gitlab-runner/-/issues/3750


  1.  gitlab-runner register --non-interactive --executor 'shell' --url 'https://gitlab.com' --registration-token 'TOKEN'


 


四、项目CI/CD自动运行脚本

1、增加项目目录下的.gitlab-ci.yml文件

.gitlab-ci.yml:


  1. stages:
  2.   - stage1
  3.   - stage2
  4.   - stage3
  5.  
  6. stage1:
  7.   before_script:
  8.     - echo "hello,stage1---before_script"
  9.   script:
  10.     - echo "hello,stage1---script"
  11.   after_script:
  12.     - echo "hello,stage1---after_script"
  13.  
  14. stage2:
  15.   before_script: 
  16.     - echo "hello,stage2---before_script"
  17.   script:
  18.     - echo "hello,stage2---script"
  19.   after_script:
  20.     - echo "hello,stage2---after_script"
  21.  
  22. stage3:
  23.   before_script:
  24.     - echo "hello,stage3---before_script"
  25.   script:
  26.     - echo "hello,stage3---script"
  27.   after_script:
  28.     - echo "hello,stage3---after_script"

 2、提交代码到main主分支上 

使用Docker Compose搭建GitLab的CI/CD集成化部署环境以及使用 gitlab 第36张

使用Docker Compose搭建GitLab的CI/CD集成化部署环境以及使用 gitlab 第37张使用Docker Compose搭建GitLab的CI/CD集成化部署环境以及使用 gitlab 第38张使用Docker Compose搭建GitLab的CI/CD集成化部署环境以及使用 gitlab 第39张






使用Docker Compose搭建GitLab的CI/CD集成化部署环境以及使用 gitlab 第40张


 禁用共享Runner!!!


版权声明

本文仅代表作者观点,不代表码农殇立场。
本文系作者授权码农殇发表,未经许可,不得转载。

 

扫一扫在手机阅读、分享本文

冀ICP备14009681号-2 Powered By 码农殇 Theme By zb脚本
您是本站第6196名访客 今日有0篇新文章