Актуальность данного сервиса возникла из-за требования создать сервис, который позволит различным отделам, не имеющим прямого отношения к разработке, просматривать историю развития функционала проекта на основе коммитов, ограничить доступ к коду проекта. Ограничения API GitLab не озволяющие решить стандартными средствами:
- Пользователь с правами "Гость" видит историю только ветки по-умлочанию, как правило master. Неудовлетворяет, нет возможности посмотреть ветки подготовленные к ПМИ
- Пользователь с правами "Reporter" получает доступ к коду.
- Низкая гибкость фильтров
Это простой сервис, написанный на Golang, взаимодействует с API GitLab для получения списка доступных проектов и веток и через libgit2 получает историю коммитов непосредатвенно из репозитория проекта. Решает следующие задачи:
- Доступ только к списку проектов и веток
- Гибкие фильтры позволяющие получить историю коммитов
Особенность Golang приложений - программа без "магии" всегда запускается в forground, для запуска в backgrtound нужно использовать screen или nohup. Мне предпочтителен screen Пример запуска приложения в background через screen
>$ screen -L -d ./glivc
В каталоге contribs/docker/jessie приложен сценарий для создания сборочного docker контенера. Предположим, что собран контейнер glivc-build, чтобы собрать пакет для debian jessie нужно перейти в папку с проектом и выполнить команду:
>$ docker run -it --rm -v $(pwd):/go/src/glivc -w /go/src/glivc glivc-build deb
После сборки пакет размещается в папке build/debian
GET http://localhost:9999/project
GET http://localhost:9999/project/ID
Где ID числовой идентификатор проекта
GET http://localhost:9999/project/ID/branches
Где ID числовой идентификатор проекта
GET http://localhost:9999/project/ID/branches/BRANCH_NAME
Где ID числовой идентификатор проекта, BRANCH_NAME - имя ветки
GET http://localhost:9999/project/ID/branch/commits/BRANCH_NAME
Где ID - числовой идентификатор проекта, BRANCH_NAME - имя ветки
- page - номер страницы (default:1)
- limit - количество записей на странице (default:unlimit)
- author - идентификатор автора. Проверяется вхождение значение этого параметра в подписи автора к коммиту: имя, email. В качестве поиска лучше использовать email. Этот параметр можно передать несколько раз http://localhost:9999/project/ID/branch/commits/BRANCH_NAME?author=user1&author=user2
- merge - исключить/включить коммиты Merge Request (default:0)
- msg - поиск по комментарию коммита
- since - убрать коммиты предшествующие указанной дате. Формат 2006-01-02T15:04:05
- till - убрать коммиты слудующие после указанной даты. Формат 2006-01-02T15:04:05