Giter VIP home page Giter VIP logo

agile-bot's Introduction

Agile Ventures

For discussion of all those things that are Agile Ventures in general rather than the technology of any project in particular, as well as a place to hold documents on how to get stuff done:

Updating the agileventures.org website

The agileventures.org website fetches content from this repository.

Edit any of the pages in the root directory of this repo. Log in to the console on the production server and execute the job by running GithubStaticPagesJob.run

agile-bot's People

Contributors

arreche avatar mtc2013 avatar sampritipanda avatar tansaku avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

agile-bot's Issues

should add test to ensure cs169 hangouts not posted to general

e.g.

  describe 'hangouts-notify for pair programming on cs169', ->
    beforeEach (done) ->
      @slack = mockSlackHangoutNotify(@routes_functions, 'C0TLAE1MH', 'PairProgramming', 'cs169', done)
      makeRequest(@routes_functions, 'PairProgramming', 'cs169', done)

    it 'should not post hangout link to general channel on slack', (done) ->
      expect(@slack.isDone()).toBe(false, 'unexpected HTTP endpoint was hit')
      done()

staging failing to ping slack ...

I see incoming POSTs on staging:

2016-11-17T10:39:17.605177+00:00 heroku[router]: at=info method=POST path="/hubot/hangouts-notify" host=agile-bot-staging.herokuapp.com request_id=d667ef83-400f-4870-8b83-a0d058df7074 fwd="54.75.93.29" dyno=web.1 connect=0ms service=3ms status=204 bytes=132
2016-11-17T10:39:17.802212+00:00 heroku[router]: at=info method=POST path="/hubot/hangouts-video-notify" host=agile-bot-staging.herokuapp.com request_id=d02b793e-7024-4508-9191-4b82fb6fd25b fwd="54.75.93.29" dyno=web.1 connect=0ms service=2ms status=204 bytes=132

another silent error - maybe we need more logging enabled on staging

I've added rollbar to staging ...

warning during deploy: possible EventEmitter memory leak detected. 11 error listeners added.

→ git push production staging:master
Total 0 (delta 0), reused 0 (delta 0)
remote: Compressing source files... done.
remote: Building source:
remote: 
remote: -----> Node.js app detected
remote: 
remote: -----> Creating runtime environment
remote:        
remote:        NPM_CONFIG_LOGLEVEL=error
remote:        NPM_CONFIG_PRODUCTION=true
remote:        NODE_ENV=production
remote:        NODE_MODULES_CACHE=true
remote: 
remote: -----> Installing binaries
remote:        engines.node (package.json):  >= 0.8.x
remote:        engines.npm (package.json):   >= 1.1.x
remote:        
remote:        Resolving node version >= 0.8.x via semver.io...
remote:        Downloading and installing node 5.11.1...
remote:        Resolving npm version >= 1.1.x via semver.io...
remote:        Downloading and installing npm 3.10.7 (replacing version 3.8.6)...
remote: 
remote: -----> Restoring cache
remote:        Skipping cache restore (new runtime signature)
remote: 
remote: -----> Building dependencies
remote:        Installing node modules (package.json)
remote:        (node) warning: possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit.
remote:        Trace
remote:        at TLSSocket.addListener (events.js:252:17)
remote:        at TLSSocket.Readable.on (_stream_readable.js:673:33)
remote:        at Request.<anonymous> (/tmp/build_045cdf336fdefe8b60be524ed115b841/.heroku/node/lib/node_modules/npm/node_modules/npm-registry-client/lib/request.js:153:7)
remote:        at emitOne (events.js:90:13)
remote:        at Request.emit (events.js:182:7)
remote:        at ClientRequest.<anonymous> (/tmp/build_045cdf336fdefe8b60be524ed115b841/.heroku/node/lib/node_modules/npm/node_modules/request/request.js:791:10)
remote:        at emitOne (events.js:95:20)
remote:        at ClientRequest.emit (events.js:182:7)
remote:        at tickOnSocket (_http_client.js:541:7)
remote:        at onSocketNT (_http_client.js:553:5)
remote:        (node) warning: possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit.
remote:        Trace
remote:        at TLSSocket.addListener (events.js:252:17)
remote:        at TLSSocket.Readable.on (_stream_readable.js:673:33)
remote:        at Request.<anonymous> (/tmp/build_045cdf336fdefe8b60be524ed115b841/.heroku/node/lib/node_modules/npm/node_modules/npm-registry-client/lib/request.js:153:7)
remote:        at emitOne (events.js:90:13)
remote:        at Request.emit (events.js:182:7)
remote:        at ClientRequest.<anonymous> (/tmp/build_045cdf336fdefe8b60be524ed115b841/.heroku/node/lib/node_modules/npm/node_modules/request/request.js:791:10)
remote:        at emitOne (events.js:95:20)
remote:        at ClientRequest.emit (events.js:182:7)
remote:        at tickOnSocket (_http_client.js:541:7)
remote:        at onSocketNT (_http_client.js:553:5)
remote:        (node) warning: possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit.
remote:        Trace
remote:        at TLSSocket.addListener (events.js:252:17)
remote:        at TLSSocket.Readable.on (_stream_readable.js:673:33)
remote:        at Request.<anonymous> (/tmp/build_045cdf336fdefe8b60be524ed115b841/.heroku/node/lib/node_modules/npm/node_modules/npm-registry-client/lib/request.js:153:7)
remote:        at emitOne (events.js:90:13)
remote:        at Request.emit (events.js:182:7)
remote:        at ClientRequest.<anonymous> (/tmp/build_045cdf336fdefe8b60be524ed115b841/.heroku/node/lib/node_modules/npm/node_modules/request/request.js:791:10)
remote:        at emitOne (events.js:95:20)
remote:        at ClientRequest.emit (events.js:182:7)
remote:        at tickOnSocket (_http_client.js:541:7)
remote:        at onSocketNT (_http_client.js:553:5)
remote:        (node) warning: possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit.
remote:        Trace
remote:        at TLSSocket.addListener (events.js:252:17)
remote:        at TLSSocket.Readable.on (_stream_readable.js:673:33)
remote:        at Request.<anonymous> (/tmp/build_045cdf336fdefe8b60be524ed115b841/.heroku/node/lib/node_modules/npm/node_modules/npm-registry-client/lib/request.js:153:7)
remote:        at emitOne (events.js:90:13)
remote:        at Request.emit (events.js:182:7)
remote:        at ClientRequest.<anonymous> (/tmp/build_045cdf336fdefe8b60be524ed115b841/.heroku/node/lib/node_modules/npm/node_modules/request/request.js:791:10)
remote:        at emitOne (events.js:95:20)
remote:        at ClientRequest.emit (events.js:182:7)
remote:        at tickOnSocket (_http_client.js:541:7)
remote:        at onSocketNT (_http_client.js:553:5)
remote:        (node) warning: possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit.
remote:        Trace
remote:        at TLSSocket.addListener (events.js:252:17)
remote:        at TLSSocket.Readable.on (_stream_readable.js:673:33)
remote:        at Request.<anonymous> (/tmp/build_045cdf336fdefe8b60be524ed115b841/.heroku/node/lib/node_modules/npm/node_modules/npm-registry-client/lib/request.js:153:7)
remote:        at emitOne (events.js:90:13)
remote:        at Request.emit (events.js:182:7)
remote:        at ClientRequest.<anonymous> (/tmp/build_045cdf336fdefe8b60be524ed115b841/.heroku/node/lib/node_modules/npm/node_modules/request/request.js:791:10)
remote:        at emitOne (events.js:95:20)
remote:        at ClientRequest.emit (events.js:182:7)
remote:        at tickOnSocket (_http_client.js:541:7)
remote:        at onSocketNT (_http_client.js:553:5)
remote:        (node) warning: possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit.
remote:        Trace
remote:        at TLSSocket.addListener (events.js:252:17)
remote:        at TLSSocket.Readable.on (_stream_readable.js:673:33)
remote:        at Request.<anonymous> (/tmp/build_045cdf336fdefe8b60be524ed115b841/.heroku/node/lib/node_modules/npm/node_modules/npm-registry-client/lib/request.js:153:7)
remote:        at emitOne (events.js:90:13)
remote:        at Request.emit (events.js:182:7)
remote:        at ClientRequest.<anonymous> (/tmp/build_045cdf336fdefe8b60be524ed115b841/.heroku/node/lib/node_modules/npm/node_modules/request/request.js:791:10)
remote:        at emitOne (events.js:95:20)
remote:        at ClientRequest.emit (events.js:182:7)
remote:        at tickOnSocket (_http_client.js:541:7)
remote:        at onSocketNT (_http_client.js:553:5)
remote:        (node) warning: possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit.
remote:        Trace
remote:        at TLSSocket.addListener (events.js:252:17)
remote:        at TLSSocket.Readable.on (_stream_readable.js:673:33)
remote:        at Request.<anonymous> (/tmp/build_045cdf336fdefe8b60be524ed115b841/.heroku/node/lib/node_modules/npm/node_modules/npm-registry-client/lib/request.js:153:7)
remote:        at emitOne (events.js:90:13)
remote:        at Request.emit (events.js:182:7)
remote:        at ClientRequest.<anonymous> (/tmp/build_045cdf336fdefe8b60be524ed115b841/.heroku/node/lib/node_modules/npm/node_modules/request/request.js:791:10)
remote:        at emitOne (events.js:95:20)
remote:        at ClientRequest.emit (events.js:182:7)
remote:        at tickOnSocket (_http_client.js:541:7)
remote:        at onSocketNT (_http_client.js:553:5)
remote:        
remote:        > [email protected] install /tmp/build_045cdf336fdefe8b60be524ed115b841/node_modules/ws
remote:        > (node-gyp rebuild 2> builderror.log) || (exit 0)
remote:        
remote:        make: Entering directory `/tmp/build_045cdf336fdefe8b60be524ed115b841/node_modules/ws/build'
remote:        CXX(target) Release/obj.target/bufferutil/src/bufferutil.o
remote:        make: Leaving directory `/tmp/build_045cdf336fdefe8b60be524ed115b841/node_modules/ws/build'
remote:        [email protected] /tmp/build_045cdf336fdefe8b60be524ed115b841
remote:        ├─┬ [email protected]
remote:        │ ├── [email protected]
remote:        │ └── [email protected]
remote:        ├─┬ [email protected]
remote:        │ ├── [email protected]
remote:        │ ├─┬ [email protected]
remote:        │ │ ├── [email protected]
remote:        │ │ ├── [email protected]
remote:        │ │ ├─┬ [email protected]
remote:        │ │ │ └── [email protected]
remote:        │ │ ├── [email protected]
remote:        │ │ └── [email protected]
remote:        │ ├── [email protected]
remote:        │ ├── [email protected]
remote:        │ ├─┬ [email protected]
remote:        │ │ ├─┬ [email protected]
remote:        │ │ │ ├─┬ [email protected]
remote:        │ │ │ │ └── [email protected]
remote:        │ │ │ └── [email protected]
remote:        │ │ ├─┬ [email protected]
remote:        │ │ │ └── [email protected]
remote:        │ │ ├── [email protected]
remote:        │ │ └─┬ [email protected]
remote:        │ │   ├── [email protected]
remote:        │ │   └─┬ [email protected]
remote:        │ │     └── [email protected]
remote:        │ ├─┬ [email protected]
remote:        │ │ ├── [email protected]
remote:        │ │ ├── [email protected]
remote:        │ │ ├─┬ [email protected]
remote:        │ │ │ ├── [email protected]
remote:        │ │ │ ├─┬ [email protected]
remote:        │ │ │ │ ├── [email protected]
remote:        │ │ │ │ ├─┬ [email protected]
remote:        │ │ │ │ │ └── [email protected]
remote:        │ │ │ │ ├── [email protected]
remote:        │ │ │ │ ├─┬ [email protected]
remote:        │ │ │ │ │ ├── [email protected]
remote:        │ │ │ │ │ └── [email protected]
remote:        │ │ │ │ └─┬ [email protected]
remote:        │ │ │ │   └─┬ [email protected]
remote:        │ │ │ │     └── [email protected]
remote:        │ │ │ ├── [email protected]
remote:        │ │ │ ├─┬ [email protected]
remote:        │ │ │ │ ├─┬ [email protected]
remote:        │ │ │ │ │ ├─┬ [email protected]
remote:        │ │ │ │ │ │ └── [email protected]
remote:        │ │ │ │ │ └── [email protected]
remote:        │ │ │ │ └─┬ [email protected]
remote:        │ │ │ │   └── [email protected]
remote:        │ │ │ ├── [email protected]
remote:        │ │ │ ├── [email protected]
remote:        │ │ │ ├─┬ [email protected]
remote:        │ │ │ │ └─┬ [email protected]
remote:        │ │ │ │   ├── [email protected]
remote:        │ │ │ │   ├── [email protected]
remote:        │ │ │ │   ├── [email protected]
remote:        │ │ │ │   └─┬ [email protected]
remote:        │ │ │ │     └── [email protected]
remote:        │ │ │ ├─┬ [email protected]
remote:        │ │ │ │ ├─┬ [email protected]
remote:        │ │ │ │ │ ├─┬ [email protected]
remote:        │ │ │ │ │ │ └── [email protected]
remote:        │ │ │ │ │ └── [email protected]
remote:        │ │ │ │ └── [email protected]
remote:        │ │ │ ├─┬ [email protected]
remote:        │ │ │ │ ├── [email protected]
remote:        │ │ │ │ └─┬ [email protected]
remote:        │ │ │ │   └── [email protected]
remote:        │ │ │ ├─┬ [email protected]
remote:        │ │ │ │ ├─┬ [email protected]
remote:        │ │ │ │ │ └── [email protected]
remote:        │ │ │ │ └── [email protected]
remote:        │ │ │ ├─┬ [email protected]
remote:        │ │ │ │ └── [email protected]
remote:        │ │ │ ├─┬ [email protected]
remote:        │ │ │ │ └── [email protected]
remote:        │ │ │ ├─┬ [email protected]
remote:        │ │ │ │ └─┬ [email protected]
remote:        │ │ │ │   └── [email protected]
remote:        │ │ │ ├── [email protected]
remote:        │ │ │ ├── [email protected]
remote:        │ │ │ ├── [email protected]
remote:        │ │ │ ├── [email protected]
remote:        │ │ │ ├── [email protected]
remote:        │ │ │ ├─┬ [email protected]
remote:        │ │ │ │ ├── [email protected]
remote:        │ │ │ │ ├── [email protected]
remote:        │ │ │ │ └─┬ [email protected]
remote:        │ │ │ │   └── [email protected]
remote:        │ │ │ ├─┬ [email protected]
remote:        │ │ │ │ ├── [email protected]
remote:        │ │ │ │ └─┬ [email protected]
remote:        │ │ │ │   ├── [email protected]
remote:        │ │ │ │   ├── [email protected]
remote:        │ │ │ │   ├─┬ [email protected]
remote:        │ │ │ │   │ └── [email protected]
remote:        │ │ │ │   └── [email protected]
remote:        │ │ │ ├─┬ [email protected]
remote:        │ │ │ │ └─┬ [email protected]
remote:        │ │ │ │   └── [email protected]
remote:        │ │ │ └── [email protected]
remote:        │ │ ├── [email protected]
remote:        │ │ ├── [email protected]
remote:        │ │ ├── [email protected]
remote:        │ │ ├── [email protected]
remote:        │ │ ├── [email protected]
remote:        │ │ ├── [email protected]
remote:        │ │ ├── [email protected]
remote:        │ │ ├── [email protected]
remote:        │ │ ├── [email protected]
remote:        │ │ ├── [email protected]
remote:        │ │ ├─┬ [email protected]
remote:        │ │ │ └── [email protected]
remote:        │ │ ├── [email protected]
remote:        │ │ ├─┬ [email protected]
remote:        │ │ │ ├── [email protected]
remote:        │ │ │ └── [email protected]
remote:        │ │ ├── [email protected]
remote:        │ │ ├─┬ [email protected]
remote:        │ │ │ ├── [email protected]
remote:        │ │ │ ├── [email protected]
remote:        │ │ │ ├─┬ [email protected]
remote:        │ │ │ │ └── [email protected]
remote:        │ │ │ └── [email protected]
remote:        │ │ ├── [email protected]
remote:        │ │ └── [email protected]
remote:        │ ├── [email protected]
remote:        │ ├── [email protected]
remote:        │ └── [email protected]
remote:        ├─┬ [email protected]
remote:        │ └── [email protected]
remote:        ├─┬ [email protected]
remote:        │ └─┬ [email protected]
remote:        │   ├── [email protected]
remote:        │   └─┬ [email protected]
remote:        │     ├── [email protected]
remote:        │     ├── [email protected]
remote:        │     ├── [email protected]
remote:        │     └── [email protected]
remote:        ├─┬ [email protected]
remote:        │ ├── [email protected]
remote:        │ ├── [email protected]
remote:        │ └── [email protected]
remote:        ├─┬ [email protected]
remote:        │ ├── [email protected]
remote:        │ ├── [email protected]
remote:        │ ├─┬ [email protected]
remote:        │ │ └─┬ [email protected]
remote:        │ │   ├── [email protected]
remote:        │ │   ├── [email protected]
remote:        │ │   ├── [email protected]
remote:        │ │   ├── [email protected]
remote:        │ │   ├── [email protected]
remote:        │ │   └── [email protected]
remote:        │ ├── [email protected]
remote:        │ ├─┬ [email protected]
remote:        │ │ └── [email protected]
remote:        │ ├── [email protected]
remote:        │ ├── [email protected]
remote:        │ ├─┬ [email protected]
remote:        │ │ ├─┬ [email protected]
remote:        │ │ │ └── [email protected]
remote:        │ │ └─┬ [email protected]
remote:        │ │   └── [email protected]
remote:        │ ├─┬ [email protected]
remote:        │ │ ├─┬ [email protected]
remote:        │ │ │ └── [email protected]
remote:        │ │ ├─┬ [email protected]
remote:        │ │ │ ├── [email protected]
remote:        │ │ │ ├─┬ [email protected]
remote:        │ │ │ │ └── [email protected]
remote:        │ │ │ ├── [email protected]
remote:        │ │ │ └── [email protected]
remote:        │ │ └─┬ [email protected]
remote:        │ │   └── [email protected]
remote:        │ ├─┬ [email protected]
remote:        │ │ ├── [email protected]
remote:        │ │ ├── [email protected]
remote:        │ │ ├── [email protected]
remote:        │ │ └── [email protected]
remote:        │ ├─┬ [email protected]
remote:        │ │ ├── [email protected]
remote:        │ │ ├─┬ [email protected]
remote:        │ │ │ ├── [email protected]
remote:        │ │ │ ├── [email protected]
remote:        │ │ │ └── [email protected]
remote:        │ │ └─┬ [email protected]
remote:        │ │   ├── [email protected]
remote:        │ │   ├── [email protected]
remote:        │ │   ├─┬ [email protected]
remote:        │ │   │ └── [email protected]
remote:        │ │   ├─┬ [email protected]
remote:        │ │   │ └── [email protected]
remote:        │ │   ├── [email protected]
remote:        │ │   ├─┬ [email protected]
remote:        │ │   │ └── [email protected]
remote:        │ │   ├── [email protected]
remote:        │ │   ├── [email protected]
remote:        │ │   └── [email protected]
remote:        │ ├── [email protected]
remote:        │ ├── [email protected]
remote:        │ ├── [email protected]
remote:        │ ├─┬ [email protected]
remote:        │ │ └── [email protected]
remote:        │ ├── [email protected]
remote:        │ ├── [email protected]
remote:        │ ├── [email protected]
remote:        │ ├── [email protected]
remote:        │ ├── [email protected]
remote:        │ └── [email protected]
remote:        └─┬ [email protected]
remote:        ├── [email protected]
remote:        ├─┬ [email protected]
remote:        │ └── [email protected]
remote:        ├─┬ [email protected]
remote:        │ └─┬ [email protected]
remote:        │   └── [email protected]
remote:        └── [email protected]
remote:        
remote: 
remote: -----> Caching build
remote:        Clearing previous node cache
remote:        Saving 2 cacheDirectories (default):
remote:        - node_modules
remote:        - bower_components (nothing to cache)
remote: 
remote: -----> Build succeeded!
remote:        ├── [email protected]
remote:        ├── [email protected]
remote:        ├── [email protected]
remote:        ├── [email protected]
remote:        ├── [email protected]
remote:        ├── [email protected]
remote:        └── [email protected]
remote:        
remote: -----> Discovering process types
remote:        Procfile declares types -> web
remote: 
remote: -----> Compressing...
remote:        Done: 15.8M
remote: -----> Launching...
remote:        Released v101
remote:        https://agile-bot.herokuapp.com/ deployed to Heroku
remote: 
remote: Verifying deploy... done.
To https://git.heroku.com/agile-bot.git
   34ce6c9..f04cc5d  staging -> master

post 169 pairing events to gitter channel rather than slack

I think it would make a lot of sense if we posted 169 pairing opps to the gitter channel rather than slack channel - maybe - we don't really have any good metric for whether this is all working or not - e.g. how many of the pairing sessions get more than one person in etc. but my sense is that I don't see any interaction based on these links being posted in slack -while at least the gitter chat has people talking about pairing on 169 ...

EPIC: refactoring the tests

Possible issues with current test framework:

  • should we be using nock.disableNetConnect() to ensure we catch stray inappropriate network connections?
  • DRY out references to slack channel ID
  • mockSlackHangoutNotify has some app logic to switch on message formatting
    • could pass in text directly
    • logic pulled from app and test into separate function
    • could nock ignore some details
  • is nock the best framework?

security review

  • reset all slack tokens?
  • is there some equivalent of brakeman we can run? CC?

Allow start of hangout from slack

Would be great to be able to start a pairing session from slack via a command like /pair-hangout that would post the links to the relevant channels, and also update the website ...?

staging is thrashing

staging was dumping big slack dumps - couldn't work out why- just replicated it locally by replicating env vars from staging to local machine

send to gitter ignores room variable - should remove to avoid confusion

  send_gitter_message_avoid_repeats = (channel, message) ->
    request.get "https://api.gitter.im/v1/rooms/#{GITTER_ROOMS['saasbook/MOOC']}/chatMessages",
      auth:
        bearer: process.env.GITTER_API_TOKEN
    , (error, response, body) ->
      payload = JSON.parse body
      matches = payload.filter (m) -> m['text'] == message
      if matches.length == 0
        send_gitter_message(channel, message)
  send_gitter_message = (channel, message) ->
    request.post "https://api.gitter.im/v1/rooms/#{GITTER_ROOMS['saasbook/MOOC']}/chatMessages",
      form:
        text: message
      auth:
        bearer: process.env.GITTER_API_TOKEN
    , (error, response, body) ->
      payload = JSON.parse body
      if payload['error']
        rollbar.reportMessageWithPayloadData payload['error'],
          origin: 'send_gitter_message'
          level: 'error'
          custom:
            error: error
            response: response
            body: body

autograder hangout failed to post slack notification

saw this error in the agile-bot log

2016-03-24T16:00:09.401223+00:00 heroku[web.1]: Unidling
2016-03-24T16:00:09.401870+00:00 heroku[web.1]: State changed from down to starting
2016-03-24T16:00:11.448434+00:00 heroku[web.1]: Starting process with command `bin/hubot -a slack -n Hubot`
2016-03-24T16:00:17.956656+00:00 app[web.1]: npm WARN [email protected] No license field.
2016-03-24T16:00:22.809226+00:00 heroku[web.1]: State changed from starting to up
2016-03-24T16:00:22.687013+00:00 app[web.1]: [Thu Mar 24 2016 16:00:22 GMT+0000 (UTC)] INFO Connecting...
2016-03-24T16:00:23.574953+00:00 app[web.1]: [Thu Mar 24 2016 16:00:23 GMT+0000 (UTC)] INFO Slack client now connected
2016-03-24T16:00:23.420629+00:00 app[web.1]: [Thu Mar 24 2016 16:00:23 GMT+0000 (UTC)] INFO Logged in as agilebot of Agile Ventures, but not yet connected
2016-03-24T16:00:25.289653+00:00 app[web.1]: [Thu Mar 24 2016 16:00:25 GMT+0000 (UTC)] WARNING auth.coffee has moved from hubot-scripts to its own package. See https://github.com/hubot-scripts/hubot-auth installation instructions
2016-03-24T16:00:26.052009+00:00 heroku[router]: at=info method=POST path="/hubot/hangouts-notify" host=agile-bot.herokuapp.com request_id=512859fa-2eec-4977-a8c9-46b0180d0971 fwd="54.145.159.195" dyno=web.1 connect=3ms service=552ms status=204 bytes=132
2016-03-24T16:00:26.066104+00:00 app[web.1]: [Thu Mar 24 2016 16:00:26 GMT+0000 (UTC)] INFO Successfully authenticated to Redis
2016-03-24T16:00:26.072467+00:00 app[web.1]: [Thu Mar 24 2016 16:00:26 GMT+0000 (UTC)] INFO Successfully authenticated to Redis
2016-03-24T16:00:26.095587+00:00 app[web.1]: TypeError: Cannot read property 'match' of undefined
2016-03-24T16:00:26.095598+00:00 app[web.1]:   at find_project_for_hangout (/app/scripts/av-hangouts-notifications.coffee:70:67, <js>:64:17)
2016-03-24T16:00:26.095599+00:00 app[web.1]:   at /app/scripts/av-hangouts-notifications.coffee:150:7, <js>:152:16
2016-03-24T16:00:26.095616+00:00 app[web.1]:   at callbacks (/app/node_modules/express/lib/router/index.js:164:37)
2016-03-24T16:00:26.095617+00:00 app[web.1]:   at param (/app/node_modules/express/lib/router/index.js:138:11)
2016-03-24T16:00:26.095618+00:00 app[web.1]:   at pass (/app/node_modules/express/lib/router/index.js:145:5)
2016-03-24T16:00:26.095619+00:00 app[web.1]:   at Router._dispatch (/app/node_modules/express/lib/router/index.js:173:5)
2016-03-24T16:00:26.095619+00:00 app[web.1]:   at Object.router (/app/node_modules/express/lib/router/index.js:33:10)
2016-03-24T16:00:26.095620+00:00 app[web.1]:   at next (/app/node_modules/connect/lib/proto.js:174:15)
2016-03-24T16:00:26.095620+00:00 app[web.1]:   at Object.multipart [as handle] (/app/node_modules/connect-multiparty/index.js:42:27)
2016-03-24T16:00:26.095621+00:00 app[web.1]:   at next (/app/node_modules/connect/lib/proto.js:174:15)
2016-03-24T16:00:26.095622+00:00 app[web.1]:   at /app/node_modules/body-parser/lib/read.js:121:5
2016-03-24T16:00:26.095623+00:00 app[web.1]:   at invokeCallback (/app/node_modules/raw-body/index.js:262:16)
2016-03-24T16:00:26.095623+00:00 app[web.1]:   at done (/app/node_modules/raw-body/index.js:251:7)
2016-03-24T16:00:26.095624+00:00 app[web.1]:   at IncomingMessage.onEnd (/app/node_modules/raw-body/index.js:308:7)

seemed clear that we had an issue with two autograder keys in the hash ...

failing to post to slack

agile bot appears to not be getting through to slack. Have tried from console on production like so:

request.post('https://slack.com/api/chat.postMessage', { form:
  {
    channel: 'C02BNVCM1',
    text: 'test',
    username: 'tansaku',
    parse: 'full',
    token: process.env.SLACK_API_TOKEN
  }
}).on('response', function(response) {
  console.log(response.statusCode);
}).on('error', function(err) {
  console.log(err);
});

and we get a 200 response, but nothing in the relevant channel - in this case #pairing_notifications

set up CI to automate deploy

would be nice if pushing to git automatically pushed code to heroku - guess I could set that up heroku side ...

channel_not_found from bot

we get this from rollbar a few times a day - I think various projects don't have corresponding links to slack channels in the config file

short term fix would be updating config file - longer term fix would be having all projects register their slack channel and looking those up in order to automatically alert in the correct channel

empty youtube URL posted before correct one

I've only noticed this issue affecting me for AV standups, but we get a post of an empty youtube link, before the correct one comes along later ...

I've been deleting them, but will show screenshot on next one

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.