An open API service indexing awesome lists of open source software.

https://github.com/yunohost/yunorunner

Job manager/scheduler for YunoHost apps CI tests
https://github.com/yunohost/yunorunner

ci yunohost

Last synced: 5 months ago
JSON representation

Job manager/scheduler for YunoHost apps CI tests

Awesome Lists containing this project

README

          

# Installation

It's recommended to use : https://github.com/YunoHost-Apps/yunorunner_ynh

But you can also install stuff manually .... :

```bash
cd /var/www/
git clone https://github.com/YunoHost/yunorunner
cd yunorunner
python3 -m venv venv
venv/bin/pip install -r requirements.txt
```

In either cases, you probably want to run the `finish_install.sh` script in `maintenance/`

The configuration happens in `config.py` and typically looks like :

```
BASE_URL = "https://ci-apps-foobar.yunohost.org/ci"
PORT = 34567
PATH_TO_ANALYZER = "/var/www/yunorunner/analyze_yunohost_app.sh"
MONITOR_APPS_LIST = True
MONITOR_GIT = True
MONITOR_ONLY_GOOD_QUALITY_APPS = True
MONTHLY_JOBS = True
WORKER_COUNT = 1
YNH_BRANCH = "unstable"
DIST = "bullseye"
STORAGE_PATH = "/data/yunorunner_data"
```

### Cli tool

The cli tool is called "ciclic" because my (Bram ;)) humour is legendary.

Basic tool signature:

```
$ ve3/bin/python ciclic
usage: ciclic [-h] {add,list,delete,stop,restart} ...
```

This tool works by doing a http request to the CI instance of you choice, by
default the domain is "http://localhost:4242", you cand modify this for EVERY
command by add "-d https://some.other.domain.com/path/".

##### Usage

Adding a new job:

```
$ ve3/bin/python ciclic add "some_app (Official)" "https://github.com/yunohost-apps/some_app_ynh" -d "https://ci-stable.yunohost.org/ci/"
```

Listing jobs:

```
$ ve3/bin/python ciclic list
31 - mumbleserver_ynh 15 [done]
30 - mumbleserver_ynh 14 [done]
29 - mumbleserver_ynh 13 [done]
28 - mumbleserver_ynh 12 [done]
27 - mumbleserver_ynh 11 [done]
26 - mumbleserver_ynh 10 [done]
25 - mumbleserver_ynh 9 [done]
24 - mumbleserver_ynh 8 [done]
...
```

**IMPORTANT**: the first digit is the ID of the job, it will be used in ALL the other commands.

Deleting a job:

```
$ # $job_id is an id from "ciclic list" or the one in the URL of a job
$ ve3/bin/python ciclic delete $job_id
```

Stop a job:

```
$ # $job_id is an id from "ciclic list" or the one in the URL of a job
$ ve3/bin/python ciclic stop $job_id
```

Restart a job:

```
$ # $job_id is an id from "ciclic list" or the one in the URL of a job
$ ve3/bin/python ciclic restart $job_id
```

Note that delete/restart will stop the job first to free the worker.

You will see a resulting log on the server for each action.

List apps:

```
$ ve3/bin/python ciclic app-list
```

# Deployment

You need to put this program behind a nginx mod proxy AND add the magical lines
to allow websocket (it's not allowed for whatever reason) and that all the way
through all the proxies (if you deploy on bearnaise's incus or something
similar).

# Licence

AGPL v3+

Copyright YunoHost 2018 (you can find the authors in the commits)