• Post author:
  • Post category:运维
  • Post comments:1评论
  • Reading time:4 mins read

在我们成功搭建了Github的镜像仓库之后,终于轮到CICD的正片了,我们的CICD平台选择使用Drone,一个原生支持Docker,拥抱云原生的CICD平台。

Drone支持多种type的工作流管道,除了最常用的K8S和Docker以外,还支持直接在服务器环境运行的Exec类型,在远程服务器执行的SSH类型,除了这些还有AWS、DIGITAL OCEAN等,具体的可以参考Drone的官方文档

部署

和前文一样,我们仍然使用Docker来进行部署,需要注意的是,Drone的部署分为两个步骤,分别是Drone和DroneRunner,他们的区别如下:

  • Drone:本体的Drone实际上是一个web管理页面,提供了可视化的功能,以及发布cicd任务、接收webhook的通知等,可以理解为DroneCI的指挥中心。
  • Runner:真正负责干脏活的家伙,接收从Drone收到的任务,并且根据每个步骤来完成任务。

获取Gitea的ClientID和Secret

进入Gitea,进入设置页面,点击应用选项卡,创建一个Client信息:

名称随便填,然后重定向URI需要填写【https://www.xxx.com/login】,此处http或https还有域名或ip:port根据你待会要给drone配置的host一致,这里是为了让gitea给drone提供身份认证,uri就是gitea通过验证后回调drone的地址,比如我这里填的就是https://drone.hafuhafu.cn/login,填写完成点击提交,可以获得一个clientID和clientSecret,保存好以备用。

部署Drone

使用Docker安装Drone实际上没什么好说的,给出命令:

docker run \
  --volume=/var/lib/drone:/data \
  --env=DRONE_AGENTS_ENABLED=true   \
  --env=DRONE_GITEA_SERVER=http://192.168.200.164:3000/  \
  --env=DRONE_GITEA_CLIENT_ID=4a402047-72e1-479e-858d-5e312aeeda76 \
  --env=DRONE_GITEA_CLIENT_SECRET=kOpysAgd2VKElC3friLrObtv7TjmisJRfYFNoXch6BuU \
  --env=DRONE_SERVER_HOST=192.168.200.164:3080 \
  --env=DRONE_SERVER_PROTO=http \
  --env=DRONE_TLS_AUTOCERT=false \
  --env=DRONE_LOGS_DEBUG=true \
  --env=DRONE_RPC_SECRET=4f3b7f51e3dd678c08cf2d0675c66760 \
  --env=DRONE_USER_CREATE=username:StoneShiLei,admin:true \
  --env TZ="Asia/Shanghai" \
  --publish=3080:80 --publish=443:443 \
  --restart=always \
  --detach=true \
  --name=drone \
  drone/drone
  • DRONE_GITEA_SERVER:gitea的地址
  • DRONE_GITEA_CLIENT_ID:前文的clientID
  • DRONE_GITEA_CLIENT_SECRET:前文的clientSecret
  • DRONE_SERVER_HOST: drone的host地址
  • DRONE_RPC_SECRET:和runner通讯使用的密钥
  • USER_CREATE:创建一个admin用户,注意username替换为你gitea的用户名

注意此处涉及到仓库名称的地方可以替换为其他仓库,具体请参照官方文档,部署完成后,现在可以打开host地址端口号3080进行访问:

点击continue按钮,会跳转到你的Gitea进行认证,完成后再填写一些基础信息就可以完成登陆:

该页面会显示你gitea的仓库列表,接下来我们该部署runner了。

部署Runner

仍然是给出docker命令:

docker run -d -v /var/run/docker.sock:/var/run/docker.sock \
-e DRONE_RPC_PROTO=http \
-e DRONE_RPC_HOST=192.168.200.164:3080 \
-e DRONE_RPC_SECRET=4f3b7f51e3dd678c08cf2d0675c66760 \
-e DRONE_RUNNER_CAPACITY=2 \
-e DRONE_RUNNER_NAME=${HOSTNAME} \
-e TZ="Asia/Shanghai" \
-p 3090:3000 \
--restart always \
--name runner \
drone/drone-runner-docker
  • DRONE_RPC_HOST:drone的host地址,和前文保持一致
  • DRONE_RPC_SECRET:和drone进行通讯的密钥,和前文保持一致

注意端口号挂载为host的3090端口,因为3000端口已经给gitea使用了。

都部署完成后,docker ps查看下容器是否都跑起来了,没有问题的话我们接下来在下一篇文章中开始研讨如何使用drone进行CI时对其进行验证。

葫芦

葫芦,诞生于1992年8月11日,游戏宅,胶佬,爱好摸鱼,一个干过超市收银,工地里搬过砖,当过广告印刷狗,做过电焊铁艺的现役.Net程序员。

这篇文章有一个评论

发表回复