• 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)

    7、

  • 相关阅读:
    java.lang.ArrayIndexOutOfBoundsException异常分析及解决
    Android_开发片段(Part 2)
    保存错误日志回传服务器之回传错误“信息文件”
    node.js
    拼接json
    CommonJS / Node.js/ Vue学习资料
    合并PDF
    java 多线程
    linux 运行jar包
    mvn 命令
  • 原文地址:https://www.cnblogs.com/lswweb/p/14246235.html
Copyright © 2020-2023  润新知