封尘网

让学习成为一种习惯!

如何实现drone与gitlab互联

基于 Docker 的 CI/CD 工具 Drone 所有编译、测试的流程都在 Docker 容器中进行。

开发者只需在项目中包含 .drone.yml 文件,将代码推送到 git 仓库,Drone 就能够自动化的进行编译、测试、发布。

本文仅记录 Drone是如何跟Gitlab打通的过程。

由于Drone是基础Docker方式运行,所以需要有一个Docker环境。关于如何安装部署Docker这里就不细说了。

前要说明
由于drone 1.x版本跟0.8版本的变化也挻多,有些旧的参数已经弃用或者变更了,详细情况要参考官方文档。https://docs.drone.io/

1、配置gitlab applications:

登陆到Gitlab系统点击个人头像—-Settings—-Applications添加一个应用:
这里是一个变化,0.8版Redirect URL后面是跟:authorize ,而1.X版本使用:login

提交后就会自动生成以下ID和Key:

2、首先要拉取一个drone镜像:
通过docker search drone 可以看到很多相关的镜像,这里拉取第一个官方的镜像,大约63M左右,因为官方镜像也已经更新到了1.X版本,所以直接docker pull drone/drone就是1.X版的。

[root@docker-ce ~]# docker pull drone/drone
[root@docker-ce ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
helloworld          latest              232ac0d24f85        21 hours ago        6.96MB
plugins/base        multiarch           92bf59f52f26        23 hours ago        293kB
drone/drone         latest              16646fab2afb        4 days ago          63.2MB

3、启动Drone服务

以下配置直接使用官网给出的示例;可以看到1.X版本跟之前的0.8版本有些地方,参数也有变化,以下这个配置是单机版的,就是server和agnet都整合运行在同一机器上,这个适合测试环境,或者使用量比较小的环境下。

docker run \
  --volume=/var/run/docker.sock:/var/run/docker.sock \
  --volume=/var/lib/drone:/data \
  --env=DRONE_LOGS_DEBUG=true \
  --env=DRONE_GIT_ALWAYS_AUTH=false \
  --env=DRONE_GITLAB_SERVER=http://10.0.10.8 \
  --env=DRONE_GITLAB_CLIENT_ID=09cb3f3bbdc607060f1fdb71b51e4a9e4db4c576955763a1a4efec078edf2d6b \
  --env=DRONE_GITLAB_CLIENT_SECRET=8360a4e0d5697127f3e8a77440e884c3b0b93375c563cfaa407074d8b231c159 \
  --env=DRONE_RUNNER_CAPACITY=3 \
  --env=DRONE_SERVER_HOST=10.0.10.68 \
  --env=DRONE_SERVER_PROTO=http \
  --env=DRONE_TLS_AUTOCERT=false \
  --publish=80:80 \
  --publish=443:443 \
  --restart=always \
  --detach=true \
  --name=drone  \
  drone/drone:latest

说明:

  • DRONE_GITLAB_SERVER :修改自己的gitlab仓库地址
  • DRONE_GITLAB_CLIENT_ID : 这个是在Gitlab里边配置的可参考上图
  • DRONE_GITLAB_CLIENT_SECRET : 同上当在gitlab中配置了一个applications就会自动生成ID,和SECRET
  • DRONE_SERVER_HOST :drone服务运行的Ip地址
  • DRONE_SERVER_PROTO :走哪种协议,这里直接使用http 即可,如果是外网能够访问的建议https.
  • DRONE_LOGS_DEBUG=true :开启Debug日志

当启动完Drone容器后再打开浏览器访问:http://10.0.10.68就会跳转到Gitlab页面,然后会提示授权。

授权完成后又会回到drone的界面了,如果Gitlab上有项目的就会把项目的信息同步过来。

至此,drone就可以实现Gitlab的连通了。

特别提醒

错误提示:

Login Failed. invalid character '<' looking for beginning of value

使用1.x版本的drone配置旧版本的gitlab(8.8.X)时遇到了一个错误,最后更新了gitlab版本到11.X后才能正常回调到drone的登陆页面。

提醒:本文最后更新于 22 天前,文中所描述的信息可能已发生改变,请谨慎使用。