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 :)