Brian J. Tarricone df394a18e8
All checks were successful
CI / CI (push) Successful in 9m59s
Release / Publish to crates.io (push) Successful in 2m34s
Release / Publish to Docker Hub (push) Successful in 12m34s
Bump version to 0.2.5
2025-08-10 00:11:00 -07:00
2023-09-16 20:29:47 -07:00
2023-09-15 22:18:37 -07:00
2023-09-15 11:53:14 -07:00
2025-08-10 00:11:00 -07:00
2025-08-10 00:11:00 -07:00
2025-07-29 03:27:21 -07:00
2025-07-30 01:19:07 -07:00
2025-07-30 01:02:39 -07:00
2023-09-15 11:53:14 -07:00

bebot

Bebot is a Gitlab webhook handler that publishes messages to Matrix when interesting things happen in your configured repos.

Currently-supported Gitlab event types:

  • Push events
  • Tag push events
  • Issue events
  • Merge request events
  • Pipeline events (only publishes on failure for now)

It can also watch for new messages in a mailing list (assuming that mailing list is tracked by The Mail Archive), and publish notifications of new messages to Matrix.

Building

Bebot is written in Rust, and requires a Rust toolchain in order to build. I'm actually not sure what Bebot's MSRV is, but as of this writing, 1.72 worked. The usual cargo build or cargo build --release will do the trick.

You can also build and install the latest released version of Bebot by running cargo install bebot.

Setup

Bebot requires a configuration file in YAML format. See sample-config.yaml for all existing configuration options, as well as documentation on what each option does.

Gitlab Hooks

When setting up the webhook in Gitlab, use the same token from the configuration file in the webhook's "Secret token" field. You should only select "Push events", "Tag push events", "Issues events", "Merge request events", and "Pipeline events". You can leave some of these out if you don't want Bebot to publish messages for everything.

Bebot does not support serving the webhook over TLS, so you will probably want to put it behind a reverse-proxy such as nginx.

In the scripts directory is a set-webhook.py script that can set up (or update) webhooks for your repository, automatically generating a token for you. If setting up the webhook for the first time, it will output to stdout a YAML snippet that goes under the repo_configs section of the configuration file. If you run the script with no arguments, it will print out usage details.

mail-archive.com

If you want Bebot to publish a Matrix message when a new email hits one of your configured mailing lists, you need to provide a directory for Bebot to store state, so it can keep track of what emails it has already sent a Matrix message for. Otherwise, it will re-publish messages every time you restart Bebot.

Remember that if you are running Bebot in a Docker container, you'll need to mount a volume to store state so it persists across container restarts and upgrades.

Running

After you've done all that, simply run Bebot:

bebot /path/to/config-file.yaml

You can set the BEBOT_LOG environment variable to increase or decrease logging verbosity. (Try debug, info, warn error, or off.)

Docker

A Dockerfile is also provided. When running the container it builds, mount the configuration file so it appears inside the container as /bebot/config/bebot.yaml. If you are publishing from mail-archive.com, also remember to mount a state storage directory or volume wherever you've specified in the configuration file.

Release images are published to Docker Hub.

Contributing

I currently host Bebot on my private Gitea server. Since I don't want to deal with spam, I don't enable user registrations. If you'd like to submit issues and/or merge requests, please message me on Matrix with your email address and preferred username, and I'll create an account for you.

Description
A GitLab webhook bot for Matrix
Readme AGPL-3.0 797 KiB
Languages
Rust 96.2%
Python 2.9%
Dockerfile 0.9%