0.6.0 密文

之前版本密文在 yaml 文件中使用 ${variable} 语法来进行解析。我们尝试修改这个方法来限制密文只在指定容器中使用密文,但是没有成功。

这个版本使用了 docker-compose 语法来在工作流中使用密文。

工作流请求使用已命名的密文,如果请求被许可,密文被读取为环境变量。从临时文件读取密文的功能在计划中。

使用示例:

pipeline:
  notify:
    image: plugins/slack
    channel: drone
-   webhook: ${slack_webhook}
+   secrets: [ slack_webhook ]

密文解析语法已经被移除,请使用 docker-compose 语法。这个实现改进了之前的尝试,并解决了之前的设计问题

命令

这个命令行工具可以用来管理密文。这个命令的语法有稍微的改变,使用显式的标签来指定密文的名字和数值。

drone secret add <repo> \
  --image=<image> \
  --name=<secret> \
  --value=<value>

示例命令:

drone secret add octocat/hello-world \
  --image=plugins/slack \
  --name=slack_webhook \
  --value=https://hooks.slack.com/services/...

匹配

之前的实现使用了文本匹配的逻辑。新的匹配逻辑被简化为只匹配镜像名,忽略标签。Wildcards * 匹配不再被支持,请更新对应密文设置。

drone secret update octocat/hello-world \
- --image=plugins/slack:* \
+ --image=plugins/slack \
  --name=slack_webhook \
  --value=https://hooks.slack.com/services/...

插件

密文被传递到工作流的对应步骤(包括插件)作为环境变量。插件作者需要更新插件了从指定环境变量来使用密文。

Slack 插件变更示例:

cli.StringFlag{
  Name:   "webhook",
  Usage:  "slack webhook url",
- EnvVar: "PLUGIN_WEBHOOK",
+ EnvVar: "SLACK_WEBHOOK,PLUGIN_WEBHOOK",
},

yaml 配置示例:

pipeline:
  notify:
    image: plugins/slack
    channel: drone
+   secrets: [ slack_webhook ]

插件作者需要说明使用的环境变量名,用户需要生成对应指定的环境变量的密文。

全局和组织密文

全局和组织密文已被 Drone core 移除,对应功能被移动到插件中,使用新的可插拔密文后端服务。对应命令行工具命令也已经被移除。

drone secret add <repo> <name> <value>
- drone org secret add <org> <name> <value>
- drone global secret add <name> <value>

这个改变是因为组织密文只被 GitHub 项目使用 (GitLab, Gitea, Gogs, Bitbucket 和 Stash 没有全面支持组织密文)。这个功能也和组织的访问权限控制,储存,第三方密文管理工具(比如 Vault)相冲突。

这个改变也反映了 Drone 这在向 core 核心靠拢。高级功能和自定义功能将以插件的形式呈现。使用可插拔的密文后端服务,组织可以很好地控制密文的储存以及构建访问密文。

这个网页有没有错误? 请让我们知道 或编辑 这个页面