A Dockerized Flask web interface to manage automated GitHub scripts
2.7K
A Dockerized automation suite to manage GitHub workflows like auto-merging Dependabot PRs and sending daily PR reports ā complete with a web interface, cron integration, and notifications.
This container:
/var/log/github-scripts/Built and maintained by Geert Meersmanā
| Feature | Description |
|---|---|
| š Auto-Merge | Merges eligible Dependabot PRs using GitHub API |
| š§ PR Report Emails | Sends daily HTML summary of PRs authored/assigned/etc. |
| š„ļø Web UI | Run and view scripts via browser (port 80) |
| š„ Cron-Based Execution | Auto-runs at 2:00 and 6:00 UTC |
| š Email & Telegram Alerts | Optional notifications on success/failure |
| ā¤ļø Lightweight Container | Based on python:3.11-slim |
/scripts/github/
āāā auto_merge_dependabot.py # Script: merge dependabot PRs
āāā report_open_prs.py # Script: send PR report
āāā notify_utils.py # Utilities: Email & Telegram
āāā report_utils.py # Utilities: HTML report wrapper
āāā scripts.json # Metadata for dashboard
/scripts/container/
āāā cron_wrapper.py # Wrapper: logs script + error output
āāā describe_cron.py # Describes cron jobs at startup
āāā healthcheck.sh # Healthcheck used by Docker
/web/
āāā web_interface.py # Flask dashboard (port 80)
/cron/
āāā cronjob # All cron job entries
/docker-compose/
āāā compose.yml # Docker compose config
entrypoint.sh # Starts cron + Flask via Gunicorn
Dockerfile
VERSION
.env)# Web
WEB_PORT=80
# GitHub
GITHUB_USER=<your-github-user>
GITHUB_TOKEN=<your-token>
MERGE_METHOD=squash
# Email (optional)
SMTP_USER=<your-user>
SMTP_PWD=<your-password>
SMTP_SERVER=<smtp-server>
SMTP_PORT=587
EMAIL_FROM=<email-from>
EMAIL_TO=<email-to>
# Telegram (optional)
TELEGRAM_BOT_ID=<your-bot-id>
TELEGRAM_CHAT_ID=<your-chat-id>
# Volume path
LOG_VOLUME=<path-for-log-mount>
docker build -t github-scripts .
docker run -d \
--env-file .env \
--name github-scripts \
-p 80:80 \
github-scripts
The dashboard will be available at: http://localhostā
| Time (UTC) | Script | Log File |
|---|---|---|
| 02:00 | auto_merge_dependabot | /var/log/github-scripts/auto_merge_dependabot_cron.log |
| 06:00 | report_open_prs | /var/log/github-scripts/report_open_prs_cron.log |
Each job is executed through cron_wrapper.py, which logs stdout and stderr.
.env)If credentials are missing, notification modules gracefully skip execution.
On container start:
/env.shdescribe_cron.py80 using GunicornLogs and errors are automatically routed for cron jobs and can be inspected using:
docker exec -it github-scripts tail -n 100 /var/log/github-scripts/*.log
Docker health check runs via /healthcheck.sh, which confirms the Flask UI is up.
curl http://localhost/health
Geert Meersman ā @gmeersmanā
MIT License
Content type
Image
Digest
sha256:19112224fā¦
Size
84 MB
Last updated
2 months ago
docker pull geertmeersman/github-scripts