blob: 19eb26a8ab757f000008e3947fbf083be594c479 [file] [log] [blame] [view]
## Gerrit Bot
### Getting Username and Password
Gerrit REST API uses the account username and password for the authentication
purpose. They are necessary to make a request.
The following are steps to obtain the username and password from `.gitcookies`
files,
* Follow this link
[https://gem5-review.googlesource.com/new-password](https://gem5-review.googlesource.com/new-password)
and copy the authenticating script to a new file.
* After that, run the `extract_gitcookies.py` to extract the username and
password from the authenticating script.
For example, the following command extracts the username and password from
`gerrit_auth_script` and writes them to `.data/auth`,
```sh
python3 extract_gitcookies.py gerrit_auth_script .data/auth
```
The `.data/auth` will have two lines: the first line contains the username and
the second line is the corresponding password.
**Notes:**
* The above link, [https://gem5-review.googlesource.com/new-password](https://gem5-review.googlesource.com/new-password),
generates a new pair of username and password per visit.
* The `extract_gitcookies.py` file is also able to read from `.gitcookies`
file. For example, `python3 extract_gitcookies.py ~/.gitcookies output`
will write all pairs of username and password in two lines per pair to
`output`.
* The gerrit-bot only reads the pair of username and password appearing
in the first and the second line in the `.data/auth` file.
### Gerrit Bot
The structure of the Gerrit bot is as follows:
* The `GerritBotConfig` class should contain all constants that are
configurable prior to running.
### Gerrit API
* Query options: [https://gerrit-review.googlesource.com/Documentation/rest-api-changes.html#query-options](https://gerrit-review.googlesource.com/Documentation/rest-api-changes.html#query-options)
### Deployment
The Gerrit bot is intended to be run as a cron job.
Each run of the Gerrit bot will query new changes made to the Gerrit server
within a certain period of time, perform actions on each change, and exit.
The following are steps to deploy the Gerrit bot:
* Create `.data` folder in the same folder as `bot.py`,
```sh
mkdir .data
```
* Follow the steps [here](#getting-username-and-password) to get the Gerrit
bot account username and password.
* To run the Gerrit bot once,
```sh
./bot.py
```
* To edit the cron table,
```sh
crontab -e
```
To run the Gerrit bot every 30 minutes, add the following line to the
crontable,
```python
*/1 * * * * cd /path/to/gerrit/bot/directory && ./bot.py
```