Установка и настройка GitLab: reconfiguration

Этот пост является дополнением к предыдущему посту. Ошибка предыдущего поста была в том, что после gitlab-ctl reconfigure слетали конфиги, не работала отправка почты и были проблемы при deploy по ssh. Перед тем как написать пост пробовал два раза обновить gitlab - все ОК.
http://it.icmp.ru/postimages/1181/7620/thumb/gitlab-0487eb2563bef764dd9e0e8920cf725ca01aaebad84955e0e024c28b3976af2b.png

UPDATE: Unicorn Timeout
Создаем директории:
mkdir /opt/backups
chown git:git /opt/backups
cp /var/opt/gitlab/git-data /opt


Для краткости будут указаны только измененные строки.
Правим файл /etc/gitlab/gitlab.rb:
external_url "https://git.example.com"

############################
# gitlab.yml configuration #
############################

gitlab_rails['time_zone'] = "Asia/Yakutsk"
gitlab_rails['gitlab_email_enabled'] = true
gitlab_rails['gitlab_email_from'] = "robot@example.com"
gitlab_rails['gitlab_email_display_name'] = "Example GitLab"
gitlab_rails['gitlab_default_can_create_group'] = false
gitlab_rails['gitlab_username_changing_enabled'] = false
gitlab_rails['gitlab_default_theme'] = 2

## For setting up LDAP
gitlab_rails['ldap_enabled'] = true
gitlab_rails['ldap_servers'] = YAML.load <<-'EOS'
main:
label: 'LDAP'
host: 'ad.example.com'
port: 636
uid: 'sAMAccountName'
method: 'ssl'
bind_dn: 'login'
password: 'password'
admin_group: 'git_admins'
active_directory: true
allow_username_or_email_login: true
base: 'dc=ad,dc=example,dc=com'
user_filter: ''
EOS
gitlab_rails['omniauth_enabled'] = false

## For setting up backups
gitlab_rails['backup_path'] = "/opt/backups"
gitlab_rails['backup_keep_time'] = 604800

## For setting up different data storing directory
git_data_dir "/opt/git-data"

################################
# GitLab email server settings #
################################
gitlab_rails['gitlab_email_from'] = 'robot@example.com'
gitlab_rails['gitlab_email_reply_to'] = 'robot@example.com'
gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.example.com"
gitlab_rails['smtp_port'] = 587
gitlab_rails['smtp_user_name'] = "robot@example.com"
gitlab_rails['smtp_password'] = "password"
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['smtp_tls'] = false
gitlab_rails['smtp_openssl_verify_mode'] = 'none'
gitlab_rails['smtp_domain'] = "example.com"
gitlab_rails['smtp_authentication'] = 'plain'

###############
# GitLab user #
###############
user['username'] = "git"
user['group'] = "git"
user['shell'] = "/bin/sh"
user['home'] = "/var/opt/gitlab"
user['git_user_name'] = "GitLab"
user['git_user_email'] = "gitlab@#{node['fqdn']}"

##################
# GitLab Sidekiq #
##################
sidekiq['log_directory'] = "/var/log/gitlab/sidekiq"
sidekiq['shutdown_timeout'] = 4

################
# GitLab Nginx #
################
nginx['enable'] = true
nginx['client_max_body_size'] = "4000m"
nginx['redirect_http_to_https'] = true
nginx['ssl_certificate'] = "/etc/ssl/gitlab/bundle_git.crt"
nginx['ssl_certificate_key'] = "/etc/ssl/gitlab/git.example.com.key"
nginx['ssl_ciphers'] = "ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA:DES-CBC3-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4"
nginx['ssl_prefer_server_ciphers'] = "on"
nginx['ssl_protocols'] = "TLSv1 TLSv1.1 TLSv1.2" # recommended by https://raymii.org/s/tutorials/Strong_SSL_Security_On_nginx.html & https://cipherli.st/
nginx['ssl_session_cache'] = "builtin:1000 shared:SSL:10m" # recommended in http://nginx.org/en/docs/http/ngx_http_ssl_module.html
nginx['ssl_session_timeout'] = "5m" # default according to http://nginx.org/en/docs/http/ngx_http_ssl_module.html
nginx['listen_addresses'] = ['*']


Убдитесь, что /var/opt/gitlab/gitlab-rails/etc/smtp_settings.rb выглядит следующим образом:
if Rails.env.production?
Gitlab::Application.config.action_mailer.delivery_method = :smtp

ActionMailer::Base.smtp_settings = {
authentication: :plain,
address: "smtp.example.com",
port: 587,
user_name: "robot@example.com",
password: "password",
domain: "example.com",
enable_starttls_auto: true,
tls: false,
openssl_verify_mode: "none",

ca_file: "/opt/gitlab/embedded/ssl/certs/cacert.pem",
}
end


Проблема deploy по ssh возникает из-за того, что у пользователя git нет доступа к authorized_keys:
chown git:git /var/opt/gitlab/.ssh -R
gitlab-ctl reconfigure


Теперь можно делать deploy как по ssh так и по https.
В качестве windows клиента можно использовать TortoiseGit.

P.S. Иногда после gitlab-ctl reconfigure не поднимается gitlab из-за того, что sidekiq теряет socket (видимо отсутствует проверка на существование socket). В этом случае надо просто повторно выполнить команду. В nginx параметр client_max_body_size увеличен до 4гб специально поскольку при миграции с svn не влезала одна гигантская revision.

P.S. Сегодня произошел случай когда одному программисту выдалась ошибка:
error: RPC failed; result=18, HTTP code = 200 MiB | 10.95 MiB/s
fatal: The remote end hung up unexpectedly
fatal: early EOF
fatal: index-pack failed

Проблема в том, что unicorn выдает timeout после 30 секунд при дефолтной конфигурации:
##################
# GitLab Unicorn #
##################
unicorn['worker_timeout'] = 600
unicorn['worker_processes'] = 2 //Количество воркеров можете выставлять по "количеству ядер-1"
  • просмотров: ~3325
  • рейтинг: ?

Комментарии (8)

Вы - anonymous, войти ?

можно использовать bbcode-теги
[b]жирный текст[/b]
[i]курсив[/i]
[u]underline[/u]
[s]зачеркнутый текст[/s]
[size=20px]размер шрифта[/size]
всякие изменения текста
[left][/left]
[right][/right]
[center][/center]
позиционирование элементов: картинки, текст и т.д
[url][/url]
[email][/email]
внутри тега [url] помещайте ссылки, а внутри [email] адрес электронной почты;
так же [url] можно использовать в виде:
[url=http://example.com]пример[/url],
[url=http://test.ru][img]http://flickr.com/givemeimg.png[/img][/url]
[code][/code]
[quote][/quote]
внутри тега [code] можно помещать программный код (подстветка попытается включиться автоматически); для выделения цитат используйте [quote]
также можно напрямую указать язык [code=cpp]int i;[/code]
[list][/list]
создаем списки, каждый элемент пишется после [*].

Можно указывать маркер - [list=marker].
возможные маркеры 1(decimal), i(lower-roman), I(upper-roman), a(lower-alpha), A(upper-alpha). Примеры:

[list][*]1 элемент[*]2 элемент[*]3 элемент[/list]
[list=1][*]1 элемент[*]2 элемент[*]3 элемент[/list]
[list=A][*]1 элемент[*]2 элемент[*]3 элемент[/list]
[table][/table]
оформляем таблицу, используя внутренние теги [tr] и [td].
[tr] - строка, [td] - поле в строке,
[table=100%] - можно задавать ширину в процентах, по-умолчанию ширина 100%
[td=2] - можно задавать сколько столбцов входит в это поле. Пример:

[table=50%][tr][td]столбец 1[/td][td]столбец 2[/td][/tr][tr][td]значение 1[/td][td]значение 2[/td][/tr][tr][td=2]сразу 2 столбца[/td][/tr][/table]
[img][/img]
тег для вставки фото или картинок, мы любим картинки. Примеры использования:

[img]http://ya.ru/logo.png[/img],
[img=100x100px]http://ya.ru/logo.png[/img]
[img=fullimg.url]thumbimg.url[/img],
Пожалуйста загружайте картинки на наш сайт, либо вставляйте с бекбоновских ресурсов.
[video][/video]
Проигрывает видео, внутрь вставляем ссылки на видео, поддерживается Play.Ykt.Ru(нужно вставить ссылку на страницу с видео) и tv.ykt.ru(нужно вставить ссылку на адрес файла)