本指南提供了一个简短的教程,用于创建一个 WebHook 插件,使用 Go 编程语言,在构建流水线中触发 http 请求。下面的例子演示了我们如何在 Yaml 文件中配置一个 WebHook 插件。
1
2
3
4
5
6
7
8
9
10
11
12
|
kind: pipeline
type: docker
name: default
steps:
- name: webhook
image: acme/webhook
settings:
url: http://hook.acme.com
method: post
body: |
hello world
|
创建一个 Go 程序,使用 Yaml 的配置参数进行 http 请求,这些参数以大写的环境变量形式传递给程序,前缀为 PLUGIN_
。这里有更多关于插件输入的信息。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
package main
import (
"net/http"
"os"
"strings"
)
func main() {
body := strings.NewReader(
os.Getenv("PLUGIN_BODY"),
)
_, err := http.NewRequest(
os.Getenv("PLUGIN_METHOD"),
os.Getenv("PLUGIN_URL"),
body,
)
if err != nil {
os.Exit(1)
}
}
|
在主机上为目标平台编译你的二进制文件。在主机上编译并将二进制文件添加到镜像中被认为是一种最佳做法,因为它减少了整个镜像的大小。
GOOS=linux GOARCH=amd64 CGO_ENABLED=0 go build -o webhook
创建一个 Docker 文件,将你编译的二进制文件添加到镜像中,并将镜像配置为运行你的二进制文件作为主要入口。
1
2
3
4
|
FROM alpine
ADD webhook /bin/
RUN apk -Uuv add ca-certificates
ENTRYPOINT /bin/webhook
|
建立并发布你的插件到 Docker 注册表。一旦发布,你的插件就可以与更广泛的 Drone 社区共享。
1
2
|
docker build -t acme/webhook .
docker push acme/webhook
|
在本地从命令行执行你的插件,以验证它是否工作。
1
2
3
4
5
|
$ docker run --rm \
-e PLUGIN_METHOD=post \
-e PLUGIN_URL=http://hook.acme.com \
-e PLUGIN_BODY=hello \
acme/webhook
|
启动项目
如果你对创建插件感兴趣,我们建议使用我们的入门项目作为基础来启动开发。