{"id":19219299,"url":"https://github.com/lmms/bot","last_synced_at":"2026-05-07T01:36:37.764Z","repository":{"id":40455044,"uuid":"212611248","full_name":"LMMS/bot","owner":"LMMS","description":"Webhook which grabs binaries from CI, links them to PRs","archived":false,"fork":false,"pushed_at":"2022-05-07T10:42:19.000Z","size":66,"stargazers_count":2,"open_issues_count":5,"forks_count":0,"subscribers_count":22,"default_branch":"master","last_synced_at":"2025-02-23T09:15:56.139Z","etag":null,"topics":["appveyor","automation","circleci","flask","github","webhook"],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/LMMS.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2019-10-03T15:16:35.000Z","updated_at":"2024-10-01T18:36:58.000Z","dependencies_parsed_at":"2022-08-09T21:00:48.049Z","dependency_job_id":null,"html_url":"https://github.com/LMMS/bot","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/LMMS/bot","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LMMS%2Fbot","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LMMS%2Fbot/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LMMS%2Fbot/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LMMS%2Fbot/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/LMMS","download_url":"https://codeload.github.com/LMMS/bot/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LMMS%2Fbot/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":259912684,"owners_count":22931103,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["appveyor","automation","circleci","flask","github","webhook"],"created_at":"2024-11-09T14:30:21.157Z","updated_at":"2026-05-07T01:36:32.744Z","avatar_url":"https://github.com/LMMS.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# LmmsBot\nGithub webhook that posts comments to pull requests, providing artifacts retrieved from CI services.   \n\n# Quickstart\nThis webhook was designed to run on the google cloud platform AppEngine's standard environment. \nHowever, it should be very easy to set it up on every machine with python and flask. \n\nTo get started, set the `GITHUB_USERNAME` and `GITHUB_TOKEN` using environment variables or using an `.env` file:\n```.env\nGITHUB_USERNAME = \"LmmsBot\"\nGITHUB_TOKEN = \"\u003cretracted\u003e\"\n```\n\nThen, either upload deploy it to GCP or manually install the `requirements.txt` file and run the `main.py` flask module.\n\n## Github configuration\nAdd a webhook, check only `statuses` event, and change `payload type` for `json`.\n\n# Documentation \n## How to add additional artifact titles\nCurrently, we use file names in order to detect relevant artifacts and display the right title.\nTo add additional artifacts, simply edit the `settings.py` file as following: \n```python\nplatform = Settings.Platform(\n    name=\"Windows\",\n    extension_to_title={\n        \"exe\": \"Windows Executable\"\n    }\n)\n```\nand add this platform:\n```python\nsettings.platforms.append(platform)\n```\n## Duplicate comments\nSince this script does not use any atomic storage it is no possible to detect if while preparing a new comment, another instance already posted a new comment. Resulting two comments posted, instead of one (the second instance would have to edit the first comment, that was posted after it has checked for comment). Also, CircleCI sends two updates instead of one. \n\nCurrently, we solved that by limiting the amount of concurrent requests to 1 (See `app.yaml`). \n\n## Supported CI Services\n- CircleCI (Without github checks)\n- AppVeyor\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flmms%2Fbot","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flmms%2Fbot","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flmms%2Fbot/lists"}