|
1 | | - # GITLogger |
2 | | - |
3 | | -## Установка зависимостей |
4 | | - |
5 | | -Для корректной работы приложения необходимо установить зависимости, указанные в `requirements.txt`, чтобы это сделать |
6 | | -используйте команду: |
7 | | - |
8 | | -```commandline |
9 | | -pip install -r requirements.txt |
10 | | -``` |
11 | | - |
12 | | -## Docker run |
13 | | -1. Build via: |
14 | | -``` bash |
15 | | -docker build -t checking_repo . |
16 | | -``` |
17 | | - |
18 | | -2. Run via: |
19 | | -``` bash |
20 | | -docker run -v $(pwd)/output:/app/output checking_repo [--invites] [--commites] [--etc...] -t <insert_token> -l <insert_list> -o ./output/res.csv |
21 | | -``` |
22 | | - |
23 | | - |
24 | | -## Запуск приложения: |
25 | | -1. Логирование commits |
26 | | -```commandline |
27 | | -python3 main.py [-c, --commits] (-t token (github токен вместо token) | --tokens tokens (путь до файла с токенами вместо tokens)) [-l, --list] list (list - строка пути к txt файлу со списком репозиториев) [-o, --out] out (out - название csv файла, в который будут помещены все логи) [-b, --branch] branch (branch - название конкретной ветки, откуда брать коммиты или all - логгировать все коммиты изо всех веток) |
28 | | -``` |
29 | | -2. Логирование issues |
30 | | -```commandline |
31 | | -python3 main.py [-i, --issues] (-t token (github токен вместо token) | --tokens tokens (путь до файла с токенами вместо tokens)) [-l, --list] list (list - строка пути к txt файлу со списком репозиториев) [-o, --out] out (out - название csv файла, в который будут помещены все логи) |
32 | | -``` |
33 | | -3. Логирование pull requests |
34 | | -```commandline |
35 | | -python3 main.py [-p, --pull_requests] (-t token (github токен вместо token) | --tokens tokens (путь до файла с токенами вместо tokens)) [-l, --list] list (list - строка пути к txt файлу со списком репозиториев) [-o, --out] out (out - название csv файла, в который будут помещены все логи) [--pr_comments] (если установлен - также выгружаются комментарии к PR) |
36 | | -``` |
37 | | -4. Логирование непринятых приглашений в репо |
38 | | -```commandline |
39 | | -python3 main.py --invites (-t token (github токен вместо token) | --tokens tokens (путь до файла с токенами вместо tokens)) [-l, --list] list (list - строка пути к txt файлу со списком репозиториев) [-o, --out] out (out - название csv файла, в который будут помещены все логи) |
40 | | -``` |
41 | | -5. Логирование вики-репозиториев |
42 | | -```commandline |
43 | | -python3 main.py [-w, --wikis] (-t token (github токен вместо token) | --tokens tokens (путь до файла с токенами вместо tokens)) [-l, --list] list (list - строка пути к txt файлу со списком репозиториев) --dowland_repos path_drepo (path_drepo - строка пути к директории, где сохраняются вики-репозитории) [-o, --out] out (out - название csv файла, в который будут помещены все логи) |
44 | | -``` |
45 | | -6. Логирование контрибьюторов |
46 | | -```commandline |
47 | | -python3 main.py --contributors (-t token (github токен вместо token) | --tokens tokens (путь до файла с токенами вместо tokens)) [-l, --list] list (list - строка пути к txt файлу со списком репозиториев) --dowland_repos path_drepo (path_drepo - строка пути к директории, где сохраняются вики-репозитории) [-o, --out] out (out - название csv файла, в который будут помещены все логи) |
48 | | -``` |
49 | | - |
50 | | - |
51 | | -## Получение токена для работы с Google таблицей: |
52 | | -Сначала нужно создать проект на сайте [Google Cloud](https://console.cloud.google.com/). Выбираем название проекта, жмем на кнопку "Create". |
53 | | - |
54 | | -Затем в меню слева нажимаем на API'S & Services, выбираем Enabled APIs & services. Затем на новой страничке сверху находим "+" с надписью ENABLE APIS AND SERVICES. В поиске находим sheet, нажимаем на кнопку enable, такое же можно сделать и для drive. Теперь приложение может общаться с помощью API Google sheets. |
55 | | - |
56 | | -В меню слева в API'S & Services переходим на вкладку Credentials, сверху должен быть восклицательный знак в оранжевом треугольнике, в этом сообщении нажимаем на CONFIGURE CONSENT SCREEN. Выбираем external и жмем Create. Заполняем поля со звездочками, жмем SAVE AND CONTINUE. |
57 | | - |
58 | | -Заходим опять в Credentials. Нажимаем сверху на "+" CREATE CREDENTIALS и выбираем Service account. На первом этапе создаем имя,;жмем continue, на втором даем себе права owner, жмем DONE. |
59 | | - |
60 | | -В таблице Service Accounts будет запись, нажимаем на нее. Сверху будет вкладка keys. Add key -> Create new key -> json -> create. Получаем нужный json файл. |
61 | | -## Получение table_id и sheet_id для работы с Google таблицей: |
62 | | -После создания таблицы в google sheets, получаем ссылку на эту таблицу и вводим ее в любом поисковике.В получившемся запросе после строчки "d/" будет находиться table_id, после строчки "gid=" будет находиться sheet_id |
63 | | -## Экспорт таблицы в Google Sheets: |
64 | | - |
65 | | -``` commandline |
66 | | -python3 main.py [-p, --pull_requests] (-t token (github токен вместо token) | --tokens tokens (путь до файла с токенами вместо tokens)) [-l,--list] list (list - строка пути к txt файлу со списком репозиториев) [-o, --out] out (out - название csv файла, в который будут помещены все логи) [--google_token] token.json (файл с google токеном) [--table_id] table_id (id таблицы, указанной в url пути до таблицы) [--sheet_id] sheet_id (id конкретного листа в таблице google) |
67 | | -``` |
68 | | - |
69 | | -## Файл со списком репозиториев: |
70 | | - |
71 | | -Репозитории хранятся в txt файле. Каждый репозиторий записывается в отдельную строку. |
72 | | -Должно быть указано полное имя репозитория. (Название организации/название репозитория) |
73 | | - |
74 | | -## Файл со списком токенов: |
75 | | - |
76 | | -Каждый токен записывается в отдельную строку. |
77 | | -Токены должны быть привзязаны к разным github аккаунтам. Токены, привязанные к одному аккаунту имеют общий rate_limit. |
| 1 | + # GITLogger |
| 2 | + |
| 3 | +## Установка зависимостей |
| 4 | + |
| 5 | +Для корректной работы приложения необходимо установить зависимости, указанные в `requirements.txt`, чтобы это сделать |
| 6 | +используйте команду: |
| 7 | + |
| 8 | +```commandline |
| 9 | +pip install -r requirements.txt |
| 10 | +``` |
| 11 | + |
| 12 | +## Docker run |
| 13 | +1. Build via: |
| 14 | +``` bash |
| 15 | +docker build -t checking_repo . |
| 16 | +``` |
| 17 | + |
| 18 | +2. Run via: |
| 19 | +``` bash |
| 20 | +docker run -v $(pwd)/output:/app/output checking_repo [--invites] [--commites] [--etc...] -t <insert_token> -l <insert_list> -o ./output/res.csv |
| 21 | +``` |
| 22 | + |
| 23 | + |
| 24 | +## Запуск приложения: |
| 25 | +1. Логирование commits |
| 26 | +```commandline |
| 27 | +python3 main.py [-c, --commits] (-t token (github токен вместо token) | --tokens tokens (путь до файла с токенами вместо tokens)) [-l, --list] list (list - строка пути к txt файлу со списком репозиториев) [-o, --out] out (out - название csv файла, в который будут помещены все логи) [-b, --branch] branch (branch - название конкретной ветки, откуда брать коммиты или all - логгировать все коммиты изо всех веток) |
| 28 | +``` |
| 29 | +2. Логирование issues |
| 30 | +```commandline |
| 31 | +python3 main.py [-i, --issues] (-t token (github токен вместо token) | --tokens tokens (путь до файла с токенами вместо tokens)) [-l, --list] list (list - строка пути к txt файлу со списком репозиториев) [-o, --out] out (out - название csv файла, в который будут помещены все логи) |
| 32 | +``` |
| 33 | +3. Логирование pull requests |
| 34 | +```commandline |
| 35 | +python3 main.py [-p, --pull_requests] (-t token (github токен вместо token) | --tokens tokens (путь до файла с токенами вместо tokens)) [-l, --list] list (list - строка пути к txt файлу со списком репозиториев) [-o, --out] out (out - название csv файла, в который будут помещены все логи) [--pr_comments] (если установлен - также выгружаются комментарии к PR) |
| 36 | +``` |
| 37 | +4. Логирование непринятых приглашений в репо |
| 38 | +```commandline |
| 39 | +python3 main.py --invites (-t token (github токен вместо token) | --tokens tokens (путь до файла с токенами вместо tokens)) [-l, --list] list (list - строка пути к txt файлу со списком репозиториев) [-o, --out] out (out - название csv файла, в который будут помещены все логи) |
| 40 | +``` |
| 41 | +5. Логирование вики-репозиториев |
| 42 | +```commandline |
| 43 | +python3 main.py [-w, --wikis] (-t token (github токен вместо token) | --tokens tokens (путь до файла с токенами вместо tokens)) [-l, --list] list (list - строка пути к txt файлу со списком репозиториев) --dowland_repos path_drepo (path_drepo - строка пути к директории, где сохраняются вики-репозитории) [-o, --out] out (out - название csv файла, в который будут помещены все логи) |
| 44 | +``` |
| 45 | +6. Логирование контрибьюторов |
| 46 | +```commandline |
| 47 | +python3 main.py --contributors (-t token (github токен вместо token) | --tokens tokens (путь до файла с токенами вместо tokens)) [-l, --list] list (list - строка пути к txt файлу со списком репозиториев) --dowland_repos path_drepo (path_drepo - строка пути к директории, где сохраняются вики-репозитории) [-o, --out] out (out - название csv файла, в который будут помещены все логи) |
| 48 | +``` |
| 49 | + |
| 50 | + |
| 51 | +## Получение токена для работы с Google таблицей: |
| 52 | +Сначала нужно создать проект на сайте [Google Cloud](https://console.cloud.google.com/). Выбираем название проекта, жмем на кнопку "Create". |
| 53 | + |
| 54 | +Затем в меню слева нажимаем на API'S & Services, выбираем Enabled APIs & services. Затем на новой страничке сверху находим "+" с надписью ENABLE APIS AND SERVICES. В поиске находим sheet, нажимаем на кнопку enable, такое же можно сделать и для drive. Теперь приложение может общаться с помощью API Google sheets. |
| 55 | + |
| 56 | +В меню слева в API'S & Services переходим на вкладку Credentials, сверху должен быть восклицательный знак в оранжевом треугольнике, в этом сообщении нажимаем на CONFIGURE CONSENT SCREEN. Выбираем external и жмем Create. Заполняем поля со звездочками, жмем SAVE AND CONTINUE. |
| 57 | + |
| 58 | +Заходим опять в Credentials. Нажимаем сверху на "+" CREATE CREDENTIALS и выбираем Service account. На первом этапе создаем имя,;жмем continue, на втором даем себе права owner, жмем DONE. |
| 59 | + |
| 60 | +В таблице Service Accounts будет запись, нажимаем на нее. Сверху будет вкладка keys. Add key -> Create new key -> json -> create. Получаем нужный json файл. |
| 61 | +## Получение table_id и sheet_id для работы с Google таблицей: |
| 62 | +После создания таблицы в google sheets, получаем ссылку на эту таблицу и вводим ее в любом поисковике.В получившемся запросе после строчки "d/" будет находиться table_id, после строчки "gid=" будет находиться sheet_id |
| 63 | +## Экспорт таблицы в Google Sheets: |
| 64 | + |
| 65 | +``` commandline |
| 66 | +python3 main.py [-p, --pull_requests] (-t token (github токен вместо token) | --tokens tokens (путь до файла с токенами вместо tokens)) [-l,--list] list (list - строка пути к txt файлу со списком репозиториев) [-o, --out] out (out - название csv файла, в который будут помещены все логи) [--google_token] token.json (файл с google токеном) [--table_id] table_id (id таблицы, указанной в url пути до таблицы) [--sheet_id] sheet_id (id конкретного листа в таблице google) |
| 67 | +``` |
| 68 | + |
| 69 | +## Файл со списком репозиториев: |
| 70 | + |
| 71 | +Репозитории хранятся в txt файле. Каждый репозиторий записывается в отдельную строку. |
| 72 | +Должно быть указано полное имя репозитория. (Название организации/название репозитория) |
| 73 | + |
| 74 | +## Файл со списком токенов: |
| 75 | + |
| 76 | +Каждый токен записывается в отдельную строку. |
| 77 | +Токены должны быть привзязаны к разным github аккаунтам. Токены, привязанные к одному аккаунту имеют общий rate_limit. |
| 78 | + |
| 79 | + |
| 80 | +Для проверки того, что квота расходуется нескольких токенов предалгаю такой фалидационный скрипт `check.py` |
| 81 | +```python |
| 82 | +from github import Auth, Github |
| 83 | + |
| 84 | + |
| 85 | +def show_quota(): |
| 86 | + tokens = [...] |
| 87 | + clients = [Github(auth=Auth.Token(token)) for token in tokens] |
| 88 | + print([ |
| 89 | + (client.get_user().login, client.rate_limiting) |
| 90 | + for client in clients |
| 91 | + ]) |
| 92 | +``` |
| 93 | +```console |
| 94 | +$ python3 -i check.py |
| 95 | +>>> show_quota() |
| 96 | +>>> show_quota() |
| 97 | +>>> show_quota() |
| 98 | +``` |
| 99 | + |
| 100 | +Результаты: |
| 101 | +``` |
| 102 | +>>> show_quota() |
| 103 | +[('thehighestmath', (4541, 5000)), ('qweqweqwe322', (4997, 5000))] # before launch collect data |
| 104 | +>>> show_quota() |
| 105 | +[('thehighestmath', (2869, 5000)), ('qweqweqwe322', (2479, 5000))] # after launch collect data (collected 12 repos) |
| 106 | +``` |
0 commit comments