https://github.com/ananace/matrix-releasetracker
Release tracker that posts updates into Matrix rooms
https://github.com/ananace/matrix-releasetracker
Last synced: about 2 months ago
JSON representation
Release tracker that posts updates into Matrix rooms
- Host: GitHub
- URL: https://github.com/ananace/matrix-releasetracker
- Owner: ananace
- License: mit
- Created: 2018-06-17T20:22:52.000Z (almost 7 years ago)
- Default Branch: master
- Last Pushed: 2023-06-01T09:03:08.000Z (about 2 years ago)
- Last Synced: 2025-04-23T02:53:58.968Z (about 2 months ago)
- Language: Ruby
- Size: 377 KB
- Stars: 25
- Watchers: 1
- Forks: 3
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
- License: LICENSE.txt
Awesome Lists containing this project
- awesome-matrix-bots - Matrix Releasetracker (ananace)
README
# Matrix Releasetracker
For more information, questions, or just the use of the hosted version, you can visit [#releasetracker:kittenface.studio](https://matrix.to/#/#releasetracker:kittenface.studio).

## Usage
The tracked repositories can be configured in multiple ways.### Bot-command
Send the message `!github ` to the bot.
This would track all repositories starred by the defined user.### State event
A more fine-grained approach is to save the tracked entities in the room state of a room you share with the bot.
Send a state event (e.g. via Element with `/devtools`) containing all the things you want to track. These can be easily updated with another state event.Example state event for advanced tracking;
```jsonc
{
"type": "dev.ananace.ReleaseTracker",
"sender": "@ace:kittenface.studio",
"content": {
"type": "m.text", // m.notice by default
"tracking": [
// GitHub repositories;
"github:r/vector-im/element-web",
"github:r/matrix-org/synapse",// GitHub group;
"github:g/netbox-community",// GitHub user (all starred repositories)
"github:u/ananace",// GitLab(.com) repository;
"gitlab:r/mb-saces/synatainer",
// GitLab(.com) group;
"gitlab:g/mb-saces",
// GitLab(.com) user stars; (with a token for if the tracker doesn't have one configured)
"gitlab:access_token@u/mb-saces",// GitLab (self-hosted) repository;
"gitlab://dev.funkwhale.audio/r/funkwhale/funkwhale",
// GitLab (self-hosted) user stars; (with a token for if the tracker doesn't have one configured)
"gitlab://[email protected]/u/user",
"gitlab://:[email protected]/u/user",// Gitea repository;
"gitea://git.example.com/r/user/repository",
// Gitea user stars; (with a token for if the tracker doesn't have one configured)
"gitea://[email protected]/u/user",// Bare git repo;
"git+https://user:[email protected]/private/repo",
"git+https://git.zx2c4.com/wireguard-tools",
"git+ssh://[email protected]/wireguard-tools",
"git://git.zx2c4.com/wireguard-tools"
]
},
"state_key": "",
"origin_server_ts": 1657845040362,
"event_id": "$Of010lcT1D19peJ9pZFAN4vV6dYwlAXtVYg_0rGSESs",
"room_id": "!YcpuFlnupDnkbqHuKU:example.com"
}
```### Installation
The `bin/tracker` binary will track and post updates on new GitHub releases, it requires a `releasetracker.yml` configuration file that it can read and write to.
Example `releasetracker.yml` config-file:
```yaml
---
:backends:
- :access_token: 0000000000000000000000000000000000000000 # GitHub access token - needs the public_repo scope
# also acceptable are a :login, :password combination - or :client_id, :client_secret for OAuth - without GraphQL support
# It's also possible to skip the authentication entirely, to run with heavily reduced limits and only REST API functionality
:type: github
- :type: gitlab
- :type: gitea
- :type: git
:client:
:hs_url: https://matrix.org
:access_token:
:database:
# Will default to sqlite stored in database.db in the working-directory
:connection_string: sqlite://database.db
```A more fully featured configuration example can be seen in [releasetracker.yml.example](releasetracker.yml.example)
#### Systemd
Example systemd unit:```ini
# ~/.config/systemd/user/matrix-releasetracker.service
[Unit]
Description=Release tracker for Matrix[Service]
Type=simple
WorkingDirectory=/opt/matrix-releasetracker
ExecStart=/bin/bash -lc 'bundle exec bin/tracker'
Restart=on-failure[Install]
WantedBy=default.target
```#### Docker-compose
You can use the image from [Dockerhub](https://hub.docker.com/r/ananace/matrix-releasetracker).
Example `docker-compose.yml`
```yaml
version: "3.7"
services:
matrix-release-tracker:
restart: "unless-stopped"
image: "ananace/matrix-releasetracker:latest"
volumes:
- "./releasetracker.yml:/app/releasetracker.yml"
```## TODO
- Write a whole bunch of tests
- Expose configuration for allowed release types (lightweight tag, signed tag, pre-release, full release, etc)
- Handle multiple releases in a short period (between two ticks) more gracefully
- Implement bot-like bang commands to act on the configuration
- Handle PGP signatures better, don't just print the signature## Contributing
Bug reports and pull requests are welcome on GitHub at https://github.com/ananace/matrix-releasetracker
## License
The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).