Gitlab Спустя год в продакшене Андрей Куманяев Gitlab MVP Undev 1-й коммит – 11.2012 Запуск в продакшен – 05.2013 Вопросы? @zzetorg #devconf #gitlab Что ждем? • • • • • • • Создание репозиториев и управление ими Предоставление доступа к репозиториям (clone/push/manage) Просмотр кода через web интерфейс Быстро и легко вносить правки в код Понятная и удобная история проекта Diff Git blame Gitlab • • • • • • • • Repository management Code view / edit Merge / Pull Requests Code review Issue tracker Wiki’s Snippets etc… Project Group Team Permissions • • • • • • Non authorized user Guest Reporter Developer Master Owner Permissions Защита от дурака X: Кто перезаписал репозиторий (git push --force origin develop)? Y: Я X: Зачем? Там был мой код. Y: Я вмержил свою фичу, запушил код. Y: git ругнулся, что нужно забрать код из репозитория. Y: Я попытался, были конфликты, не было время их решать. Y: И я пушнул с ‘-f’ Fork && Merge Request Fork && Merge Request • Это – контентная область слайда. • Желательно создавать новые слайды, дублируя (copy/paste) этот слайд в качестве образца, чтобы сохранить общую стилистику презентации. Также рекомендуется для набора текста использовать шрифт Trebuchet. Merge Request && Code Review Snippets • Это – контентная область слайда. • Желательно создавать новые слайды, дублируя (copy/paste) этот слайд в качестве образца, чтобы сохранить общую стилистику презентации. Также рекомендуется для набора текста использовать шрифт Trebuchet. Issues • Это – контентная область слайда. • Желательно создавать новые слайды, дублируя (copy/paste) этот слайд в качестве образца, чтобы сохранить общую стилистику презентации. Также рекомендуется для набора текста использовать шрифт Trebuchet. Issues • • • • Gitlab Redmine JIRA etc… Search • • • • • Projects Groups … %LIKE% ... Merge Requests Issues Code in project (single) git grep … Search • Это – контентная область слайда. • Желательно создавать новые слайды, дублируя (copy/paste) этот слайд в качестве образца, чтобы сохранить общую стилистику презентации. Также рекомендуется для набора текста использовать шрифт Trebuchet. Gitlab + elasticsearch • • • • • • • Projects Groups Merge Requests Issues Code Commits Files Gitlab hooks • • • • Push Tag Merge Request Issue • System hook Gitlab Services Gitlab + Jenkins Gitlab Gitlab Jenkins Hook plugin Gitlab Gitlab Hook plugin Jenkins Gitlab + Jenkins Сюда пишется заголовок слайда, также до 3 строк, не больше! • Это – контентная область слайда. • Желательно создавать новые слайды, дублируя (copy/paste) этот слайд в качестве образца, чтобы сохранить общую стилистику презентации. Также рекомендуется для набора текста использовать шрифт Trebuchet. API Users Session Projects Project Snippets Repositories Repository Files Commits Branches Merge Requests Issues Milestones Notes (comments) Deploy Keys System Hooks Groups API Clients php-gitlab-api - PHP Laravel API Wrapper for GitLab CE - PHP / Laravel Ruby Wrapper - Ruby python-gitlab - Python java-gitlab-api - Java node-gitlab - Node.js NGitLab - .NET Events Все события, должны иметь прямое или косвенное отношение к проекту • • • • • Push Merge Request Issue Note Team Notifications • Подписаться можно на: – – – – Project Merge Request Issue Pushes (через подключение сервиса) Events • Фиксируются все события, которые были описаны в DSL Target action Source Target Target Target action Source Notifications (undev) • Подписаться можно на: – – – – Проект Группу проектов Команду пользователей Пользователя • Подписаться можно на конкретные действия (action) Gitlab under microscope Ruby on Rails Postgresql/Mysql Redis Sidekiq Unicorn/Puma Gitlab Gitlab • Own private server – Gitlab CE • DigitalOcean hosting – Gitlab CE • Gitlab Cloud – – Gitlab CE Gitlab EE Gitlab private installation • • • • • Deb packages Chef/puppet/ansible Docker Gitlab installer How-to https://gitlab.com/gitlab-org/omnibus-gitlab/blob/master/README.md https://gitlab.com/gitlab-org/gitlab-ce/blob/master/doc/install/installation.md https://gitlab.com/gitlab-org/gitlab-ce/blob/master/doc/install/requirements.md Gitlab requirements Operating Systems Ubuntu Debian CentOS RedHat Enterprise Linux Scientific Linux Oracle Linux CPU 1 core 2 cores 4 cores 8 cores 16 cores 32 cores 64 cores Memory 512MB - min 1GB 2GB 4GB 8GB 16GB 32GB 64GB - up to 100 users - up to 500 users - up to 2,000 users - up to 5,000 users - up to 10,000 users - up to 20,000 users - up to 40,000 users Кастомизация Gitlab |-- home | |-- git | |-- .ssh | |-- authorized_keys | |-- gitlab | |-- gitlab-satellites | |-- gitlab-shell | |-- repositories |-- var | |-- git | |-- .ssh | |-- authorized_keys | |-- repositories/ |-- some_path | |-- gitlab | |-- releases | |-- some_release/ | |-- current/ | |-- shared | |-- gitlab-satellites/ | |-- gitlab-shell | |-- releases | |-- some_release/ | |-- current/ Если появились вопросы? • • • • • • • • • • • Maintenance policy Troubleshooting guide Mailing list and Stack Overflow Feature request forum Contributing guide #gitlab IRC channel на Freenode GitLab Book написанная энтузиастом Jonathan M. Hethey Gitter chat room GitLab Youtube Channel GitLab documentation Issue tracker Вопросы? Куманяев Андрей me@zzet.org twitter.com/zzetorg github.com/zzet