Skip to content

Commit 63e4d69

Browse files
update readme and change workflows (#109)
1 parent 95d050f commit 63e4d69

File tree

4 files changed

+136
-100
lines changed

4 files changed

+136
-100
lines changed

.github/workflows/large-tests.yml

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
name: Large Tests
2+
3+
on:
4+
push:
5+
branches: [ "master" ]
6+
7+
jobs:
8+
token-usage-unit_test:
9+
runs-on: ubuntu-latest
10+
steps:
11+
- uses: actions/checkout@v4
12+
13+
- name: Cache pip
14+
uses: actions/cache@v3
15+
with:
16+
path: ~/.cache/pip
17+
key: ${{ runner.os }}-pip-${{ hashFiles('requirements.txt') }}
18+
restore-keys: |
19+
${{ runner.os }}-pip-
20+
21+
- name: Install dependencies
22+
run: pip install -r requirements.txt
23+
24+
- name: Run test
25+
run: python3 test_token_usage.py --tt1 ${{ secrets.TEST_TOKEN_GITHUB }} --tt2 ${{ secrets.SECOND_TEST_TOKEN_GITHUB }} --repo moevm/github_repo_commitment_calc --out out.csv
Lines changed: 2 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
name: Tests
1+
name: Smoke Tests
22

33
on:
44
push:
@@ -7,7 +7,6 @@ on:
77
branches: [ "master" ]
88

99
jobs:
10-
1110
smoke-test:
1211
strategy:
1312
matrix:
@@ -36,7 +35,7 @@ jobs:
3635
run: pip install -r requirements.txt
3736

3837
- name: Create list.txt
39-
run: echo "moevm/github_repo_commitment_calc" > list.txt
38+
run: echo "thehighestmath/SummerPractice" > list.txt
4039

4140
- name: Run test
4241
run: |
@@ -51,23 +50,3 @@ jobs:
5150

5251
- name: Show out.csv
5352
run: cat out.csv
54-
55-
token-usage-unit_test:
56-
57-
runs-on: ubuntu-latest
58-
steps:
59-
- uses: actions/checkout@v4
60-
61-
- name: Cache pip
62-
uses: actions/cache@v3
63-
with:
64-
path: ~/.cache/pip
65-
key: ${{ runner.os }}-pip-${{ hashFiles('requirements.txt') }}
66-
restore-keys: |
67-
${{ runner.os }}-pip-
68-
69-
- name: Install dependencies
70-
run: pip install -r requirements.txt
71-
72-
- name: Run test
73-
run: python3 test_token_usage.py --tt1 ${{ secrets.TEST_TOKEN_GITHUB }} --tt2 ${{ secrets.SECOND_TEST_TOKEN_GITHUB }} --repo moevm/github_repo_commitment_calc --out out.csv

.gitignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,4 @@
11
__pycache__
2+
list.txt
3+
tokens.txt
4+
out.csv

README.md

Lines changed: 106 additions & 77 deletions
Original file line numberDiff line numberDiff line change
@@ -1,77 +1,106 @@
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

Comments
 (0)