
plugins/slackdrone-slack 是 Drone CI/CD 系统的官方 Slack 通知插件,用于将 CI/CD 流水线的构建事件(如构建开始、成功、失败等)实时通知发送至 Slack 频道。该镜像作为 Drone 生态的一部分,旨在通过集成 Slack 实现构建状态的可视化与团队协作,帮助开发、测试及运维团队快速响应流水线异常,提升协作效率。
drone-slack 作为 Drone 插件,需在项目的 .drone.yml 配置文件中定义为流水线步骤(step)。以下为基础配置示例:
yamlkind: pipeline type: docker name: default steps: - name: slack-notify image: plugins/slack settings: webhook: [***] # Slack Incoming Webhook URL(必填) channel: #dev-team # 目标 Slack 频道(必填,如 #ci-notifications) event: [success, failure] # 触发通知的事件(可选,默认 [failure]) status: [success, failure] # 构建状态(可选,与 event 配合使用) username: Drone CI # Slack 通知显示的用户名(可选,默认 "Drone") icon_url: [***] # 通知头像 URL(可选) message: "构建 {{ build.status }}: {{ repo.name }}#{{ build.number }} ({{ commit.branch }})" # 自定义消息(可选,支持变量替换) template: | # 消息模板(可选,支持 Markdown 与 Slack 附件格式) [{{ repo.name }}] {{ build.status }} ({{ commit.branch }}) 提交作者: {{ commit.author }} 提交信息: {{ commi***ssage }} 构建链接: {{ build.link }}
Drone 插件会将 .drone.yml 中 settings 下的配置项自动映射为环境变量(前缀 PLUGIN_)。若需手动运行容器(如本地测试),可通过 -e 参数传入环境变量:
| 配置参数 | 环境变量对应 | 是否必填 | 描述 |
|---|---|---|---|
webhook | PLUGIN_WEBHOOK | 是 | Slack Incoming Webhook URL(从 Slack 应用获取)。 |
channel | PLUGIN_CHANNEL | 是 | 目标 Slack 频道(格式:#channel-name 或 @user 用于私聊)。 |
event | PLUGIN_EVENT | 否 | 触发通知的事件类型,可选值:success/failure/always/changed。 |
status | PLUGIN_STATUS | 否 | 构建状态过滤,可选值:success/failure/error/killed。 |
username | PLUGIN_USERNAME | 否 | Slack 通知显示的用户名(默认:Drone)。 |
icon_url | PLUGIN_ICON_URL | 否 | 通知头像的 URL(支持 HTTP/HTTPS)。 |
message | PLUGIN_MESSAGE | 否 | 自定义通知消息正文(支持变量替换,如 {{ build.status }})。 |
template | PLUGIN_TEMPLATE | 否 | 消息模板(支持 Markdown 与 Slack 附件格式,优先级高于 message)。 |
link | PLUGIN_LINK | 否 | 是否包含 Drone 构建详情链接(默认:true)。 |
branch | PLUGIN_BRANCH | 否 | 仅特定分支触发通知(如 main,develop,逗号分隔)。 |
消息模板(message 或 template)中可使用以下 Drone 内置变量(通过 Drone Runner 自动注入):
| 变量名 | 描述 |
|---|---|
{{ build.number }} | 构建编号(如 123) |
{{ build.status }} | 构建状态(如 success/failure) |
{{ build.link }} | Drone 构建详情页 URL |
{{ repo.name }} | 仓库名称(如 my-project) |
{{ repo.branch }} | 构建分支(如 main) |
{{ commit.sha }} | 提交 SHA(前 8 位,如 a1b2c3d4) |
{{ commit.author }} | 提交作者(如 ***) |
{{ commi***ssage }} | 提交消息 |
yamlkind: pipeline type: docker name: ci-pipeline steps: - name: test image: golang:1.21 commands: - go mod download - go test -v ./... - name: slack-notify image: plugins/slack settings: webhook: from_secret: slack_webhook # 从 Drone Secret 中读取 Webhook(推荐,避免硬编码) channel: #ci-alerts event: [failure, success] username: Drone CI Bot icon_url: [***] template: | 🚀 [{{ repo.name }}] {{ build.status | upper }} ({{ repo.branch }}) • 提交: {{ commit.sha }} ({{ commit.author }}) • 消息: {{ commi***ssage }} • 详情: {{ build.link }} when: branch: - main # 仅 main 分支触发通知
注意:
webhook建议通过 Drone Secret 管理(在 Drone 控制台为项目添加slack_webhook密钥),避免明文暴露。
模拟 Drone 环境变量,手动发送测试通知:
bashdocker run --rm \ -e PLUGIN_WEBHOOK=[***] \ -e PLUGIN_CHANNEL=#test-notifications \ -e PLUGIN_EVENT=always \ -e PLUGIN_MESSAGE="测试通知:构建成功 🎉" \ -e DRONE_BUILD_STATUS=success \ -e DRONE_REPO_NAME=my-project \ -e DRONE_BUILD_LINK=[***] \ plugins/slack
运行后,目标 Slack 频道将收到一条测试通知。
webhook 是否有效(可通过 Slack 提供的测试按钮验证)、Drone Runner 是否有权限访问互联网(Slack Webhook 需外网访问)。.drone.yml 中 when 条件与 event 配置是否冲突(如 when:branch: [dev] 与 event: [success] 需同时满足)。


manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务