gitlab+drone 安装部署

gitlab服务地址:10.0.1.2

drone服务地址:10.0.1.12

CentOS版本: 8.3

gitlab版本: gitlab-ee 13.2

drone版本:latest。。。

部署gitlab

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#### 打开防火墙访问控制
firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-service=https
systemctl reload firewalld

#### 或者关掉防火墙
# systemctl stop firewalld
# systemctl disable firewalld

#### 配置gitlab的yum仓库
curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ee/script.rpm.sh | bash

#### 安装
yum install -y gitlab-ee

#### 修改配置文件
vi /etc/gitlab/gitlab.rb

主要修改external_url等配置,改为ip或者域名, 比如本例是 external_url 'http://10.0.1.2'

修改配置文件后执行进行更新:

1
2
3
## 如果initdb报错,执行:
## export LC_ALL=C
gitlab-ctl reconfigure

gitlab项目目录:/var/opt/gitlab

gitlab服务名称:gitlab-runsvdir

启动、停止、重启服务:

1
2
systemctl (start|stop|restart|status)  gitlab-runsvdir
gitlab-ctl (start|stop|restart|status)

关联drone服务

使用root账户在gitlab上关联drone服务,因此以后所有的Project和Group必须用root账号来创建!

  • 在gitlab上创建认证。右上角头像EditProfile - User Settings - Applications

填写名称(name),回调地址(Redirect URI),勾选api、read_user权限

upload successful

  • 创建完成,复制Application ID 和Secret

upload successful

  • 生成drone server和agent之间使用的验证secret
1
2
$ openssl rand -hex 16
945f80dab338fda930e1f76d4a22116d

部署drone:

10.0.1.12 上执行:

1
2
3
4
5
6
yum install -y docker 
docker pull drone/drone:latest
docker pull drone/drone-runner-docker:latest
mkdir /var/lib/drone
systemctl stop firewalld
systemctl disable firewalld

:CentOS 8 目前docker替换为了podman, 因此需设置开机自启 podman.socket,并立即启动:

1
systemctl enable podman.socket --now

新建run_drone.sh, 填入gitlab生成的ID和Secret,以及生成的验证secret

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
docker run \
--volume=/var/lib/drone:/data \
--env=DRONE_AGENTS_ENABLED=true \
--env=DRONE_GITLAB_SERVER=http://10.0.1.2 \
--env=DRONE_GITLAB_CLIENT_ID=ed18182ff26f2a15c7b3085f6956c237a266c6ba4c06359196ee56a71774c84c \
--env=DRONE_GITLAB_CLIENT_SECRET=b1bf5dbc892161337156eae9ec75b9c8ae954c30d759be4f51c8d86c78a905c7 \
--env=DRONE_RPC_SECRET=945f80dab338fda930e1f76d4a22116d \
--env=DRONE_SERVER_HOST=10.0.1.12 \
--env=DRONE_SERVER_PROTO=http \
--env=DRONE_TLS_AUTOCERT=false \
--env=DRONE_LOGS_DEBUG=true \
--publish=80:80 \
--publish=443:443 \
--restart=always \
--detach=true \
--name=drone \
drone/drone

启动docker(podman):

1
sh run_drone.sh

浏览器输入:http://10.0.1.12, 进入drone页面,点击continue,进入授权界面:

upload successful

注册drone,然后即可调入drone界面:

upload successful

成功后在10.0.1.12上部署 docker runner:

1
2
3
4
5
6
7
8
9
10
11
12
docker run -d   \
-v /var/run/docker.sock:/var/run/docker.sock \
-e DRONE_RPC_PROTO=http \
-e DRONE_RPC_HOST=10.0.1.12 \
-e DRONE_RPC_SECRET=945f80dab338fda930e1f76d4a22116d \
-e DRONE_RUNNER_CAPACITY=2 \
-e DRONE_RUNNER_NAME=10.0.1.12 \
-e DRONE_LOGS_DEBUG=true \
-p 3000:3000 \
--restart always \
--name agent \
drone/agent

使用drone

  • root账户下打开上面的图标进入Admin Area - Settings - Network - Outbound requests,勾选Allow requests to the local network from web hooks and services,避免drone项目激活失败!

upload successful

  • 之后root账户建立好组和项目后,同步仓库

upload successful

  • 点击对应项目,点击“ACTIVATE REPOSITORY”按钮,激活项目,之后就可以