docker 搭建Drone CI / CD 持续集成系统

搭建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 少,但已经够用。

界面预览

drone界面预览

drone界面示例

通过 Docker 安装 drone-server

DRONE 和 drone-runner 通信的密钥保持一致即可

使用 github 仓库

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 私服

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。

执行命令

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


查看容器状态

查看所有容器状态

docker ps -a

查看运行日志

docker log drone

打开浏览器,访问配置的 ip:port 即可


回顶部

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章