Skip to content
A user-experience-focused middleware for building Gitlab applications
TypeScript JavaScript
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.github
examples
src
.gitignore
.nowignore
.travis.yml
LICENSE
README.md
docs.js
favicon.ico
now.json
package.json
tsconfig.json
tslint.yml
yarn.lock

README.md

cobot

A user-experience-focused middleware for building Gitlab applications. more examples.

Support frameworks: Express / Koa.


Why cobot?

  • NO APIS

  • Friendly user experience design

  • Include .d.ts, support for automatic completion in editor.

  • Semantic actions.


How to use

  1. install robot: yarn add cobot or npm i cobot.

  2. import to your nodejs server:

// express
import cobot, { BotEvents } from 'cobot'
app.use(cobot.express())

// koa2
app.use(cobot.koa())
  1. set webhook on gitlab: Settings > integrations > url('http://{yourhost}/{any}') > Add webhook. you can fill in any api with your nodjes server, robot automatically identifies requests from webhooks.

Example

1. Print ok when webhook is triggered.

const bot = cobot.lift()
bot.on(BotEvents.MergeRequest, context => console.log('ok'))

2. Reply thanks your issue when a new issue opened.

const bot = cobot.lift()
bot.on(BotEvents.IssueOnOpen, context => {
  context.actions.reply('thanks your issue')
})

3. Use await/async in callback

const bot = cobot.lift()
bot.on(BotEvents.MergeRequest, async(context) => {
  const notes = await context.actions.findNotes()
  console.log(notes)
})

4. Don't worry about interfaces and methods


Support events

BotEvents = [
  'CommentOnIssue',
  'CommentOnCommit',
  'CommentOnSnippet',
  'CommentOnMergeRequest',
  'MergeRequest',
  'WikiCreate',
  'WikiUpdate',
  'WikiDelete',
  'WikiOnAnyAction',
  'PipelineOnRunning',
  'PipelineOnPending',
  'PipelineOnSuccess',
  'PipelineOnFailed',
  'PipelineOnCanceled',
  'PipelineOnSkipped',
  'PipelineOnAnyStatus',
  'BuildOnAnyStatus',
  'Push',
  'Tag',
  'IssueOnAnyAction',
  'IssueOnOpen',
  'IssueOnUpdate',
  'IssueOnClose',
  'IssueOnReopen',
]

LICENSE

MIT

You can’t perform that action at this time.