Drone CI 中文文档

签名 (Signatures)

你可以选择对配置文件进行签名以验证真实性并防止篡改。如果你的存储库是公开的并且你需要防止第三方 Pull Request 对你的配置文件进行未经授权的更改,这将很有用。

如果用户修改配置并且签名验证失败,流水线将被阻止,等待具有存储库写入或管理访问权限的授权用户手动批准。

请注意,只有 Yaml 文件可以被签署和验证。该系统不能签署和验证 Starlark 或 Jsonnet 文件。

强制执行签名

为了执行签名验证,你需要为你的版本库启用保护模式。导航到你的版本库 设置 (Settings) 界面,勾选 保护 (Protected) 复选框。

储存签名

签名是以 signature 资源的形式存储在 Yaml 配置文件中。签名资源为你的配置提供了一个 hmac 签名。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
---
kind: pipeline
type: docker
name: default

steps:
- name: build
  image: golang
  commands:
  - go build
  - go test

---
kind: signature
hmac: F10E2821BBBEA527EA02200352313BC059445190

...

计算签名

每个 yaml 资源的内容,不包括任何现有的签名资源,都使用 256 位的秘密密钥进行签名。每个资源库的秘钥都是唯一的,并且永远不会离开 Drone Server。

创建签名

签名是使用 Drone 命令行工具创建的。这个 命令 向 Drone Server 发出认证请求,发布你的 yaml 配置文件,计算并返回 hmac 签名。

以下是命令示例:

1
$ drone sign octocat/hello-world --save
请注意,每次修改配置文件时都必须重新生成签名。