I have been working in a library that allows you to receive Gitlab web hook events as notifications.
How to install?
npm install express npm install gitlabnotifications
Basic configuration
If you need to send notifications only one platform at time, just delete its configuration lines
const { GitlabNotifications } = require('gitlabnotifications'); const express = require('express'); const app = express() app.use(express.json()); app.listen(3000, function () { }); const sendNotificationsTo = { configuration: [ { telegram: { token: 'your_telegram_token', chat_id: 'your_chat_id', }, }, { slack: { workspace_id: 'your_workspace_id', channel_id: 'your_slack_channel_id', token: 'your_slack_app_token', }, }, ], }; const myMiddleware = (req, res) => { /*Your custom middleware has to return true if everything it's okay and return false if isn't */ return true; } const gitlabNotificationsService = new GitlabNotifications( ['/gitlab-webhook'], //Webhooks urls directions previously configured in Gitlab false, //Set in true if you want to send custom notification messages null, // Custom messages (if needed) sendNotificationsTo, app, //Your express instance myMiddleware ); gitlabNotificationsService.connection()
How to use custom notifications messages?
For more information about to get events values you can visit the official gitlab web hooks documentation
https://docs.gitlab.com/ee/user/project/integrations/webhook_events.html
You can declare an object that contains all custom message handlers like this.
const customMessages = { pushMessage: (eventData) => `Custom push message: ${eventData.user_username} pushed to ${eventData.project.name}`, issueMessage: (eventData) => `Custom issue message: ${eventData.user.username} created an issue in ${eventData.project.name}`, commentMessage: (eventData) => `Custom comment message: ${eventData.user.username} commented on something`, tagMessage: (eventData) => `Custom tag message: A new tag ${eventData.ref} was created in ${eventData.project.name}`, mergeRequestMessage: (eventData) => `Custom merge request message: ${eventData.user.username} created a merge request in ${eventData.project.name}`, issueTaskMessage: (eventData) => `Custom task message: ${eventData.user.username} created a merge request in ${eventData.project.name}`, }; const gitlabNotificationsService = new GitlabNotifications( ['/gitlab-webhook'], true, //Set in true if you want to send custom notification messages customMessages, // Custom messages (if needed) sendNotificationsTo, app, //Your express instance myMiddleware ); gitlabNotificationsService.connection()
Top comments (2)
Hey ! Thanks for sharing.
Could you explain what it does exactly, as an introduction, and how it is different than mails and notifications of mail app ?
Hey! Sorry for the delay.
This package allows you to handle different webhooks as notifications.
I wrote it because, in my previous work, we needed to know when someone creates and merges requests in our GitLab server instance, but we needed to receive these notifications on Slack or Telegram, so I decided to integrate webhooks actions with those platforms.
Then I added more functionalities like comments notifications, tag creation notifications, issues, and push notifications.
I will update it with some changes probably this month :)