| Поле | Расшифровка |
|---|---|
| id | id пользователя в Gitlab |
| name | имя пользователя |
| username | псевдоним пользователя |
| state | статус пользователя |
| emails | массив с почтами пользователя |
| projects | массив с проектами |
| commits | массив с коммитами, лежит в элементах массива projects |
Каждый коммит содержит информацию о количестве вставок, удалений и изменений от каждого пользователя. Это нужно для генерации таблицы в кабинете с вкладом каждого пользователя в проекте.
| Поле | Расшифровка |
|---|---|
| id | id проекта (репозитория) |
| name | имя проекта |
| path | номер проекта |
| description | описание проекта |
| projects | массив проектов в группe |
| members | массив с участниками проекта |
Каждый проект в группе содержит поле statistics. В нем хранится статистика проекта, в котором самое важное поле - количество коммитов, по нему строится статистика в кабинете.
Для сборки проекта прописать в командной строке:
go mod tidy
go mod vendor
make singlebin-gitlab
После этого в папке bin появится исполняемый файл с адаптером. Для сборки генератора таблицы с прокетами прописать
make singlebin-commits
Подключение к серверу:
ssh vm-admin@94.79.54.21 -p 2024
Запуск адаптера Gitlab:
cd footprint/adapters/git
./footprint-git
Конфиг адаптера хранится в этой же директории в файле config.json. Его примерное содержимое:
{
"mongo": {
"url": "",
"db": "",
"user_collection": "",
"group_collection": ""
},
"git": {
"scheme": "https",
"host": "git.miem.hse.ru",
"base_api_uri": "/api/v4",
"token": ""
},
"common": {
"conn_timeout": 40,
"max_retries": 20,
"max_conns_per_host": 5,
"request_pause": 0,
"log_folder": "./logs",
"log_in_std_in": false
}
}
Логи можно найти в папке, указанной в поле log_folder.
Для запуска генератора таблиц (выполнять в той же директории):
cd commits/
./commits
Его конфиг аналогичный, хранится в config/config.json на уровне исполяемого файла. Новые таблицы всегда складываются в папку tables.
Важно, чтобы все папки перед началом работы исполяемых файлов все папки были созданы!
Скрипт Sheets.py экспортирует в GoogleDocs таблицу projects-{date_table}.csv. Путь до файла - /footprint/adapters/git/commits/Sheets.py.
Если вы скачали коллекцию с сервера и загрузили в локальную базу данных:
db = connect("name_of_db")
class User(Document):
name = StringField()
array = List()
number = IntField()
Поля класса должны в точности повторять порядок и тип полей в коллекции, название класса выбирается по названию коллекции следующим образом коллекция => Класс. Пример:
lms_user => LmsUser, teams_user => TeamsUser
Чтобы пройтись по всем пользователям можно использовать:
for user in User.objects():
print(user.field_name)
Создание списка с помощью фильтра:
miem_users = User.objects(department='miem')
Полную доккументацию можно найти по ссылке.
Для запуска на сервере необходимо выполнить команду
python3 sheets.py
В файле creds.json хранятся данные сервисного аккаунта, которые генирируются. Путь до файла /footprint/adapters/git/commits/config/creds.json. Данные сервисного аккаунта:
{
"type": "",
"project_id": "",
"private_key_id": "",
"private_key": "",
"client_email": "",
"client_id": "",
"auth_uri": "",
"token_uri": "",
"auth_provider_x509_cert_url": "",
"client_x509_cert_url": ""
}
Чтобы получить все данные коллекции:
collection.find({})