一、部署
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)
7、