https://github.com/release-argus/Argus
Argus is a lightweight monitor to notify of new software releases via Gotify/Slack/other messages and/or WebHooks.
https://github.com/release-argus/Argus
go golang react
Last synced: 8 days ago
JSON representation
Argus is a lightweight monitor to notify of new software releases via Gotify/Slack/other messages and/or WebHooks.
- Host: GitHub
- URL: https://github.com/release-argus/Argus
- Owner: release-argus
- License: apache-2.0
- Created: 2022-04-10T15:25:45.000Z (about 3 years ago)
- Default Branch: master
- Last Pushed: 2025-01-27T21:49:22.000Z (3 months ago)
- Last Synced: 2025-01-29T06:48:25.818Z (3 months ago)
- Topics: go, golang, react
- Language: Go
- Homepage: https://release-argus.io
- Size: 12.5 MB
- Stars: 323
- Watchers: 5
- Forks: 14
- Open Issues: 14
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
- Security: SECURITY.md
Awesome Lists containing this project
- stars - release-argus/Argus - Argus is a lightweight monitor to notify of new software releases via Gotify/Slack/other messages and/or WebHooks. (Go)
README
ArgusKeeping an eye on releases.
[](https://github.com/release-argus/Argus/blob/master/LICENSE)
[](https://goreportcard.com/report/github.com/release-argus/Argus)
[](https://go.dev/dl/)
[](https://reactjs.org/)
[](https://app.codecov.io/gh/release-argus/Argus)
[](https://github.com/release-argus/Argus/actions/workflows/build-binary.yml)
[](https://github.com/release-argus/Argus/releases)
[](https://github.com/release-argus/Argus/releases)
[](https://github.com/release-argus/Argus/releases/latest)
[](https://github.com/release-argus/Argus/actions/workflows/build-docker.yml)
[](https://hub.docker.com/r/releaseargus/argus/tags)
[](https://hub.docker.com/r/releaseargus/argus/tags)
[](https://hub.docker.com/r/releaseargus/argus)Argus will query websites at a user defined interval for new software releases and then trigger Gotify/Slack/Other notification(s) and/or WebHook(s) when one has been found.
For example, you could set it to monitor the Argus repo ([release-argus/argus](https://github.com/release-argus/Argus)). This will query the [GitHub API](https://api.github.com/repos/release-argus/argus/releases) and track the "tag_name" variable. When this variable changes from what it was on a previous query, a GitHub-style WebHook could be sent that triggers something (like AWX) to update Argus on your server.##### Table of Contents
- [Demo](#demo)
- [Command-line arguments](#command-line-arguments)
- [Building from source](#building-from-source)
- [Prerequisites](#prerequisites)
- [Go changes](#go-changes)
- [React changes](#react-changes)
- [Getting started](#config-formatting)
- [Config formatting](#getting-started)## Demo
A demo of Argus can be seen on our website [here](https://release-argus.io/demo).
## Command-line arguments
```bash
$ argus -h
Usage of /usr/local/bin/argus:
-config.check
Print the fully-parsed config.
-config.file string
Argus configuration file path. (default "config.yml")
-log.level string
ERROR, WARN, INFO, VERBOSE or DEBUG (default "INFO")
-log.timestamps
Enable timestamps in CLI output.
-test.notify string
Put the name of the Notify service to send a test message.
-test.service string
Put the name of the Service to test the version query.
-web.basic-auth.password string
Password for basic auth
-web.basic-auth.username string
Username for basic auth
-web.cert-file string
HTTPS certificate file path.
-web.listen-host string
IP address to listen on for UI, API, and telemetry. (default "0.0.0.0")
-web.listen-port string
Port to listen on for UI, API, and telemetry. (default "8080")
-web.pkey-file string
HTTPS private key file path.
-web.route-prefix string
Prefix for web endpoints (default "/")
```## Building from source
### Prerequisites
The backend of Argus is built with [Go](https://go.dev/), and the frontend with [React](https://reactjs.org/). The React frontend is built and then [embedded](https://pkg.go.dev/embed) into the Go binary so that those web files can be served.
- [Go 1.23+](https://go.dev/dl/)
- [NodeJS 22](https://nodejs.org/en/download/)### Go changes
To see the changes you've made by modifying any of the `.go` files, you must compile Argus. Run `make build` the first time to ensure the web components are available locally. Any future builds that don't need the web-ui to be rebuilt can be done with `make go-build` (faster than `make build`). (Running either of these in the root dir will produce an `argus` binary)
### React changes
To see the changes after modifying anything in `web/ui/react-app`, you must recompile both the Go backend and the React frontend. This can be done by running `make build`. (Running this in the root dir will produce the `argus` binary)
## Getting started
To get started with Argus, simply download the binary from the [releases page](https://github.com/release-argus/Argus/releases), and set up the config for that binary.
For further help, check out the [Getting Started](https://release-argus.io/docs/getting-started/) page on our website.
### Config formatting
The config can be broken down into 5 key areas. ([Further help](https://release-argus.io/docs/config/))
- [defaults](https://release-argus.io/docs/config/defaults/) - This is broken down into areas with defaults for [services](https://release-argus.io/docs/config/defaults/#service-portion), [notify](https://release-argus.io/docs/config/defaults/#notify-portion) and [webhooks](https://release-argus.io/docs/config/defaults/#webhook-portion).
- [settings](https://release-argus.io/docs/config/settings/) - Settings for the Argus server.
- [service](https://release-argus.io/docs/config/service/) - A dictionary mapping of all the services to monitor as well as what to notify when a new release is found.
- [notify](https://release-argus.io/docs/config/notify/) - A dictionary mapping of targets for Notify messages.
- [webhook](https://release-argus.io/docs/config/webhook/) - A dictionary mapping of targets for WebHooks.