| ## 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 |
| ``` |