====== GitLab ======
===== Общее =====
:!: Установка
Советуют установку доп компонентов
yum install curl policycoreutils-python postfix
apt install curl openssh-server ca-certificates
# Установка репозитория через скрипт
# Отличаются **gitlab-ce** и **gitlab-еe**- бесплатная и коммерческая с-но
curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | sudo bash
# Далее ставим из пакета
apt install gitlab-ce
# Такой вариант тоже должен работать, чтобы не пересобирать после задания адреса
# EXTERNAL_URL="http://gitlab.mysite.ru" yum install gitlab-ee
Для указания адреса по которому будет доступен сервис
external_url 'http://gitlab.mysite.ru' => /etc/gitlab/gitlab.rb
Утилита управления **gitlab-ctl**, (status/start/restart/stop/kill/service-list...)\\
GitLab ставится с целым набором нужного себе софта, в т.ч. **postgres**, **prometheus**, **nginx** и т.д.\\
:!: Использовать другую инсталляцию веб сервера
[[https://docs.gitlab.com/omnibus/settings/nginx.html|Процедура описана здесь]]\\
Рассматриваем использование **Apache**\\
В файле **/etc/gitlab/gitlab.rb**
nginx['enable'] = false
web_server['external_users'] = ['www-data']
gitlab_workhorse['listen_network'] = "tcp"
gitlab_workhorse['listenUmask'] = "0"
gitlab_workhorse['listen_addr'] = "127.0.0.1:8181"
gitlab_workhorse['authBackend'] = "http://127.0.0.1:8080"
Включаем модули apache **a2enmod proxy, rewrite, proxy_http**\\
Создаем и включаем виртуальный хост
# This configuration has been tested on GitLab 8.2
# Note this config assumes unicorn is listening on default port 8080 and
# gitlab-workhorse is listening on port 8181. To allow gitlab-workhorse to
# listen on port 8181, edit /etc/gitlab/gitlab.rb and change the following:
#
# gitlab_workhorse['listen_network'] = "tcp"
# gitlab_workhorse['listen_addr'] = "127.0.0.1:8181"
#
#Module dependencies
# mod_rewrite
# mod_proxy
# mod_proxy_http
ServerName
ServerSignature Off
ProxyPreserveHost On
# Ensure that encoded slashes are not decoded but left in their encoded state.
# http://doc.gitlab.com/ce/api/projects.html#get-single-project
AllowEncodedSlashes NoDecode
# New authorization commands for apache 2.4 and up
# http://httpd.apache.org/docs/2.4/upgrading.html#access
Require all granted
#Allow forwarding to gitlab-workhorse
ProxyPassReverse http://127.0.0.1:8181
ProxyPassReverse http:///
# Apache equivalent of nginx try files
# http://serverfault.com/questions/290784/what-is-apaches-equivalent-of-nginxs-try-files
# http://stackoverflow.com/questions/10954516/apache2-proxypass-for-rails-app-gitlab
RewriteEngine on
#Forward all requests to gitlab-workhorse except existing files like error documents
RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-f [OR]
RewriteCond %{REQUEST_URI} ^/uploads/.*
RewriteRule .* http://127.0.0.1:8181%{REQUEST_URI} [P,QSA,NE]
# needed for downloading attachments
DocumentRoot /opt/gitlab/embedded/service/gitlab-rails/public
#Set up apache error documents, if back end goes down (i.e. 503 error) then a maintenance/deploy page is thrown up.
ErrorDocument 404 /404.html
ErrorDocument 422 /422.html
ErrorDocument 500 /500.html
ErrorDocument 502 /502.html
ErrorDocument 503 /503.html
# Debian and CentOS distribution defaults provided below
LogFormat "%{X-Forwarded-For}i %l %u %t \"%r\" %>s %b" common_forwarded
#For CentOS distributions use
#ErrorLog /var/log/httpd/logs/_error.log
#CustomLog /var/log/httpd/logs/_forwarded.log common_forwarded
#CustomLog /var/log/httpd/logs/_access.log combined env=!dontlog
#CustomLog /var/log/httpd/logs/.log combined
#For Debian distributions use
ErrorLog /var/log/apache2/_error.log
CustomLog /var/log/apache2/_forwarded.log common_forwarded
CustomLog /var/log/apache2/_access.log combined env=!dontlog
CustomLog /var/log/apache2/.log combined
**Удаление**\\
т.к. вместе с ним ставится много всякого, простое удаление не особо почистило, помогло (вроде) несколько команд:\\
rpm -e gitlab-ce / apt purge gitlab-ce
find / -name gitlab | xargs rm -rf
# Просмотр
ps aux | grep gitlab
:!: Интеграция с jenkins
В дженкинсе создан спец пользователь
В проект добавлен пользователь дженкинса, мейнтейнером
вкладка "Webhooks", выбрана галочка Trigger -> push events и Enable ssl
в интеграциях, включен дженкинс, указан url дженкинса, пользователь, название проекта
В проекте генерируем токен доступа, добавляем ему API, галочка в разрешениях, задаем имя
после этого, в участниках проекта добавляется пользователь, с этим именем
В дженкинсе, создаем запись кредлов, с таким же названием
выбираем тип "GitLab API token", название задаем точно такое же
В джобе выбран "GitLab Connections", созданный пользователь дженкинса
и выбрана "Use alternative credentials", тут указан токен из проекта
в пайплайне выполняются джобы
эти джобы транслиются на дженкинс джобы
в качестве раннеров должна выступать джобы дженкинса