For more information, questions, or just the use of the hosted version, you can visit #releasetracker:kittenface.studio.
The tracked repositories can be configured in multiple ways.
Send the message !github <username>
to the bot.
This would track all repositories starred by the defined user.
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;
{
"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://<user>:[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"
}
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:
---
: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: <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
Example systemd unit:
# ~/.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
You can use the image from Dockerhub.
Example docker-compose.yml
version: "3.7"
services:
matrix-release-tracker:
restart: "unless-stopped"
image: "ananace/matrix-releasetracker:latest"
volumes:
- "./releasetracker.yml:/app/releasetracker.yml"
- 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
Bug reports and pull requests are welcome on GitHub at https://github.com/ananace/matrix-releasetracker
The gem is available as open source under the terms of the MIT License.