@banana020/ci-dingtalk-notify
v1.0.2
Published
GitLab CI deploy notification via DingTalk robot webhook
Maintainers
Readme
ci-dingtalk-notify
GitLab CI 部署完成后,通过钉钉自定义机器人发送 Markdown 通知。
发布到 npm
首次使用前需发布到公共 npm(需先 npm login 注册/登录 npmjs.com):
npm publish若包名 ci-dingtalk-notify 已被占用,可修改 package.json 的 name 为 @你的用户名/ci-dingtalk-notify,发布时加 --access public,并同步更新各项目 CI 中的 npx 命令。
在 GitLab CI 中使用
.deploy_notify:
after_script:
- |
if [ "$CI_JOB_STATUS" = "canceled" ]; then exit 0; fi
npx --yes [email protected]
deploy_staging:
extends: .deploy_notify
variables:
DEPLOY_ENV: stagingGitLab Group 变量(配置一次,所有项目共享)
在 GitLab Group → Settings → CI/CD → Variables 添加:
| 变量名 | 说明 | 建议 |
| ------ | ---- | ---- |
| DINGTALK_ACCESS_TOKEN | 钉钉机器人 Webhook 中 access_token= 后的值 | Masked |
| DINGTALK_SECRET | 机器人「加签」密钥 | Masked + Protected |
钉钉群:群设置 → 智能群助手 → 添加机器人 → 自定义 → 安全设置选「加签」。
若启用「自定义关键词」,消息标题含「部署通知」,关键词可设为 部署。
自动读取的 CI 变量
| 展示字段 | 环境变量 |
| -------- | -------- |
| 分支 | CI_COMMIT_REF_NAME |
| 推送人 | GITLAB_USER_NAME |
| 结果 | CI_JOB_STATUS |
| 项目 | CI_PROJECT_NAME |
| 环境 | DEPLOY_ENV(各 job 自行设置) |
| 提交说明 | CI_COMMIT_MESSAGE |
| 流水线 | CI_PIPELINE_URL |
| 耗时 | CI_JOB_STARTED_AT |
| 提交作者 | CI_COMMIT_AUTHOR |
本地调试
export DINGTALK_ACCESS_TOKEN=xxx
export DINGTALK_SECRET=xxx
export CI_PROJECT_NAME=iamadmin
export CI_COMMIT_REF_NAME=dev
export GITLAB_USER_NAME=张三
export CI_JOB_STATUS=success
export DEPLOY_ENV=dev
export CI_COMMIT_MESSAGE="fix: test"
export CI_COMMIT_AUTHOR="李四"
export CI_PIPELINE_URL=https://gitlab.example.com/pipelines/1
export CI_JOB_STARTED_AT=$(date -u +%Y-%m-%dT%H:%M:%SZ)
node bin/cli.mjs