Drone概念与答疑 

一、部署

1、Server

       Drone主服务,它是一个守护进程应用并且拥有Web管理界面。它通过Webhook对接Git Server。解析Git Repository根目录下的.drone.yml文件,并以轮询的形态查找需要执行的Pipelines,路由并管理Runners。

2、Runner

       Drone Pipeline处理执行器,可以部署一份或多份。Drone拥有多种类型的Runner(docker、k8s、exe、ssh等等),可选适合的方式安装。

3、K8s Secrets Extensions

      这是一个可选组件,用来为drone runnner提供基于k8s secret的secret

4、Drone CLI

      drone的命令执行工具,它可以使用通过命令与drone进行交互,并提供用户、secret、repository setting等多种功能。

二、应用

1、Pipeline

      Pipeline是Drone的核心模块,它是用来定义自动化处理流程的工具。一般会在git repository根目录,创建一个.drone.yam文件来定义配置pipeline。当git代码提交到repository后webhook会通知drone server,然后将会触发pipeline执行。

2、Secrets

       在配置pipeline过程中一些秘钥、Token、密码等机密信息并不适合直接用明文存放在.drone.yam文件中。Secrets模块则提供多种形式的机密信息存储与读取。

3、Promotions

      当一些工作需要人为协助处理时,我们可以定义pipeline通过promote形式触发,并通过drone build promote触发执行并传递相应参数

4、Cron

      Crone用来定义基于时间调度执行Pipeline。注意它是根据UTC时间,而不是本地时间。

5、Signatures

      用来对文件进行签名验证,如果你的repository是公共的,为防止.drone.yml文件被改动,可以使用signature对文件进行验证

三、扩展

1、Plugins

      plugin是在pipeline的step中用来执行预定任务的docker容器

2、Webhook

     Git Repository用来触发drone的钩子。Drone通过OAuth获取github、gitlab等源代码管理平台的操作权限,在drone的web管理页面激活repo后将会自动把webhooks添加到repo的repository配置中。当git repository产生push、push request、tag等操作时webhook将被触发,并通知drone执行pipeline。

3、Extensions

      通过extensions我们可以自定义并覆盖drone一些默认行为,或增强一些功能。

四、答疑

1、yml文件是否必须存放在git repository根目录

是的,必须在根目录

2、yml文件名是否必须是.drone.yml

默认是文件名是.drone.yml,也可以能过drone web管理界面修改yml的文件名

3、git提交代码如何让drone跳过本次提交,不执行pipeline

提交代码时通过备注增加[CI SKIP]跳过

如: git commit –m “first commit [CI SKIP]”

4、使用volumes挂host path时报Linter: untrusted repositories cannot mount host volumes错误

需要给repository开通mount权限。打开drone web –> repository –> Settings –> Project settings 勾选Trusted

5、drone web界面repository设置项Project settings中没有Trusted

Drone Server启动时要指定DRONE_USER_CREATE参数,用来设置管理员帐号,只有用管理员帐号打开drone web界面才可以看到和设置Trusted

6、server、runner、secret各个组件中配置中的环境变量secret值如何使用,又从何而来

secret可以通过“openssl rand -hex 16”生成

它们是配对使用的,例如runner需要访问server,那么先使用openssl生成一个secret设置给server(DRONE_RPC_SECRET),然后再给runner设置server的请求地址(DRONE_RPC_HOST)及secret(DRONE_RPC_SECRET)

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐