搭建Drone CI / CD 持续集成系统
本文将介绍如何使用 docker 和 drone1.0 搭建自己的 cicd 系统。
网上的教程几乎都是基于0.8版本的,网上1.0的能用的几乎没有,官方1.0前还有中文文档,1.0之后目前仅有英文,且较为简略。1.0和之前版本差异较大,无论是配置项,配置文件结构又或者是部署方式,而在实际搭建过程中,遇到不少坑,故记录通过 docker 搭建 drone 1.0 的过程。
跳过介绍,直接看如何搭建 drone
简介
drone 是什么?drone 是一个CI/CD的软件,类似 jenkins ,同类软件除了比较知名的 jenkins 外,还有TeamCity、Travis CI、AppVeyor、Azure Pipelines 等等。drone 官网。
drone pipeline cicd 使用例子
drone 还有一些插件
为什么不用 jenkins
- 节省更多服务器资源,占用内存、CPU 远比jenkins少。
- 界面、清晰、好看,比 jenkins 的古老 UI 更具科技感。
- 入门简单,可以快速入门CICD。
- 原生支持容器环境,docker、k8s…,当然 jenkins 也可以通过插件支持。
- 启动相当迅速。
- drone 提供的能力完全足够使用,主要用的功能也有相应的插件支持,虽然比 jenkins 少,但已经够用。
界面预览
通过 Docker 安装 drone-server
DRONE 和 drone-runner 通信的密钥保持一致即可
使用 github 仓库
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | docker run \ --volume=/opt/bin/drone/data:/data \ --env=DRONE_GITHUB_CLIENT_ID={在github复制} \ --env=DRONE_GITHUB_CLIENT_SECRET={在github复制} \ --env=DRONE_RPC_SECRET={DRONE 和 drone-runner 通信的密钥} \ --env=DRONE_SERVER_HOST={一般填写本机的 ip:port } \ --env=DRONE_USER_CREATE=username:admin,admin:true \ --env=DRONE_TLS_AUTOCERT=true \ --env=DRONE_SERVER_PROTO=http \ --publish=9090:80 \ --publish=9443:443 \ --restart=always \ --detach=true \ --name=drone \ drone/drone:1 |
使用 Gogs 仓库
gogs 是类似 gitlab 的代码管理平台,支持搭建私服,和 gitlab 类似,但 gitlab 私服搭建用了不到4G内存,gogs实测只需要26M 如何使用搭建 gogs Git 私服
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | docker run \ --volume=/opt/bin/drone/data:/data \ --env=DRONE_GIT_ALWAYS_AUTH={当 git clone 需要认证时设置成true,否则false} \ --env=DRONE_GIT_USERNAME={GIT 用户名} \ --env=DRONE_GIT_PASSWORD={GIT 密码} \ --env=DRONE_GOGS=true \ --env=DRONE_GOGS_SKIP_VERIFY=false \ --env=DRONE_GOGS_SERVER=http://{Gogs服务的域名 或 ip:port} \ --env=DRONE_PROVIDER=gogs \ --env=DRONE_RPC_SECRET={DRONE 和 drone-runner 通信的密钥} \ -env=DRONE_USER_CREATE=username:gogs,admin:true \ --env=DRONE_SERVER_PROTO=http \ --publish=9090:80 \ --publish=9443:443 \ --restart=always \ --detach=true \ --name=drone \ -h drone \ drone/drone:1 |
通过 Docker 安装 drone-runner
在 drone 1.0 之前的版本还较 drone-agent,因此看到 drone-agent 的教程一般是比较旧的了,1.0 后改为了 drone-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={DRONE-server 的地址,如 192.168.1.1:9090} \ -e DRONE_RPC_SECRET={DRONE 和 drone-runner 通信的密钥} \ -e DRONE_RUNNER_CAPACITY=2 \ -e DRONE_RUNNER_NAME=${HOSTNAME} \ -p 3000:3000 \ --restart always \ --name drone-runner \ --link=drone:drone \ drone/drone-runner-docker:1 |
查看容器状态
查看所有容器状态
1 | docker ps -a |
查看运行日志
1 | docker log drone |
打开浏览器,访问配置的 ip:port 即可
回顶部