Gitlab 8 с прокси nginx не может скачать zip, клонировать публичный репозиторий как гость, также не может встроить CI
Я думаю, что все 3 проблемы связаны с одной и той же проблемой, поэтому я собираюсь поставить их все здесь.
Сам Gitlab работает, мне даже удалось обновить его с 8.2.2 до 8.2.3. Я могу создавать проекты, выдвигать свой код, извлекать его, откладывать его, когда у меня есть соответствующий ключ ssh, и т. Д.
НО:
- Я не могу скачать код в виде zip-файла, вместо этого получил JSON:
{"RepoPath": "/ var / opt / gitlab / git-data / repositories / me / myrepo.git", "ArchivePrefix": "...
Люди не могут клонировать мое публичное репо (ошибка пустого репозитория).
Я не могу построить свои тесты:
предупреждение: вы клонировали пустой репозиторий. Проверка 12345 как развернутого... фатальная: ссылка не является деревом: 123456789mycommithash987654321
ОШИБКА: Сбой сборки с: выход из состояния 1
NB: я перевел сообщения об ошибках с французских.
Я полагаю, что проблема в моей конфигурации Nginx, но документации так много, что я не уверен, какая из них хорошая: те, у которых рабочая лошадка, те, когда мне нужно изменить gitlab_rb в gitlab_git_http_server и т. Д.
Моя конфигурация следующая:
- Гитлаб 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
/ 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;
ОБНОВИТЬ:
Просто обновил Гилаб до 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.3apt-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
Если кто-то может привести меня к надлежащей документации или внесению изменений, это было бы здорово.
++ Грег
4 ответа
Начало, но не все:
Я по ошибке заставил nginx Gitlab слушать порт 8080. Когда это уже порт, используемый Gitlab's Unicorn.
Изменение его на 8081 сделало CI лучше реагирующим. Все еще нужно решить права пользователя git (или, лучше, использовать docker), но это не прямой вопрос о том, что здесь важно...
ОБНОВЛЕНИЕ: полное решение - ACL
Кажется, что пользователи git и gitlab-runner, созданные в процессе установки, имеют достаточно прав.
Первое: создайте настоящий дом для каждого: / home / gitlab-runner, / home / git с соответствующими ssh авторизованными ключами и установками rbenv + ruby.
Тогда: vim /etc/passwd
и поменяйте там домашний каталог на новый дом, где у них есть полные права. Теперь мои сборки зеленые!
Похоже, что загрузка 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;
в конце конфигурации.
Я в настоящее время копаюсь в той же самой проблеме и сообщу, когда я решил ее.
В документации обновления отсутствует элемент: он переименовывает 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
Взгляните на https://gist.github.com/sameersbn/becd1c976c3dc4866ef8 кажется, есть опция 'gzip', которую можно отключить.
gzip off;
в строке 53.