Drone CI/CD系列(一)——docker安装与配置

随着,云服务的崛起,越来越多的个人开发者对自己的研发支撑体系有高的标准,伴随着Jenkins的老气的模式,越来越多新生代高颜值高轻量的CICD平台出现!

简介


Drone作为新一代的CICD的平台,不仅高颜值,可与docker和k8s无缝衔接,且可配置目前主流git平台进行联动,实现git push打包部署,和界面一键部署各种语言的功能,下面本文就来介绍一下,如何使用docker来安装和部署Drone!

步骤一 pull drone服务器镜像
首先从dockerhub pull最新的drone镜像。

docker pull drone/drone
1
我们选择用latest标签的镜像即可,毕竟追新还是要有的!

步骤二 启动drone服务器容器与参数配置
在服务器或者本机,启动drone容器,我们以gitea来作为例子讲解

docker run \
--volume=/root/docker/drone/data:/data \
--env=DRONE_GITEA_SERVER=https://gitea.company.com \
--env=DRONE_GITEA_CLIENT_ID=b4d751re-3232-free-9bg5-8139283d30fa87 \
--env=DRONE_GITEA_CLIENT_SECRET=6remH25rSq1iDsdffs9843z1P0KBrZdWHksfe3Tm \
--env=DRONE_RPC_SECRET=e8835da5f177d912b6afde7099ab54da \
--env=DRONE_SERVER_HOST=drone.company.com \
--env=DRONE_SERVER_PROTO=https \
--env=DRONE_USER_CREATE=username:juinjonn,admin:true \
--publish=30493:80 \
--publish=30494:443 \
--restart=always \
--detach=true \
--name=drone-app \
drone/drone
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
参数详解
在docker参数配置中 : 冒号前面的为你自己服务器的数据 冒号后面的为docker容器的数据参数 root/docker/drone/data:/data中root/docker/drone/data为你自己服务器的路径映射到docker中/data的路径

volume 挂载目录容器路径

DRONE_GITEA_SERVER 为你git服务器的url地址

DRONE_GITEA_CLIENT_ID为你git中设置的OAuth2秘钥信息,对应下图中的客户端的ID

DRONE_GITEA_CLIENT_SECRET对应下图中的客户端密钥

 

 

DRONE_RPC_SECRET 这个和drone runner交互用的密钥,最好使用openssl生成

打开终端输入

➜ ~ openssl rand -hex 16
e8835da5f177d912b6afde7099ab54da
1
2
这样你就获得了RPC通讯的密钥,尽量不要自己想,将获得e8835da5f177d912b6afde7099ab54da作为DRONE_RPC_SECRET参数使用

DRONE_SERVER_HOST 当前drone服务器的域名或者ip:端口

DRONE_SERVER_PROTO 对应的协议 https或者http,若是ip则写http

DRONE_USER_CREATE 管理员用户名,建议填不然后面目录挂载会报权限不足错误

publish 端口映射 你服务器或者本地的端口:容器端口

–restart=always 自启动

–detach=true后台运行

步骤三 启动目标机器runner
drone runner介绍
Drone runner是和drone服务器搭配的部署应用服务,drone服务器用来中央调配,而runner通过不断轮询drone服务器的请求,若发现drone服务器下达构建部署任务,runner则在你要部署的机器上执行任务。drone服务器是中央调控,而runner就是执行者,也就是说runner需要部署在你自己真正跑你自己应用的服务器。

例如,drone服务器部署在A服务器上,那runner可以部署在B,C,D服务器上,这样当drone服务器下达部署命令时,B,C,D服务器则将你的应用进行部署,当然如果你只有一台服务器,那drone和runner都可以部署在上面。

首先pull runner镜像
docker pull drone/drone-runner-docker
1
创建runner镜像
docker run --detach \
--volume=/var/run/docker.sock:/var/run/docker.sock \
--env=DRONE_RPC_PROTO=https \
--env=DRONE_RPC_HOST=drone.company.com \
--env=DRONE_RPC_SECRET=e8835da5f177d912b6afde7099ab54da \
--env=DRONE_RUNNER_CAPACITY=2 \
--env=DRONE_RUNNER_NAME=pi-runner \
--env=DRONE_RUNNER_LABELS=name:centos-runner \
--publish=30495:3000 \
--restart=always \
--name=drone-runner-app \
drone/drone-runner-docker
1
2
3
4
5
6
7
8
9
10
11
12
参数解析
volume 目录映射

DRONE_RPC_PROTO 你的中央(Drone)服务器(上一步部署的镜像)的协议,如果是ip模式则写http

DRONE_RPC_HOST drone服务器域名,也可以ip:端口

DRONE_RPC_SECRET 上一步生成的通讯秘钥

DRONE_RUNNER_CAPACITY 同时可执行的管道命令,既可同时部署的任务

DRONE_RUNNER_NAME 当前runner名称

DRONE_RUNNER_LABELS 用于区别不同的runner,可用来中央服务器指定runner执行任务用(下篇文章会讲到)

成功现象
运行命令

docker logs -f drone-runner-app
1
看到如下日志,则表示成功

time="2022-03-09T17:31:53Z" level=info msg="starting the server" addr=":3000"
time="2022-03-09T17:31:53Z" level=info msg="successfully pinged the remote server"
1
2
总结
至此,你的drone cicd环境已经部署成功,后续文章会根据,python和java两种语言来讲解如何配置.drone.yml文件

转载说明
本文禁止私自转载,如需转载请联系作者!否则必追究法律责任!
————————————————
版权声明:本文为CSDN博主「Juinjonn」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/Bert_Chen/article/details/123456911

posted @   dreamw  阅读(483)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
点击右上角即可分享
微信分享提示