README.md 4.05 KB
Newer Older
Pietro Albini's avatar
Pietro Albini committed
1 2 3 4 5 6 7 8
# Managetests

Managetests è un semplice tool realizzato dal Gruppo Web di Ubuntu-it per la
gestione dei branch di test per il suo sito. Esso è integrato con GitLab, e
permette una sincronizzazione dei branch con i merge request presenti sul
repository. È anche altamente specifico per la nostra configurazione, quindi
potrebbe non funzionare in contesti differenti.

9
Managetests è rilasciato sotto licenza GNU-AGPL v3+.
Pietro Albini's avatar
Pietro Albini committed
10

11 12 13 14 15
## Dipendenze necessarie

È possibile installarle con il seguente comando:

```
16
$ sudo apt install python3 python3-click python3-werkzeug python3-flask python3-requests  git
17 18
```

Pietro Albini's avatar
Pietro Albini committed
19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
## Inizializzazione di managetests

Managetests tiene tutti i file necessari al suo funzionamento in una directory
specifica. È possibile crearla con questo comando:

```
$ managetests -r path/to/directory init http://code.ubuntu-it.org/ubuntu-it-web/www
```

È necessario specificare il percorso della directory e l'indirizzo del
repository git. Una volta inizializzata la directory, bisogna modificare il
file di configurazione `config.json` presente in essa, in questo modo:

```json
{
34 35 36
    "base-url": "http://wwwtest.ubuntu-it.org",
    "update-commit-status": true,
    "git-url": "http://code.ubuntu-it.org/ubuntu-it-web/www.git",
Pietro Albini's avatar
Pietro Albini committed
37 38
    "gitlab-token": "YOUR-API-KEY",
    "gitlab-url": "http://code.ubuntu-it.org",
39
    "gitlab-project": "ubuntu-it-web/www",
40
    "hooks-token": "RANDOM-TOKEN",
Pietro Albini's avatar
Pietro Albini committed
41 42 43 44 45 46 47 48
    "keep-branches": [
        "master"
    ]
}
```

I parametri in esso sono i seguenti:

49 50 51 52 53
* `base-url` è l'URL dell'istanza, utilizzato nelle iterazioni con GitLab
* `update-commit-status` indica se l'istanza deve aggiornare il commit status
  su Gitlab (di default su `false` per impedire update accidentali in caso di
  test)
* `git-url` è l'indirizzo del repository git da clonare
Pietro Albini's avatar
Pietro Albini committed
54 55 56
* `gitlab-token` è l'API key di GitLab del tuo account
* `gitlab-url` è l'URL dell'istanza GitLab
* `gitlab-project` è l'ID del progetto su GitLab
57
* `hooks-token` è il token necessario per inviare hook a managetests
Pietro Albini's avatar
Pietro Albini committed
58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73
* `keep-branches` è una lista di branch da caricare anche se non sono in una
  merge request (per esempio `master`)

## Esecuzione di managetests

Una volta configurato inizializzato e configurato managetests è possibile
eseguirlo, con questo comando:

```
$ managetests -r path/to/directory run
```

La prima volta che il comando viene eseguito sarà necessario aspettare che ogni
branch richiesto venga scaricato e preparato, e dopo ciò ogni branch verrà
eseguito.

74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96
## Integrazione con GitLab

Per poter integrare Managetests con GitLab, è necessario disporre di un account
con accesso al progetto, che verrà usato come bot per inviare commenti nei
merge request. Inoltre, è necessario configurare un webhook.

Per i commenti, è necessario prendere il secret token dalle impostazioni
dell'account che si vuole usare, ed inserirlo nel file `config.json` nella root
di managetests, alla chiave `gitlab-token`.

Per i webhook, è necessario prendere dal file `config.json` nella root di
managetests il valore della chiave `hooks-token` (casuale). Dopo aver fatto ciò
si può aggiungere il seguente webhook al progetto gitlab:

```
http://managetests.example.com/+hook/<hooks-token>
```

È necessario sostituire il dominio con il dominio della propria istanza, e
`<hooks-token>` con il token ottenuto prima. Il webhook è necessario che sia
configurato per ricevere i push e le merge request, tutto il resto verrà
ignorato.

Pietro Albini's avatar
Pietro Albini committed
97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127
## Generazione di una build

Per creare i pacchetti di managetests, è necessario aver installato
[pyinvoke](http://www.pyinvoke.org), ed eseguire questo comando:

```
$ invoke build
```

La prima esecuzione richiede una connessione ad internet per scaricare le
dipendenze richieste. Per rimuovere tutti i file generati:

```
$ invoke clean
```

## Hacking

Per contribuire a managetests è consigliata la creazione di un virtualenv per
lo sviluppo. È possibile crearlo con il seguente comando:

```
$ invoke devel
```

Una volta creato il virtualenv è disponibile in ``build/envs/devel``. Per
attivarlo bisogna ad ogni sessione di terminale eseguire:

```
$ source build/envs/devel/bin/activate
```