{"id":42285089,"url":"https://github.com/touilleio/github-new-releases-notifier","last_synced_at":"2026-01-27T09:05:13.947Z","repository":{"id":53759072,"uuid":"346125007","full_name":"touilleio/github-new-releases-notifier","owner":"touilleio","description":"Notifies when a new release is published on monitored repos","archived":false,"fork":false,"pushed_at":"2023-11-15T20:45:22.000Z","size":51,"stargazers_count":2,"open_issues_count":1,"forks_count":1,"subscribers_count":2,"default_branch":"main","last_synced_at":"2024-06-21T17:51:37.570Z","etag":null,"topics":["github","notification","releases"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/touilleio.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2021-03-09T19:45:11.000Z","updated_at":"2023-09-11T00:55:33.000Z","dependencies_parsed_at":"2023-11-15T21:29:31.039Z","dependency_job_id":"84640157-3cea-4794-840f-3862d13c5902","html_url":"https://github.com/touilleio/github-new-releases-notifier","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/touilleio/github-new-releases-notifier","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/touilleio%2Fgithub-new-releases-notifier","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/touilleio%2Fgithub-new-releases-notifier/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/touilleio%2Fgithub-new-releases-notifier/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/touilleio%2Fgithub-new-releases-notifier/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/touilleio","download_url":"https://codeload.github.com/touilleio/github-new-releases-notifier/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/touilleio%2Fgithub-new-releases-notifier/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28810468,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-27T07:41:26.337Z","status":"ssl_error","status_checked_at":"2026-01-27T07:41:08.776Z","response_time":168,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["github","notification","releases"],"created_at":"2026-01-27T09:04:59.761Z","updated_at":"2026-01-27T09:05:13.942Z","avatar_url":"https://github.com/touilleio.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"Github new releases notification\n====\n\nThis tool watches configured repos on Github \nand notifies whenever a new release is published.\n\nTags can be filtered using regexp to focus only\non relevant releases.\n\nThe notification leverage [shoutrrr](https://github.com/containrrr/shoutrrr)\nlibrary and support all the channels shoutrrr supports, i.e. (non-exhaustively)\nSlack, Telegram, Discord, email, etc...\n\n# Building\n\n```\nmake ensure\nmake build\nmake package\n```\n\n# Configuration\n\nThe following example polls github every 4 hours, and filters\non tag names for Golang and Kubernetes, on title for AdoptOpenJDK,\nan no filter for Prometheus.\nNew releases are notified in a Slack channel.\n\n```\nprojects:\n  - projectUrl: \"https://github.com/golang/go\"\n    tagFilter: \"go\\\\d+(\\\\.\\\\d+){1,2}$\"\n  - projectUrl: \"https://github.com/kubernetes/kubernetes\"\n    tagFilter: \"v\\\\d+(\\\\.\\\\d+){2}$\"\n  - projectUrl: \"https://github.com/prometheus/prometheus\"\n  - projectUrl: \"https://github.com/AdoptOpenJDK/openjdk11-upstream-binaries\"\n    titleFilter: \".*GA Release.*\"\n\npollFrequency: 4h\n\nnotification:\n  uri: \"slack://xxxx/yyyy/zzz\"\n```\n\n# Docker compose example\n\nThe example is available [here](./docker-compose.yml).\n\n```\nversion: \"3\"\nservices:\n  gh-releases-notifier:\n    image: \"touilleio/github-new-releases-notifier:v1\"\n    restart: unless-stopped\n    ports:\n      - \"8080\"\n    volumes:\n      - ./gh-releases-notifier-config.yml:/gh-releases-notifier-config.yml\n      - ./gh-releases-notifier-data:/data\n    environment:\n      - CONFIG_FILE_PATH=/gh-releases-notifier-config.yml\n      - DB_STORAGE_PATH=/data/bolt.db\n      - NOTIFY_ALL_TAGS=false\n      - LOG_LEVEL=debug\n```\n\n## Environment variables\n\n| Name | Default | Description |\n|------|---------|-------------|\n| `CONFIG_FILE_PATH` | | Path inside the container of the config file as shown above. Example /gh-releases-notifier-config.yml |\n| `DB_STORAGE_PATH` | | Path of the boltDB file remembering which tag was already seen. Example: /data/bolt.db |\n| `NOTIFY_ALL_TAGS` | false | For newly added Github repository, should all the tags being notified? |\n| `LOG_LEVEL` | info | Logging verbosity level |\n| `PORT` | 8080 | Port to listen to for the HTTP endpoints |\n\n## Endpoints\n\n*/list*\n\nList all the tags already observed.\n\n```\ncurl http://localhost:8080/list | jq\n```\n\n*/delete*\n\nDelete a specific tag so that it will be (re-)notified\n\n```\ncurl -X PUT -d '{\"repo\": \"https://github.com/golang/go\",\"tag\": \"go1.16\"}' http://localhost:8080/delete\n```\n\n*/metrics*\n\nPrometheus metrics exposure\n\n*/debug/verbosity*\n\nSpecial endpoint to change logging verbosity at runtime.\n\n```\ncurl http://localhost:8080/debug/verbosity\n# returns current verbosity\ncurl -X PUT -d debug http://localhost:8080/debug/verbosity\n# change verbosity to debug\n```\n\n# Behind the scene\n\nGithub releases polling relies on [Atom]() feed provided by Github, \nfor instance [https://github.com/kubernetes/kubernetes/releases.atom](https://github.com/kubernetes/kubernetes/releases.atom).\n\nThe atom feed got parsed using [Gofeed](https://github.com/mmcdole/gofeed) library, \nand [shoutrrr](https://github.com/containrrr/shoutrrr) for the dispatching.\n\nPersistence layer is implemented using [BoltDB](https://github.com/etcd-io/bbolt).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftouilleio%2Fgithub-new-releases-notifier","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftouilleio%2Fgithub-new-releases-notifier","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftouilleio%2Fgithub-new-releases-notifier/lists"}