{"_id":"@banana020/ci-dingtalk-notify","_rev":"3-460d06d36c3d80ed66fb3f02efa13be6","name":"@banana020/ci-dingtalk-notify","dist-tags":{"latest":"1.0.2"},"versions":{"1.0.0":{"name":"@banana020/ci-dingtalk-notify","version":"1.0.0","keywords":["dingtalk","gitlab","ci","deploy","notification"],"license":"MIT","_id":"@banana020/ci-dingtalk-notify@1.0.0","maintainers":[{"name":"banana020","email":"k1ng_banana@qq.com"}],"bin":{"ci-dingtalk-notify":"bin/cli.mjs"},"dist":{"shasum":"4bf420773bdeddac0b0460473f65a87fea9d7696","tarball":"https://registry.npmjs.org/@banana020/ci-dingtalk-notify/-/ci-dingtalk-notify-1.0.0.tgz","fileCount":4,"integrity":"sha512-HDNRQ8iw80lm6g8Y9H5iNfNtp7znd7/Z82Xkp+YsDGxwAJyvj4iyoqz1BJ1cuhRolZc5MbGlHubfQZRkHdJh6A==","signatures":[{"sig":"MEYCIQDcEKlHraGNyGXAyoQuGdaLJyOQnSgVT7eJTowvppU+CQIhALvlcIf+QoNvomH0/aEz9FZIjdLmdhcHc3s/bVmobaWh","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5243},"type":"module","engines":{"node":">=18"},"_npmUser":{"name":"banana020","email":"k1ng_banana@qq.com"},"_npmVersion":"11.6.2","description":"GitLab CI deploy notification via DingTalk robot webhook","directories":{},"_nodeVersion":"24.12.0","dependencies":{"dingtalk-robot-sdk":"^1.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/ci-dingtalk-notify_1.0.0_1782107230000_0.3949042560784528","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@banana020/ci-dingtalk-notify","version":"1.0.1","keywords":["dingtalk","gitlab","ci","deploy","notification"],"license":"MIT","_id":"@banana020/ci-dingtalk-notify@1.0.1","maintainers":[{"name":"banana020","email":"k1ng_banana@qq.com"}],"bin":{"ci-dingtalk-notify":"bin/cli.mjs"},"dist":{"shasum":"17042ede9552736f5c02ebd28fb3f504e1bca061","tarball":"https://registry.npmjs.org/@banana020/ci-dingtalk-notify/-/ci-dingtalk-notify-1.0.1.tgz","fileCount":4,"integrity":"sha512-wMB1qeFI69mqnjqU0c4uYHF6RsHzkMu0HE7iX6QQhGsVuF3iKkLsYawy5UJMAjh8tKbTXOSbUmMbca7WP8HGpQ==","signatures":[{"sig":"MEQCICeIMYvp+PShkasejyw/OvmjxCutsjXB281oaZvZR6GmAiAmErSMhXDAGZfCvJ0tOnCV6fuA2iebbWZMniVWYj0x+A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5579},"type":"module","engines":{"node":">=18"},"gitHead":"87f4063d9fc855c97aa829de0978777f878b0f4a","_npmUser":{"name":"banana020","email":"k1ng_banana@qq.com"},"_npmVersion":"11.6.2","description":"GitLab CI deploy notification via DingTalk robot webhook","directories":{},"_nodeVersion":"24.12.0","dependencies":{"dingtalk-robot-sdk":"^1.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/ci-dingtalk-notify_1.0.1_1782108569004_0.40915281992218877","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@banana020/ci-dingtalk-notify","version":"1.0.2","description":"GitLab CI deploy notification via DingTalk robot webhook","type":"module","publishConfig":{"access":"public"},"bin":{"ci-dingtalk-notify":"bin/cli.mjs"},"engines":{"node":">=18"},"keywords":["dingtalk","gitlab","ci","deploy","notification"],"license":"MIT","dependencies":{"dingtalk-robot-sdk":"^1.1.0"},"gitHead":"ace3c5bbbf60e65a2ab337f27532702fdfed2c99","_id":"@banana020/ci-dingtalk-notify@1.0.2","_nodeVersion":"24.12.0","_npmVersion":"11.6.2","dist":{"integrity":"sha512-uO9qWOVb7FGBuS6CZhzJ5nI6AQaZOsxe4cwiZ8WvfhQ8F/FC98XY9ahpZuwJMskbsFpSkAKfBY0AkA2SgDdVRg==","shasum":"61b2f6d59c92369cf83f4a8a52b96a95ec3be029","tarball":"https://registry.npmjs.org/@banana020/ci-dingtalk-notify/-/ci-dingtalk-notify-1.0.2.tgz","fileCount":4,"unpackedSize":5918,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIA+YW92P0Z8luFmrIVpF1BD1v8/2T6moYepGsTlMrtJmAiEAk6nhnLIoJbVKsDN7adJ4fBCkrPy7Xe5yC1UKQg+dgGU="}]},"_npmUser":{"name":"banana020","email":"k1ng_banana@qq.com"},"directories":{},"maintainers":[{"name":"banana020","email":"k1ng_banana@qq.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/ci-dingtalk-notify_1.0.2_1782109701980_0.45763586752365515"},"_hasShrinkwrap":false}},"time":{"created":"2026-06-22T05:47:09.795Z","modified":"2026-06-22T06:28:22.250Z","1.0.0":"2026-06-22T05:47:10.126Z","1.0.1":"2026-06-22T06:09:29.131Z","1.0.2":"2026-06-22T06:28:22.136Z"},"license":"MIT","keywords":["dingtalk","gitlab","ci","deploy","notification"],"description":"GitLab CI deploy notification via DingTalk robot webhook","maintainers":[{"name":"banana020","email":"k1ng_banana@qq.com"}],"readme":"# ci-dingtalk-notify\n\nGitLab CI 部署完成后，通过钉钉自定义机器人发送 Markdown 通知。\n\n## 发布到 npm\n\n首次使用前需发布到公共 npm（需先 `npm login` 注册/登录 [npmjs.com](https://www.npmjs.com)）：\n\n```bash\nnpm publish\n```\n\n若包名 `ci-dingtalk-notify` 已被占用，可修改 `package.json` 的 `name` 为 `@你的用户名/ci-dingtalk-notify`，发布时加 `--access public`，并同步更新各项目 CI 中的 npx 命令。\n\n## 在 GitLab CI 中使用\n\n```yaml\n.deploy_notify:\n  after_script:\n    - |\n      if [ \"$CI_JOB_STATUS\" = \"canceled\" ]; then exit 0; fi\n      npx --yes ci-dingtalk-notify@1.0.0\n\ndeploy_staging:\n  extends: .deploy_notify\n  variables:\n    DEPLOY_ENV: staging\n```\n\n## GitLab Group 变量（配置一次，所有项目共享）\n\n在 **GitLab Group → Settings → CI/CD → Variables** 添加：\n\n| 变量名 | 说明 | 建议 |\n| ------ | ---- | ---- |\n| `DINGTALK_ACCESS_TOKEN` | 钉钉机器人 Webhook 中 `access_token=` 后的值 | Masked |\n| `DINGTALK_SECRET` | 机器人「加签」密钥 | Masked + Protected |\n\n钉钉群：**群设置 → 智能群助手 → 添加机器人 → 自定义** → 安全设置选「加签」。\n\n若启用「自定义关键词」，消息标题含「部署通知」，关键词可设为 `部署`。\n\n## 自动读取的 CI 变量\n\n| 展示字段 | 环境变量 |\n| -------- | -------- |\n| 分支 | `CI_COMMIT_REF_NAME` |\n| 推送人 | `GITLAB_USER_NAME` |\n| 结果 | `CI_JOB_STATUS` |\n| 项目 | `CI_PROJECT_NAME` |\n| 环境 | `DEPLOY_ENV`（各 job 自行设置） |\n| 提交说明 | `CI_COMMIT_MESSAGE` |\n| 流水线 | `CI_PIPELINE_URL` |\n| 耗时 | `CI_JOB_STARTED_AT` |\n| 提交作者 | `CI_COMMIT_AUTHOR` |\n\n## 本地调试\n\n```bash\nexport DINGTALK_ACCESS_TOKEN=xxx\nexport DINGTALK_SECRET=xxx\nexport CI_PROJECT_NAME=iamadmin\nexport CI_COMMIT_REF_NAME=dev\nexport GITLAB_USER_NAME=张三\nexport CI_JOB_STATUS=success\nexport DEPLOY_ENV=dev\nexport CI_COMMIT_MESSAGE=\"fix: test\"\nexport CI_COMMIT_AUTHOR=\"李四\"\nexport CI_PIPELINE_URL=https://gitlab.example.com/pipelines/1\nexport CI_JOB_STARTED_AT=$(date -u +%Y-%m-%dT%H:%M:%SZ)\n\nnode bin/cli.mjs\n```\n","readmeFilename":"README.md"}