Metadata-Version: 2.4
Name: argus-alm
Version: 0.15.13
Summary: Argus
Author-email: Alexey Kartashov <alexey.kartashov@scylladb.com>, Łukasz Sójka <lukasz.sojka@scylladb.com>
License-Expression: Apache-2.0
Project-URL: Homepage, https://github.com/scylladb/argus
Project-URL: Repository, https://github.com/scylladb/argus
Requires-Python: >=3.12
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: requests>=2.26.0
Requires-Dist: click>=8.1.3
Requires-Dist: lz4>=4.4.4
Provides-Extra: web-backend
Requires-Dist: PyYAML~=6.0.0; extra == "web-backend"
Requires-Dist: scylla-driver>=3.29.4; extra == "web-backend"
Requires-Dist: Flask~=3.0.0; extra == "web-backend"
Requires-Dist: Flask-WTF~=1.0.0; extra == "web-backend"
Requires-Dist: Flask-Login~=0.5.0; extra == "web-backend"
Requires-Dist: humanize~=3.13.1; extra == "web-backend"
Requires-Dist: PyJWT[crypto]>=2.10.0; extra == "web-backend"
Requires-Dist: python-magic~=0.4.24; extra == "web-backend"
Requires-Dist: uwsgi~=2.0.20; extra == "web-backend"
Requires-Dist: python-jenkins>=1.7.0; extra == "web-backend"
Requires-Dist: python-slugify~=6.1.1; extra == "web-backend"
Requires-Dist: pygithub>=2.6.1; extra == "web-backend"
Requires-Dist: boto3~=1.38.9; extra == "web-backend"
Requires-Dist: jira>=3.10.5; extra == "web-backend"
Requires-Dist: prometheus-flask-exporter>=0.23.2; extra == "web-backend"
Provides-Extra: docker-image
Requires-Dist: supervisor~=4.2.4; extra == "docker-image"
Provides-Extra: dev
Requires-Dist: pytest==8.3.5; extra == "dev"
Requires-Dist: coverage==7.8.2; extra == "dev"
Requires-Dist: docker==7.1.0; extra == "dev"
Requires-Dist: ipython~=8.36.0; extra == "dev"
Requires-Dist: pre-commit>=4.2.0; extra == "dev"
Requires-Dist: ruff~=0.11.11; extra == "dev"
Requires-Dist: autopep8>=2.3.2; extra == "dev"
Requires-Dist: requests-mock~=1.12.1; extra == "dev"
Requires-Dist: codecov~=2.1.12; extra == "dev"
Requires-Dist: pytest-cov~=6.1.1; extra == "dev"
Requires-Dist: nox~=2025.5.1; extra == "dev"
Requires-Dist: pytest-xdist~=3.7.0; extra == "dev"
Requires-Dist: pytest-subtests~=0.14.1; extra == "dev"
Requires-Dist: boto3-stubs~=1.38.9; extra == "dev"
Provides-Extra: ai
Requires-Dist: chromadb>=1.0.15; extra == "ai"
Dynamic: license-file

# Argus
[![PyPI - Version](https://img.shields.io/pypi/v/argus-alm)](https://pypi.python.org/pypi/argus-alm)

## Description

Argus is a test tracking system intended to provide observability into automated test pipelines which use long-running resources. It allows observation of a test status, its events and its allocated resources. It also allows easy comparison between particular runs of a specific test.

## Contributing

Review the [Repository Guidelines](AGENTS.md) for project structure, tooling expectations, and pull request practices before submitting changes.

## Installation notes

### Development

For development setup instructions, see [dev-setup.md](./docs/dev-setup.md).

### Prerequisites

- Python >=3.10.0 (system-wide or pyenv)

- NodeJS >=16 (with npm)

- Yarn (can be installed globally with `npm -g install yarn`)

- nginx

- uv

### From source

#### Production

Perform the following steps:

Create a user that will be used by uwsgi:

```bash
useradd -m -s /bin/bash argus
sudo -iu argus
```

(Optional) Install pyenv and create a virtualenv for this user:

```bash
pyenv install 3.10.0
pyenv virtualenv argus
pyenv activate argus
```

Clone the project into a directory somewhere where user has full write permissions

```bash
git clone https://github.com/scylladb/argus ~/app
cd ~/app
```

Install project dependencies:

```bash
uv sync --all-extras
yarn install
```

Compile frontend files from `/frontend` into `/public/dist`

```bash
yarn rollup -c
```

Create a `argus.local.yaml` configuration file (used to configure database connection) and a `argus_web.yaml` (used for webapp secrets) in your application install directory.

```bash
cp argus_web.example.yaml argus_web.yaml
cp argus.yaml argus.local.yaml
```

Open `argus.local.yaml` and add the database connection information (contact_points, user, password and keyspace name).

Open `argus_web.yaml` and change the `SECRET_KEY` value to something secure, like a sha512 digest of random bytes. Fill out GITHUB_* variables with their respective values.

Copy nginx configuration file from `docs/configs/argus.nginx.conf` to nginx virtual hosts directory:

Ubuntu:

```bash
sudo cp docs/configs/argus.nginx.conf /etc/nginx/sites-available/argus
sudo ln -s /etc/nginx/sites-enabled/argus /etc/nginx/sites-available/argus
```

RHEL/Centos/Alma/Fedora:

```bash
sudo cp docs/configs/argus.nginx.conf /etc/nginx/conf.d/argus.conf
```

Adjust the webhost settings in that file as necessary, particularly `listen` and `server_name` directives.

Copy systemd service file from `docs/config/argus.service` to `/etc/systemd/system` directory:

```bash
sudo cp docs/config/argus.service /etc/systemd/system
```

Open it and adjust the path to the `start_argus.sh` script in the `ExecStart=` directive and the user/group, then reload systemd daemon configuration and enable (and optionally start) the service.

WARNING: `start_argus.sh` assumes pyenv is installed into `~/.pyenv`

```bash
sudo systemctl daemon-reload
sudo systemctl enable --now argus.service
```
