6 Commits

Author SHA1 Message Date
lizheming 738e6ffd52 1.0.0 2018-01-07 17:44:57 +08:00
lizheming d7c4c28e27 0.1.0 2018-01-07 17:44:49 +08:00
lizheming d615e0754d add docs.md 2018-01-07 17:43:58 +08:00
lizheming faa6cefaea add travis 2018-01-07 17:31:22 +08:00
lizheming 18edf8f861 add eslint and test 2018-01-07 17:29:51 +08:00
lizheming 55c4818d7b add logo and update readme 2018-01-07 16:45:05 +08:00
10 changed files with 240 additions and 9 deletions
+3
View File
@@ -0,0 +1,3 @@
{
"extends": "think"
}
+8
View File
@@ -0,0 +1,8 @@
language: node_js
node_js:
- '8'
sudo: false
script:
- "npm test"
after_success:
- 'npm install coveralls && ./node_modules/.bin/nyc report --reporter=text-lcov | ./node_modules/.bin/coveralls'
+85
View File
@@ -0,0 +1,85 @@
---
date: 2018-01-07T00:00:00+00:00
title: Wechat
author: lizheming
tags: [ notifications, chat ]
repo: lizheming/drone-wechat
logo: wechat.svg
---
The Wechat plugin posts build status messages to your account. The below pipeline configuration demonstrates simple usage:
```yaml
pipline:
wechat:
image: lizheming/drone-wechat
sckey: xxxxxx
title: "plugin notification"
message: >
{%if success %}
build {{build.number}} succeeded. Good job.
{% else %}
build {{build.number}} failed. Fix me please.
{% endif %}
```
# Praameter Reference
sckey
: SCKEY get from [ServerChan](http://sc.ftqq.com)
title
: Notification title
message
: Notification body message, support markdown
# Template Reference
repo.owner
: repository owner
repo.name
: repository name
build.status
: build status type enumeration, either success or failure
build.event
: build event type enumeration, one of push, pull_request, tag, deployment
build.number
: build number
build.commit
: git sha for current commit
build.branch
: git branch for current commit
build.tag
: git tag for current commit
build.ref
: git ref for current commit
build.author
: git author for current commit
build.link
: link the the build results in drone
build.started
: unix timestamp for build started
build.finished
: unix timestamp for build finished
# Template Filter
uppercasefirst
: converts the first letter of a string to uppercase
datetime
: converts a unix timestamp to a date time string. Example {{build.started | datetime}}, you can see more info in [nunjucks-date-filter](https://www.npmjs.com/package/nunjucks-date-filter)
More filter can see [builtin-filters](https://mozilla.github.io/nunjucks/templating.html#builtin-filters)
+1 -1
View File
@@ -7,7 +7,7 @@ LABEL maintainer="lizheming <i@imnerd.org>" \
WORKDIR /wechat
COPY package.json /wechat/package.json
RUN npm install --registry=https://registry.npm.taobao.org
RUN npm install --production --registry=https://registry.npm.taobao.org
COPY index.js /wechat/index.js
ENTRYPOINT [ "node", "/wechat/index.js" ]
+33 -5
View File
@@ -1,17 +1,45 @@
<img src="wechat.svg" />
## drone-wechat
[![Travis](https://img.shields.io/travis/lizheming/drone-wechat.svg)]()
[![Coverage Status](https://coveralls.io/repos/github/lizheming/drone-wechat/badge.svg?branch=master)](https://coveralls.io/github/lizheming/drone-wechat?branch=master)
[![Docker Pulls](https://img.shields.io/docker/pulls/lizheming/drone-wechat.svg)]()
[![](https://images.microbadger.com/badges/image/lizheming/drone-wechat.svg)](https://microbadger.com/images/lizheming/drone-wechat)
[![GitHub release](https://img.shields.io/github/release/lizheming/drone-wechat.svg)]()
drone 微信消息通知插件
Drone plugin for sending telegram notifications.
## 简介
## Description
基于 http://sc.ftqq.com/ 封装的 drone 微信消息通知插件。使用前需要去 [Server酱]( http://sc.ftqq.com/) 获取密钥。Github 登录后即可在 [发送消息](http://sc.ftqq.com/?c=code) 页面查看。
This drone wechat notification plugin builds base on [ServerChan](http://sc.ftqq.com). Before using you should login to [ServerChan](http://sc.ftqq.com) to get `SCKEY`. After login with Github account you can get `SCKEY` at http://sc.ftqq.com/?c=code.
## 使用
Read this in other languages: [English](README.md), [简体中文](README.zh-cn.md).
## Environment
- `PLUGIN_SCKEY`: SCKEY get from [ServerChan](http://sc.ftqq.com)
- `PLUGIN_TITLE`: Notification title
- `PLUGIN_MESSAGE`: Notification body message, support markdown.
## Usage
```
docker run --rm \
-e PLUGIN_SCKEY=xxxx \
-e PLUGIN_TITLE=xxxx \
-e PLUGIN_MESSAGE=xxx
-e PLUGIN_MESSAGE=xxx \
-e DRONE_REPO_OWNER=lizheming \
-e DRONE_REPO_NAME=drone-wechat \
-e DRONE_COMMIT_SHA=e5e82b5eb3737205c25955dcc3dcacc839b7be52 \
-e DRONE_COMMIT_BRANCH=master \
-e DRONE_COMMIT_LINK=https://github.com/lizheming/drone-wechat/compare/master... \
-e DRONE_COMMIT_AUTHOR=lizheming \
-e DRONE_COMMIT_AUTHOR_EMAIL=secretlzm007@gmail.com \
-e DRONE_BUILD_NUMBER=1 \
-e DRONE_BUILD_STATUS=success \
-e DRONE_BUILD_LINK=http://github.com/lizheming/drone-wechat \
-e DRONE_TAG=1.0.0 \
-e DRONE_JOB_STARTED=1477550550 \
-e DRONE_JOB_FINISHED=1477550750 \
lizheming/drone-wechat
```
+45
View File
@@ -0,0 +1,45 @@
<img src="wechat.svg" />
## drone-wechat
[![Travis](https://img.shields.io/travis/lizheming/drone-wechat.svg)]()
[![Coverage Status](https://coveralls.io/repos/github/lizheming/drone-wechat/badge.svg?branch=master)](https://coveralls.io/github/lizheming/drone-wechat?branch=master)
[![Docker Pulls](https://img.shields.io/docker/pulls/lizheming/drone-wechat.svg)]()
[![](https://images.microbadger.com/badges/image/lizheming/drone-wechat.svg)](https://microbadger.com/images/lizheming/drone-wechat)
[![GitHub release](https://img.shields.io/github/release/lizheming/drone-wechat.svg)]()
drone 微信消息通知插件。
其它语言版本:[English](README.md)[简体中文](README.zh-cn.md)。
## 简介
基于 http://sc.ftqq.com/ 封装的 drone 微信消息通知插件。使用前需要去 [Server酱]( http://sc.ftqq.com/) 获取密钥。Github 登录后即可在 [发送消息](http://sc.ftqq.com/?c=code) 页面查看。
## 配置说明
- `PLUGIN_SCKEY`: SCKEY get from [ServerChan](http://sc.ftqq.com)
- `PLUGIN_TITLE`: Notification title
- `PLUGIN_MESSAGE`: Notification body message, support markdown.
## 如何使用
```
docker run --rm \
-e PLUGIN_SCKEY=xxxx \
-e PLUGIN_TITLE=xxxx \
-e PLUGIN_MESSAGE=xxx \
-e DRONE_REPO_OWNER=lizheming \
-e DRONE_REPO_NAME=drone-wechat \
-e DRONE_COMMIT_SHA=e5e82b5eb3737205c25955dcc3dcacc839b7be52 \
-e DRONE_COMMIT_BRANCH=master \
-e DRONE_COMMIT_LINK=https://github.com/lizheming/drone-wechat/compare/master... \
-e DRONE_COMMIT_AUTHOR=lizheming \
-e DRONE_COMMIT_AUTHOR_EMAIL=secretlzm007@gmail.com \
-e DRONE_BUILD_NUMBER=1 \
-e DRONE_BUILD_STATUS=success \
-e DRONE_BUILD_LINK=http://github.com/lizheming/drone-wechat \
-e DRONE_TAG=1.0.0 \
-e DRONE_JOB_STARTED=1477550550 \
-e DRONE_JOB_FINISHED=1477550750 \
lizheming/drone-wechat
```
+2 -1
View File
@@ -1,3 +1,4 @@
const process = require('process');
const render = require('drone-render');
const request = require('request-promise-native');
@@ -16,4 +17,4 @@ request({
text: PLUGIN_TITLE,
desp: render(PLUGIN_MESSAGE)
}
});
});
+11 -2
View File
@@ -1,10 +1,12 @@
{
"name": "drone-wechat",
"version": "0.0.1",
"version": "1.0.0",
"description": "drone wechat notification plugin",
"main": "index.js",
"scripts": {
"test": "\"\""
"test": "npm run eslint && npm run test-cov",
"test-cov": "nyc ava test.js && nyc report --reporter=html",
"eslint": "eslint index.js"
},
"repository": {
"type": "git",
@@ -26,5 +28,12 @@
"drone-render": "^1.0.0",
"request": "^2.83.0",
"request-promise-native": "^1.0.5"
},
"devDependencies": {
"ava": "^0.24.0",
"eslint": "^4.14.0",
"eslint-config-think": "^1.0.2",
"mock-require": "^2.0.2",
"nyc": "^11.4.1"
}
}
+51
View File
@@ -0,0 +1,51 @@
const {test} = require('ava');
const mock = require('mock-require');
const SCKEY = 'testsckey';
const SCKEY2 = 'testsckey2';
const TITLE = 'test for title';
const MESSAGE = 'test for message';
test('send wechat', async t => {
t.plan(2);
mock('process', {
env: {
PLUGIN_SCKEY: SCKEY,
PLUGIN_TITLE: TITLE,
PLUGIN_MESSAGE: MESSAGE
}
});
mock('drone-render', text => {
t.is(text, MESSAGE);
return text + '1';
});
mock('request-promise-native', obj => {
t.deepEqual(obj, {
url: `https://sc.ftqq.com/${SCKEY}.send`,
qs: {
text: TITLE,
desp: MESSAGE + '1'
}
});
});
mock.reRequire('./index.js');
mock.stopAll();
});
test('send wechat with SERVER_CHAN_KEY', async t => {
mock('process', {
env: {
SERVER_CHAN_KEY: SCKEY2,
PLUGIN_TITLE: TITLE,
PLUGIN_MESSAGE: MESSAGE
}
});
mock('request-promise-native', obj => {
t.is(obj.url, `https://sc.ftqq.com/${SCKEY2}.send`);
});
mock.reRequire('./index.js');
mock.stopAll();
});
+1
View File
@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="256" height="256" viewBox="0 0 300 300"><path fill="#2DC100" d="M300 255c0 24.854-20.147 45-45 45H45c-24.854 0-45-20.146-45-45V45C0 20.147 20.147 0 45 0h210c24.853 0 45 20.147 45 45v210z"/><g fill="#FFF"><path d="M200.803 111.88c-24.213 1.265-45.268 8.605-62.362 25.188-17.271 16.754-25.155 37.284-23 62.734-9.464-1.172-18.084-2.462-26.753-3.192-2.994-.252-6.547.106-9.083 1.537-8.418 4.75-16.488 10.113-26.053 16.092 1.755-7.938 2.891-14.889 4.902-21.575 1.479-4.914.794-7.649-3.733-10.849-29.066-20.521-41.318-51.232-32.149-82.85 8.483-29.25 29.315-46.989 57.621-56.236 38.635-12.62 82.054.253 105.547 30.927 8.485 11.08 13.688 23.516 15.063 38.224zm-111.437-9.852c.223-5.783-4.788-10.993-10.74-11.167-6.094-.179-11.106 4.478-11.284 10.483-.18 6.086 4.475 10.963 10.613 11.119 6.085.154 11.186-4.509 11.411-10.435zm58.141-11.171c-5.974.11-11.022 5.198-10.916 11.004.109 6.018 5.061 10.726 11.204 10.652 6.159-.074 10.83-4.832 10.772-10.977-.051-6.032-4.981-10.79-11.06-10.679z"/><path d="M255.201 262.83c-7.667-3.414-14.7-8.536-22.188-9.318-7.459-.779-15.3 3.524-23.104 4.322-23.771 2.432-45.067-4.193-62.627-20.432-33.397-30.89-28.625-78.254 10.014-103.568 34.341-22.498 84.704-14.998 108.916 16.219 21.129 27.24 18.646 63.4-7.148 86.284-7.464 6.623-10.15 12.073-5.361 20.804.884 1.612.985 3.653 1.498 5.689zm-87.274-84.499c4.881.005 8.9-3.815 9.085-8.636.195-5.104-3.91-9.385-9.021-9.406-5.06-.023-9.299 4.318-9.123 9.346.166 4.804 4.213 8.69 9.059 8.696zm56.261-18.022c-4.736-.033-8.76 3.844-8.953 8.629-.205 5.117 3.772 9.319 8.836 9.332 4.898.016 8.768-3.688 8.946-8.562.19-5.129-3.789-9.364-8.829-9.399z"/></g></svg>

After

Width:  |  Height:  |  Size: 1.6 KiB