diff --git a/docker-entrypoint.sh b/docker-entrypoint.sh index cb33a92..132772a 100755 --- a/docker-entrypoint.sh +++ b/docker-entrypoint.sh @@ -1,53 +1 @@ -#!/bin/sh -set -e - -# Generate config.yaml from environment variables -mkdir -p /app/config - -cat > /app/config/config.yaml << 'YAMLEOF' -server: - port: 8080 - webhook_secret: "${GITEA_WEBHOOK_SECRET}" - -identity: - provider: gitea - cache_ttl: 24h - gitea: - url: "${GITEA_URL}" - token: "${GITEA_API_TOKEN}" - -notification: - provider: slack - slack: - bot_token: "${SLACK_BOT_TOKEN}" - -database: - driver: sqlite - dsn: "./data/notifications.db" - -rules: - pr: - notify_owner: true - notify_reviewers: true - notify_assignees: true - issue: - notify_assignees: true - comment: - notify_mentioned: true - notify_thread_owner: true - notify_reviewers: true -YAMLEOF - -# Seed manual user mappings from MANUAL_USER_MAPPINGS env var (JSON: {"gitea_username":"slack_id",...}) -# These bypass the Gitea API email lookup + Slack email lookup -if [ -n "$MANUAL_USER_MAPPINGS" ]; then - echo "$MANUAL_USER_MAPPINGS" | jq -r 'to_entries[] | "\(.key) \(.value)"' 2>/dev/null | \ - while read -r gitea_user slack_id; do - [ -z "$gitea_user" ] && continue - sqlite3 /app/data/notifications.db \ - "INSERT OR REPLACE INTO users(gitea_username, slack_id, slack_name, updated_at) VALUES('$gitea_user','$slack_id','$gitea_user',datetime('now'));" \ - 2>/dev/null || true - done -fi - -exec ./gitea-notification-hub -config /app/config/config.yaml +IyEvYmluL3NoCnNldCAtZQoKIyBHZW5lcmF0ZSBjb25maWcueWFtbCBmcm9tIGVudmlyb25tZW50IHZhcmlhYmxlcwpta2RpciAtcCAvYXBwL2NvbmZpZwoKY2F0ID4gL2FwcC9jb25maWcvY29uZmlnLnlhbWwgPDwgJ1lBTUxFT0YnCnNlcnZlcjoKICBwb3J0OiA4MDgwCiAgd2ViaG9va19zZWNyZXQ6ICIke0dJVEVBX1dFQkhPT0tfU0VDUkVUfSIKCmlkZW50aXR5OgogIHByb3ZpZGVyOiBnaXRlYQogIGNhY2hlX3R0bDogMjRoCiAgZ2l0ZWE6CiAgICB1cmw6ICIke0dJVEVBX1VSTH0iCiAgICB0b2tlbjogIiR7R0lURUFfQVBJX1RPS0VOfSIKCm5vdGlmaWNhdGlvbjoKICBwcm92aWRlcjogc2xhY2sKICBzbGFjazoKICAgIGJvdF90b2tlbjogIiR7U0xBQ0tfQk9UX1RPS0VOfSIKCmRhdGFiYXNlOgogIGRyaXZlcjogc3FsaXRlCiAgZHNuOiAiLi9kYXRhL25vdGlmaWNhdGlvbnMuZGIiCgpydWxlczoKICBwcjoKICAgIG5vdGlmeV9vd25lcjogdHJ1ZQogICAgbm90aWZ5X3Jldmlld2VyczogdHJ1ZQogICAgbm90aWZ5X2Fzc2lnbmVlczogdHJ1ZQogIGlzc3VlOgogICAgbm90aWZ5X2Fzc2lnbmVlczogdHJ1ZQogIGNvbW1lbnQ6CiAgICBub3RpZnlfbWVudGlvbmVkOiB0cnVlCiAgICBub3RpZnlfdGhyZWFkX293bmVyOiB0cnVlCiAgICBub3RpZnlfcmV2aWV3ZXJzOiB0cnVlCllBTUxFT0YKCiMgU2VlZCBtYW51YWwgdXNlciBtYXBwaW5ncyBmcm9tIE1BTlVBTF9VU0VSX01BUFBJTkdTIGVudiB2YXIgKEpTT046IHsiZ2l0ZWFfdXNlcm5hbWUiOiJzbGFja19pZCIsLi4ufSkKIyBUaGVzZSBieXBhc3MgdGhlIEdpdGVhIEFQSSBlbWFpbCBsb29rdXAgKyBTbGFjayBlbWFpbCBsb29rdXAKaWYgWyAtbiAiJE1BTlVBTF9VU0VSX01BUFBJTkdTIiBdOyB0aGVuCiAgICAjIEVuc3VyZSB1c2VycyB0YWJsZSBleGlzdHMgKGhhbmRsZXMgZmlyc3QtcnVuIGJlZm9yZSBhcHAgbWlncmF0aW9ucykKICAgICMgTXVzdCBtYXRjaCB0aGUgZnVsbCBzY2hlbWEgZnJvbSBtaWdyYXRpb25zLzAwMV9pbml0aWFsLnNxbAogICAgc3FsaXRlMyAvYXBwL2RhdGEvbm90aWZpY2F0aW9ucy5kYiAiCiAgICAgICAgQ1JFQVRFIFRBQkxFIElGIE5PVCBFWElTVFMgdXNlcnMgKHsKICAgICAgICAgICAgaWQgSU5URUdFUiBQUklNQVJZIEtFWSBBVVRPSU5DUkVNRU5ULAogICAgICAgICAgICBnaXRlYV91c2VybmFtZSBURVhUIFVOSVFVRSwKICAgICAgICAgICAgZ2l0ZWFfaWQgSU5URUdFUiwKICAgICAgICAgICAgZW1haWwgVEVYVCBVTklRVUUsCiAgICAgICAgICAgIGZ1bGxfbmFtZSBURVhULAogICAgICAgICAgICBzbGFja19pZCBURVhULAogICAgICAgICAgICBzbGFja19uYW1lIFRFWFQsCiAgICAgICAgICAgIGNyZWF0ZWRfYXQgREFURVRJTUUgREVGQVVMVCBDVVJSRU5UX1RJTUVTVEFNUCwKICAgICAgICAgICAgdXBkYXRlZF9hdCBEQVRFVElNRSBERUZBVUxUIENVUlJFTlRfVElNRVNUQU1QCiAgICAgICAgKTsKICAgICAgICBDUkVBVEUgSU5ERVggSUYgTk9UIEVYSVNUUyBpZHhfdXNlcnNfZW1haWwgT04gdXNlcnMoZW1haWwpOwogICAgICAgIENSRUFURSBJTkRFWCBJRiBOT1QgRVhJU1RTIGlkeF91c2Vyc19naXRlYV91c2VybmFtZSBDUkVBVEUgSU5ERVggSUYgTk9UIEVYSVNUUyBpZHhfdXNlcnNfc2xhY2tfaWQgT04gdXNlcnMoc2xhY2tfaWQpOwogICAgIiAyPi9kZXYvbnVsbCB8fCB0cnVlCgogICAgZWNobyAiJE1BTlVBTF9VU0VSX01BUFBJTkdTIiB8IGpxIC1yICd0b19lbnRyaWVzW10gfCAiXCgua2V5KSBcKC52YWx1ZSkiJyAyPi9kZXYvbnVsbCB8IFwKICAgIHdoaWxlIHJlYWQgLXIgZ2l0ZWFfdXNlciBzbGFja19pZDsgZG8KICAgICAgICBbIC16ICIkZ2l0ZWFfdXNlciIgXSAmJiBjb250aW51ZQogICAgICAgIHNxbGl0ZTMgL2FwcC9kYXRhL25vdGlmaWNhdGlvbnMuZGIgXAogICAgICAgICAgICAiSU5TRVJUIE9SIFJFUExBQ0UgSU5UTyB1c2VycyhnaXRlYV91c2VybmFtZSwgc2xhY2tfaWQsIHNsYWNrX25hbWUsIHVwZGF0ZWRfYXQpIFZBTFVFUygnJGdpdGVhX3VzZXInLCckc2xhY2tfaWQnLCckZ2l0ZWFfdXNlcicsZGF0ZXRpbWUoJ25vdycpKTsiIFwKICAgICAgICAgICAgMj4vZGV2L251bGwgfHwgdHJ1ZQogICAgZG9uZQpmaQoKZXhlYyAuL2dpdGVhLW5vdGlmaWNhdGlvbi1odWIgLWNvbmZpZyAvYXBwL2NvbmZpZy9jb25maWcueWFtbAo= \ No newline at end of file