1 2 3 4 5 6 7 | $ cf api https://api.ng.bluemix.net $ cf login <with you bluemix ID> $ git clone https://github.com/icnbrave/garbage-test-app.git $ cd garbage-test-app $ touch Staticfile $ echo "directory:visible" > Staticfile $ cf push garbage-test-app -b |
1 | $ wsk package update myGit -p repository icnbrave/garbage-test-app -p accessToken <GITHUB_ACCESSTOKEN> -p username <GITHUB_USERNAME> |
1 | $ wsk trigger create gitTrigger --feed myGit/webhook -p events push |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | ... "commits": [ { "id": "0d1a26e67d8f5eaf1f6ba5c57fc3c7d91ac0fd1c", "tree_id": "f9d2a07e9488b91af2641b26b9407fe22a451433", "distinct": true, "message": "Update README.md", "timestamp": "2015-05-05T19:40:15-04:00", "url": "https://github.com/baxterthehacker/public-repo/commit/0d1a26e67d8f5eaf1f6ba5c57fc3c7d91ac0fd1c", "author": { "name": "baxterthehacker", "email": "baxterthehacker@users.noreply.github.com", "username": "baxterthehacker" }, "committer": { "name": "baxterthehacker", "email": "baxterthehacker@users.noreply.github.com", "username": "baxterthehacker" }, "added": [ ], "removed": [ ], "modified": [ "README.md" ] } ], ... |
1 | $ wsk action create getPushPayloadAction getPushPayload.js |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | function main(params){ var testAppUrl = "https://garbagetestapp.mybluemix.net/"; var head_commit = params["head_commit"] || ""; var files = []; if(head_commit != ""){ files=files.concat(head_commit["added"]); files=files.concat(head_commit["modified"]); } console.log("files: ", files); // files map to test app link var urls=[]; for(var i=0,len=files.length; i<len; i++){ urls.push(testAppUrl + files); } return {payload: urls.join(",")}; } |
1 | $ wsk rule create git2slackRule gitTrigger getPushPayloadAction |
1 | $ wsk action create garbageDetectionAction garbageDetectionAction.js |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 | var request = require('request'); var http = require("http"); var querystring = require('querystring'); var utils = { map : function(arr, func){ var res = []; for(var i=0,len=arr.length; i<len; i++){ res.push(func(arr)); } return res; }, encodeStrings : function(arr){ return utils.map(arr, querystring.escape); }, decodeStrings : function(arr){ return utils.map(arr, decodeURI); }, }; function main(params) { // payload is urls with ',' split, such as "url1,url2" var payload = params["payload"].split(',') || []; var data=[]; for(var i=0,len=payload.length; i<len; i++){ data.push({'url': payload}); } console.log(data); var options = { host: 'garbagecodedetection.mybluemix.net', port: 80, path: '/rest/garbagechar_scan', method: 'POST', headers: { 'Content-Type': 'application/json', } }; var req = http.request(options, function (res) { res.on('data', function (message) { var ret= eval('(' + message + ')'); console.log('response : ' ,ret); console.log('response type: ', typeof ret); for(var i=0; i<ret.length; i++) { ret['garbled_lines'] = utils.encodeStrings(ret['garbled_lines']); } console.log('Encoded response: ', ret) whisk.done({result: ret}); }); }); req.on('error', function(e) { console.log('problem with request: ' + e.message); whisk.done({text: 'Problem with request' + e.message}); }); // write data to request body req.write(JSON.stringify(data)); req.end(); return whisk.async(); } |
1 | $ wsk action invoke garbageDetectAction --blocking --result -p payload |
欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) | Powered by Discuz! 7.0.0 |