Gitlab 8 с прокси-сервером nginx не может загрузить zip, клонировать общедоступный репозиторий в качестве гостя, также не может создавать CI

Я думаю, что все 3 проблемы связаны с одной и той же проблемой, поэтому я собираюсь поместить их все здесь.

Сам Gitlab работает, я даже успел обновить его с 8.2.2 до 8.2.3. Я могу создавать проекты, отправлять свой код, извлекать его, повторно клонировать, когда у меня есть правильный ключ ssh и т. д.

НО:

  1. Я не могу загрузить код в виде zip-файла, вместо этого получил JSON:

{RepoPath:/var/opt/gitlab/git-data/repositories/me/myrepo.git, ArchivePrefix: ...

  1. Люди не могут клонировать мой общедоступный репо (ошибка пустого репозитория).

  2. CI не может построить мои тесты:

предупреждение: вы клонировали пустой репозиторий. Проверка 12345 в качестве разработки... фатальная: ссылка не является деревом: 123456789mycommithash987654321

ОШИБКА: сборка завершилась неудачно: статус выхода 1

Примечание: я перевел сообщения об ошибках с французского.

Я предполагаю, что проблема в моей конфигурации Nginx, но есть так много документации, что я не уверен, какая из них хорошая: те, что с рабочей лошадкой, те, когда мне нужно изменить gitlab_git_http_server gitlab.rb и т. д.

Моя конфигурация следующая:

  • Гитлаб 8.2.3
  • Надежный Ubuntu (14.04)
  • Нгинкс 1.8

Мой gitlab размещен на поддомене с использованием SLL, поэтому я добавил прокси-сервер Nginx.

/etc/gitlab/gitlab.rb:

external_url 'https://gitlab.mydomain.com'
nginx['listen_addresses'] = ['127.0.0.1', "[::1]"]
nginx['listen_port'] = 8080 
nginx['listen_https'] = false 

/etc/nginx/site_enabled/gitlab:

server {
  listen *:80 default_server;
  listen [::]:80 ipv6only=on default_server;
  server_name gitlab.mydomain.com;
  return 301 https://$server_name$request_uri;

  access_log  /var/log/nginx/gitlab_access.log;
  error_log   /var/log/nginx/gitlab_error.log;
}

server{
  # listen 443 ssl;
  listen 0.0.0.0:443 ssl default_server;
  listen [::]:443 ipv6only=on ssl default_server; 
  server_name gitlab.mydomain.com;
  server_tokens off;

  location /{
    proxy_pass http://localhost:8080;
    proxy_redirect off;
    proxy_set_header    Host                $http_host;
    proxy_set_header    X-Real-IP           $remote_addr;
    proxy_set_header    X-Forwarded-For     $proxy_add_x_forwarded_for;
    proxy_set_header    X-Forwarded-Proto   $scheme;
  }

  location ~ ^/(assets)/ {
    root /opt/gitlab/embedded/service/gitlab-rails/public;
    gzip_static on; # to serve pre-gzipped version
    expires max;
    add_header Cache-Control public;
  }

  client_max_body_size 250m;

  # ...
  # A lot a of SSL stuff (HSTS, OCSP, dhparam, etc)
  # ...

  access_log  /var/log/nginx/gitlab_access.log;
  error_log   /var/log/nginx/gitlab_error.log;
  
  error_page 502 /502.html;

ОБНОВЛЕНИЕ:

Только что обновил Gilab до 8.3.0.

Получите 502 сейчас.

Подача заявки: https://gitlab.com/gitlab-org/gitlab-ce/blob/master/doc/update/8.2-to-8.3.md.

Посмотрим.

ОБНОВЛЕНИЕ 2:

В конце концов, не закончил инструкции, остановил все и дважды перезапустил все (Gitlab и Nginx). Наконец-то удалось заставить это работать.

Все те же проблемы с CI/Zip/PublicCloning.

ОБНОВЛЕНИЕ 3:

Просто обновите до 8.2.3 apt-get update apt-get install gitlab-ce

502.

перезапустить nginx gitlab-ctl перезапустить

gitlab-rake gitlab: приложение: проверить

Checking GitLab ...

Git configured with autocrlf=input? ... yes
Database config exists? ... yes
Database is SQLite ... no
All migrations up? ... yes
Database contains orphaned GroupMembers? ... no
GitLab config exists? ... yes
GitLab config outdated? ... no
Log directory writable? ... yes
Tmp directory writable? ... yes
Uploads directory setup correctly? ... yes
Init script exists? ... skipped (omnibus-gitlab has no init script)
Init script up-to-date? ... skipped (omnibus-gitlab has no init script)
projects have namespace: ... 

Redis version >= 2.8.0? ... yes
Ruby version >= 2.1.0 ? ... yes (2.1.7)
Your git bin path is "/opt/gitlab/embedded/bin/git"
Git version >= 1.7.10 ? ... yes (2.6.1)
Active users: 2

Checking GitLab ... Finished

Если кто-то может привести меня к надлежащей документации или изменениям, которые необходимо внести, это было бы здорово.


person gdurelle    schedule 17.12.2015    source источник
comment
Пока ничего не работает, просто надоело. Удалил все, вернулся к базовому конфигу...   -  person gdurelle    schedule 07.01.2016
comment
Вы пытаетесь использовать пакетный nginx, который поставляется с gitlab omnibus, или тот, который вы установили и настроили самостоятельно?   -  person Martin    schedule 08.01.2016
comment
оба. связанный nginx с gitlab и мой собственный nginx, который я установил с пассажиром в качестве обратного прокси. Прямо сейчас я смог сделать CI клон репо. Все еще проблема с zip, но как только другие проблемы с пользователем git не могут быть связаны, я предоставлю более широкий ответ.   -  person gdurelle    schedule 08.01.2016
comment
Привет, @gdurelle, тебе удалось заставить http-проксирование работать должным образом? У меня точно такая же проблема (http-клон, http-загрузки, клоны CI, выборка CI). Вот моя личная конфигурация: stackoverflow.com/questions/31762841/   -  person Rémi Becheras    schedule 21.04.2016


Ответы (4)


Похоже, загрузкой ZIP-файлов теперь занимается рабочая лошадка gitlab.

Для этого в nginx-configfile есть кое-что еще. Возможно, вы захотите взглянуть на https://gitlab.com/gitlab-org/gitlab-ce/blob/master/lib/support/nginx/gitlab где есть раздел

upstream gitlab-workhorse {
  server unix:/home/git/gitlab/tmp/sockets/gitlab-workhorse.socket fail_timeout=0;
}

и

proxy_pass http://gitlab-workhorse;

в конце конфигурации.

В настоящее время я копаюсь в той же проблеме и сообщу, когда решу ее.

person heiglandreas    schedule 05.01.2016

взгляните на https://gist.github.com/sameersbn/becd1c976c3dc4866ef8 кажется, что там это опция «gzip», которую можно отключить.

gzip                    off;

в строке 53.

person Joris Ros    schedule 27.12.2015
comment
Это ничего не меняет. Но спасибо за попытку. - person gdurelle; 28.12.2015

В документации по обновлению отсутствует пункт: он переименовывает gitlab-git-http-server в gitlab-workhorse в конфигурации nginx, но частично отсутствует /etc/default/gitlab. Также замените все вхождения gitlab-git-http-server на gitlab-workhorse, особенно сокет в gitlab_workhorse_options.

Что-то вроде

sed -i -e 's/gitlab-git-http-server/gitlab-workhorse/g' /etc/default/gitlab
person Edheldil    schedule 08.01.2016

Начало, но не все:

Я по ошибке заставил nginx Gitlab прослушивать порт 8080. Когда это уже порт, используемый Unicorn Gitlab.

Изменение его на 8081 улучшило реакцию CI. Все еще нужно решить права пользователя git (или, лучше, использовать докер), но это не прямой вопрос о том, что здесь важно...

ОБНОВЛЕНИЕ: Комплексное решение — ACL

Кажется, у пользователей git и gitlab-runner, созданных в процессе установки, достаточно прав.

Во-первых: создайте настоящий дом для каждого: /home/gitlab-runner, /home/git с правильными ssh author_keys и rbenv + ruby устанавливает.

Затем: vim /etc/passwd и измените домашнюю директорию на новую домашнюю, где у них есть полные права. Теперь мои сборки зеленые!

person gdurelle    schedule 11.01.2016