gitlab详细安装步骤,点击这里;本次使用的gitlab-ce是docker hub仓库,2022年5月最新版:
注意:hostname不能包含端口,否则gitlab启动不起来;
export GITLAB_HOME=/mydata/gitlab
docker run --detach \
--hostname "192.168.200.30" \
--publish 1443:443 --publish 80:80 --publish 1022:22 \
--name gitlab \
--restart always \
--volume $GITLAB_HOME/config:/etc/gitlab \
--volume $GITLAB_HOME/logs:/var/log/gitlab \
--volume $GITLAB_HOME/data:/var/opt/gitlab \
gitlab/gitlab-ce:latestgitlab的hostname填写的域名
(gitlab.admin.com),结果Drone流水线clone(克隆)代码时连接报错:
修改drone-runner默认clone(克隆)地址解决
。如下代码(这里看不懂没关系,请继续往下看后面会解释
):kind: pipeline
type: docker
name: default
clone:
disable: true #禁用默认克隆
steps:
- name: clone-test
image: alpine/git
pull: if-not-exists # 如果在本地缓存中找不到图像,则仅拉取图像
commands:
- git clone http://192.168.200.30/root/test.git #自定义克隆地址
- git version
- name: greeting
image: alpine
commands:
- echo hello
- echo worldhttp://192.168.200.30
),gitlab默认设置了root用户密码;修改默认root用户密码,点击这里:[root@master drone]# docker exec -it gitlab bash
root@192:/# cat /etc/gitlab/initial_root_password |grep Password:
Password: RUb+s6cnRsJk7S7Mg785nHewbwzoL4Cblfk/nnGKWZA=
用于授权Drone访问 GitLab 资源
。
注意:这里我提前在gitlab创建好了test仓库(空仓库),用于我们下面的演示;
Drone服务地址后必须跟一个/login
。例:http://192.168.200.30:82/login
docker-server
(Drone 与流行的源代码控制管理提供商无缝集成) WEB界面和docker-runner
守护进程执行器共享密钥
,用于drone-runner和drone-server之间的通信:[root@master drone]# openssl rand -hex 16
8172cd9155d16593d4f6a445b70e2d6edocker run \
--volume=/var/lib/drone:/data \
--env=DRONE_GITLAB_SERVER=http://192.168.200.30/ \ #GitLab 服务器 url,默认https://github.com
--env=DRONE_GITLAB_CLIENT_ID=56ef91f20270b6f945f722e2b93e2e9eacad65f0b5edcad997d4842df47cc5a8 \ #GitLab oauth 客户端 ID(必填项)
--env=DRONE_GITLAB_CLIENT_SECRET=159ab07250d7b02f171408a1a6e21f506295b33b5174c211b7dcb59b548e05a3 \ #GitLab oauth 客户端密码 (必填项)
--env=DRONE_RPC_SECRET=8172cd9155d16593d4f6a445b70e2d6e\ #验证服务器和运行器之间的 rpc 连接(drone-server和drone-runner连接时必填项)
--env=DRONE_SERVER_HOST=192.168.200.30:82 \ #供drone服务主机名或 IP 地址 (必填项)
--env=DRONE_SERVER_PROTO=http \ #drone服务使用的协议 (必填项)
--publish=82:80 \
--publish=443:443 \
--restart=always \
--detach=true \
--name=drone \
--env=DRONE_USER_CREATE=username:root,admin:true \ #Drone管理员用户创建
drone/drone:2 * drone启动参数很多,下面解释下:
+ DRONE_GITLAB_SERVER: GitLab 服务器 url,默认https://github.com
+ DRONE_GITLAB_CLIENT_ID: GitLab oauth 客户端 ID(必填项)
+ DRONE_GITLAB_CLIENT_SECRET: GitLab oauth 客户端密码 (必填项)
+ DRONE_RPC_SECRET: 验证服务器和运行器之间的 rpc 连接(drone-server和drone-runner连接时必填项)
+ DRONE_SERVER_HOST: 提供drone服务主机名或 IP 地址 (必填项)
+ DRONE_SERVER_PROTO: drone服务使用的协议 (必填项)
+ DRONE_USER_CREATE: Drone管理员用户创建* drone-runner启动参数很多,下面解释下: + DRONE_RPC_PROTO: 用于连接 Drone 服务器的协议 + DRONE_RPC_HOST: 提供 Drone 服务器的主机名 + DRONE_RPC_SECRET: 用于向 Drone 服务器进行身份验证的共享密钥 + DRONE_RUNNER_CAPACITY: 限制运行器可以执行的并发管道的数量 + DRONE_RUNNER_NAME: 设置runner的名字
successfully pinged the remote server
):[root@master drone]# docker logs -ft runner
2022-05-10T05:21:02.637256271Z time="2022-05-10T05:21:02Z" level=info msg="starting the server" addr=":3000"
2022-05-10T05:21:02.640121666Z time="2022-05-10T05:21:02Z" level=info msg="successfully pinged the remote server"
2022-05-10T05:21:02.640157924Z time="2022-05-10T05:21:02Z" level=info msg="polling the remote server" arch=amd64 capacity=2 endpoint="http://192.168.200.30:82" kind=pipeline os=linux type=dockerhttp://192.168.200.30:82
),点击继续:
http://192.168.200.30:82/login
)gitlab给Drone(Application)授权:
打开gitlab的出入站请求
)
Admin-->settings
:
打开允许web hooks(挂钩) 和服务向本地网络发出请求
:
开启Trusted
特权容器(docker-runner在使用docker执行器时,类似使用root权限)注意
:这里还有一个问题,如果出现没有Trusted选项的情况,需要在启动运行drone-server服务是添加:--env=DRONE_USER_CREATE=username:root,admin:true
.drone.yml
文件:
主要了解流水线操作流程
),如下:settings-->webhooks
:
自动创建一个默认的webhooks
:
自动触发
(之后gitlab仓库代码更新或上传新代码都会自动触发).drone.yml:
详细步骤、步骤的状态和步骤的logs
:
我这里的.drone.yml文件写的比较简单,主要时了解过程入门。如果需要练习可以试着部署自己的项目;
最后请各位注意三个我在学习gitlab+drone遇到的问题
:
下列小括号‘()’中是解决方法;
--env=DRONE_USER_CREATE=username:root,admin:true
)sed: -e expression #1, char 34: unknown option to s
(改成感叹号!或者| 分割,如:sed -i 's! 源内容 ! 替换内容 !g' )原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。