Mergentle Reminder is a Slack bot that periodically checks configured GitLab projects and groups for opened merge requests, then sends a summary list of merge requests to review to the configured Slack channel.
The name "Mergentle Reminder" is a playful combination of the words "merge" and "gentle." The name emphasizes the purpose of the project, which is to gently remind the team to review open merge requests.
- Sends a summary list of merge requests to a Slack channel.
- Supports GitLab projects and groups.
- Filters out draft merge requests.
- Retrieves approvers and additional merge request information.
- Configurable with a YAML file or environment variables.
You can configure the Mergentle Reminder bot using a config.yaml
file or by setting the environment variables.
Example config can be found in config.yaml.example
.
In addition to the config.yaml file, the following environment variables can be set:
GITLAB_URL
: The URL of your GitLab instance (defaults to https://gitlab.com).GITLAB_TOKEN
: Your GitLab personal access token.SLACK_WEBHOOK_URL
: The webhook URL for the Slack channel where the bot will send messages.PROJECTS
: A comma-separated list of GitLab project IDs to check for merge requests.GROUPS
: A comma-separated list of GitLab group IDs to check for merge requests.CONFIG_PATH
(optional): The path to the config.yaml configuration file. Defaults to config.yaml.
Environment variables take precedence over the config.yaml file.
Build the application:
go build
Run the application:
GITLAB_TOKEN=<your_gitlab_token> SLACK_WEBHOOK_URL=<your_slack_webhook_url> ./mergentle-reminder
Build the Docker image:
docker build -t your-dockerhub-username/mergentle-reminder:latest .
Run the Docker container:
docker run -e GITLAB_TOKEN=<your_gitlab_token> -e SLACK_WEBHOOK_URL=<your_slack_webhook_url> -v $(pwd)/config.yaml:/config/config.yaml your-dockerhub-username/mergentle-reminder:latest
Create a configmap for the config.yaml file:
kubectl -n mergentle-reminder create configmap mergentle-reminder-config --from-file=config.yaml
Create a secret for the GitLab API token and Slack webhook URL:
kubectl -n mergentle-reminder create secret generic mergentle-reminder-secrets --from-literal=gitlab-token=<your_gitlab_token> --from-literal=slack-webhook-url=<your_slack_webhook_url>
Edit schedule
in k8s/cronjob.yaml
to specify the desired schedule. Set to run every hour by default.
See the CronJob documentation for more information.
Apply the Kubernetes manifests:
kubectl apply -f k8s/
The application will now run as a CronJob in your Kubernetes cluster, periodically sending reminders to the configured Slack channel.
It is possible to create a new job manually for testing purposes:
kubectl -n mergentle-reminder create job --from=cronjob/mergentle-reminder test-job
kubectl -n mergentle-reminder delete jobs/test-job