用Go写drone插件

栏目: 编程工具 · 发布时间: 5年前

内容简介:Drone是一个CI/CD的新起之秀,drone的主要特性就是所有的CI/CD流程都是借助Docker容器来构建。所以Drone的pipline非常容易书写和维护。并且由于直接把Docker容器当做一等公民,那么我们在各种场景下定制化自己的插件也将变得非常便利。因为最终Drone都是调用的插件Docker容器,所以开发团队可以使用任意自己熟练擅长的语言去定制内部自定义插件。本文我们一起动手用Go写一个drone插件!通过一个完整的简单的流程,我们一起学习如何定制化自己的CI/CD流程。baba再也不用担心C

用 <a href='https://www.codercto.com/topics/6127.html'>Go</a> 写drone插件

Drone是一个CI/CD的新起之秀,drone的主要特性就是所有的CI/CD流程都是借助 Docker 容器来构建。所以Drone的pipline非常容易书写和维护。并且由于直接把Docker容器当做一等公民,那么我们在各种场景下定制化自己的插件也将变得非常便利。因为最终Drone都是调用的插件Docker容器,所以开发团队可以使用任意自己熟练擅长的语言去定制内部自定义插件。

本文我们一起动手用Go写一个drone插件!通过一个完整的简单的流程,我们一起学习如何定制化自己的CI/CD流程。baba再也不用担心CI/CD不够完善了!

前期准备

  1. Docker Hub 账户,为了简化流程,所以我们此次把我们的插件镜像发布到公共镜像仓库。

  2. Golang 开发环境,这个不用多说了:wink:

  3. Docker 本地环境,用来构建和发布我们插件的镜像。

设计插件接口

首先我们要关注,当我们在写Dronefile(.drone.yml)的时候,我们需要Drone给我们的插件传递什么信息:

用Go写drone插件

Drone在启动我们的镜像的时候会把 settings 字段下的参数以前缀为 PLUGIN_全大写环境变量 的方式传入给插件。

PLUGIN_CHANNEL=general
PLUGIN_WEBHOOK=https://hooks.slack.com/services/...
PLUGIN_TEXT=hello

注意:Drone传递给插件的环境变量支持大部分的数据类型比如:string, integer, float, boolean, arrary等。传入数组时是一个以逗号分隔的字符串。比如有如下配置文件:

...
    settings:
        names: [ john, tom]

那么传递的参数是下面这样的:

PLUGIN_NAMES=john,tom

开始写代码

我们在之前的设置中给我们讲要写的插件传递了两个参数

  • webhook:一个需要插件去请求的URL

  • data:代表我们想传递给插件的数据

接下来我们就在我们的Go代码中使用它们,下面是一个简单的示例:

用Go写drone插件

发布测试

接下来我们将要把我们写好的插件打包成Docker镜像,然后发不到Docker Hub上,最终我们在我们的Drone平台上来测试这个插件。

编译

为了最小化我们的插件,我们将要使用 alpine 镜像来构建我们的插件,如果你不清楚如何最小化构建Docker镜像,可以翻阅作者的历史文章,里面记录了一些Dockerfile最佳实践的方法。话不多说开始吧!

先编译好alpine的目标二进制文件:

GOOS=linux GOARCH=amd64 CGO_ENABLED=0 go build -o my-awesome-plugin

然后基于此可执行二进制我们就可以构建我们的插件了,下面是一个简单的Dockerfile示例:

用Go写drone插件

构建发布

下面的流程就比较简单了,使用Docker来构建你自己的公有镜像并发不到Docker Hub就可以了,如果你对这里不太熟悉的话,可以去看看官网文档,或者使用 docker build -hdocker push -h 来查看帮助文档。这里笔者只列出自己构建的命令:

docker build -t dayuoba/my-awesome-plugin . docker push dayuoba/my-awesome-plugin

等待一会儿就好了,如果这里你想偷懒你可以直接用笔者构建好的镜像来测试。 docker pull dayuoba/my-awesome-plugin

测试插件

接下来我们就可以测试我们的插件了,初始化好一个Drone下的项目,添加 .drone.yml 文件。然后push等待测试即可。

用Go写drone插件

接下来就是去Drone上面看看我们的构建日志来测试我们的插件了。

用Go写drone插件

总结

到这儿,这篇文章基本就结束了,参照这个思路你就可以按照自己业务的需求来构建自己的Drone插件了。


以上所述就是小编给大家介绍的《用Go写drone插件》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

精通正则表达式

精通正则表达式

Jeffrey E. F. Friedl / 余晟 / 电子工业出版社 / 2007 / 75

随着互联网的迅速发展,几乎所有工具软件和程序语言都支持的正则表达式也变得越来越强大和易于使用。本书是讲解正则表达式的经典之作。本书主要讲解了正则表达式的特性和流派、匹配原理、优化原则、实用诀窍以及调校措施,并详细介绍了正则表达式在Perl、Java、.NET、PHP中的用法。 本书自第1 版开始着力于教会读者“以正则表达式来思考”,来让读者真正“精通”正则表达式。该版对PHP的相关内容、Ja......一起来看看 《精通正则表达式》 这本书的介绍吧!

在线进制转换器
在线进制转换器

各进制数互转换器

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具