Подтвердить что ты не робот

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

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

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

НО:

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

{ "RepoPath": "/Var/Opt/gitlab/ git -data/Хранилища/мне/myrepo.git", "ArchivePrefix": "...

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

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

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

ОШИБКА: сбой сборки: статус выхода 1

NB: Я перевел сообщения об ошибках из французских.

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

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

  • Gitlab 8.2.3
  • Ubuntu Trusty (14.04)
  • Nginx 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 

/и т.д. /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.

Git a 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 restart

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

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

++ Грег

4b9b3361

Ответ 1

Искривление, но не все:

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

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

UPDATE: полное решение - ACL

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

Первый. Создайте настоящий дом для каждого:/home/gitlab-runner,/home/ git с соответствующими ssh authorized_keys и rbenv + ruby.

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

Ответ 2

Похоже, что загрузка 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;
}

и a

proxy_pass http://gitlab-workhorse;

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

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

Ответ 4

В документации по обновлению отсутствует элемент: он переименовывает 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